一面技术面40min
1.this指针是做什么的,哪些函数会没有this指针。
2.动态绑定,多态讲一下。虚函数表是共享的嘛?(共享的,我思考了好一会,我答成不共享了)
3.volatile的作用,说到不让编译器对该变量做优化,然后问编译原理的优化方法有哪些?(我说没学过编译原理,就换个问了)
4.poll和epoll的区别。(poll用的链表,epoll是红黑树加就绪链表)
5.网络设备的注册流程(没学过)
6.inline关键字的作用,inline不生成为函数调用指令,那inline函数里的局部变量,返回值怎么处理的?
7.进程的内存模型,堆和栈的区别。
8.映射区的作用,答malloc分配大内存时从映射区取一块内存,又问为什么malloc分配大内存要从映射区取?
9.映射区还有什么别的作用?文件映射?
10.页缓存了解吗?(不了解,应该是文件I/O相关的吧)
11.Linux内核同步机制。(原子操作,自旋锁,信号量,互斥体)
12.线程在解锁互斥体后操作系统会做什么?(唤醒等待队列里面申请该资源的线程),问具体是怎么进行唤醒的,流程机制是怎么样的?(不会了,他说可以去看一下线程管理的知识)
13.哈希冲突的时候怎么解决。(线性地址探测,平方地址探测,链地址)。问线性地址探测和链地址探测的区别。(线性地址存在数组,局部性更好,对缓存友好,但是冲突概率比链地址高)
14.缓存了解吗?缓存的一致性了解过吗? 答了MESI协议,说是其中的一个协议。其他我就答不知道了。
15.虚拟地址怎么映射到物理地址。答通过页表,硬件是MMU,问MMU是在哪里的?(MMU在哪里我忘了,CPU里还是外)

反问。

面试官超时温柔,面试体验挺好的,面试官会一层一层深入,我也知道了哪些地方比较薄弱。