阿里内核电话面试

前段时间投了份阿里内核方向的实习,过了几天收到了阿里的电话,然后就约了电话面试。

首先说下面试官还是不错的。

面试中问了有关connect 都干了什么,当时有些紧张,完全忘了,我就说我先想想,最后想到这是tcp的三部握手,然后巴拉巴拉就说了,其中把sock的具体的状态也说了。我这个人有个毛病,说话太快,大多时候会导致表达不清。我也不知道面试官挺清楚了没有。

在connect 中我提到第一个参数是fd ,然后面试官问我,read(),read()这是文件系统这块的内容。已经很长时间都没有看过,所以忘的比较多,但是我脑子发热居然开始说函数open()的内容,怎么从root节点一步一步的往下找,汗。紧接着面试管又问我open()的内容,可怜我这时候还处于头脑发热中,还没有反应过来刚才那个问题说错了。我说open()这个函数给我印象比较深刻的地方是它要填写进程的打开文件表和系统的打开文件表。紧接着面试官问我,为什么要有两个表,我说是如果两个进程打开同一个文件,要进行同步什么,如果a进程要删除文件,肯定不能让a真的把文件给删了等等。其实,open()才是要回答如何从根节点一步一步的找到文件的inode,然后用一个file 结构来对应,汗。

然后面试官问我,如果两个进程打开同一个文件,如果之前没有别的文件打开,那么fd的大小会一个是3一个是4吗(因为0,1,2是标准输入输出错误输出。)我说不会应该都是3

然后又问了下内核中的同步,自旋锁和信号量,我平常看代码很少注意这一块,只是说了下简单的一些看法。

然后又问关于数据结构中的链表查找效率o(n),问二叉树在最优的情况下是多少log2N,最坏情况是多少,我竟打不出来,其实是当时认为是平衡的二叉树,现在想想o(n)啊,当时太傻。。。

然后又问哈希和红黑树的区别什么时候用红黑书,什么时候用哈希,平常这东西都不怎么用。根本不知道这两个结构的优势和适用环境。

然后面试官差不多就问完了,问我有没有什么问题要问他。

整体上感觉面试很失败,问的问题如果给面试官说说给几十秒思考下,差不多80%都是能答的上来的。可能紧张加上太着急了把,感觉回答的效果十分不理想。当然也有很大程度上的原因是我对这块熟悉的程度还不够。还得加油。

原文地址:https://www.cnblogs.com/cdwodm/p/4633460.html