全程面试一个小时,先聊实习,再聊数据结构和操作系统八股文,中间给了一道设计数据库缓存的情景题,最后出了一道实现双向链表插入、查找、删除的算法题。整体感觉面试难度适中,面试官很有耐心也很温柔,面试体验不错。
(1) 研究生期间做深度学习,为什么就业想要走开发岗?
(2) 现在的实习才四个多月,为什么想要换一份实习?
(3) 项目各种技术细节如何实现的(不展开说了)
(4) 对你来说最有成就感的一个 task 是什么
(5) 有没有修复过体系结构不同(x86 和 ARM)导致的 bug 经历
注:基本把项目的各个技术环节从上到下问了个遍,在此基础上引申出各种八股文。
(1) cgroup 底层实现原理
(2) kill 与 kill -9 的区别
(3) 介绍一下互斥锁和自旋锁
(4) 实习中有没有使用锁的经历?
(5) 了解内存屏障的概念吗?
(1) kill 函数的实现原理
(2) malloc 函数的实现原理
(3) malloc 分配的是虚拟内存还是物理内存
(4) malloc 什么时候开始分配物理内存
(5) 说说你对智能指针的理解
(6) 智能指针是线程安全的吗?
(7) 实习经历中使用过智能指针吗?
(1) 哈希表和 B+ 树的区别
(2) B+ 树和红黑树的区别
(1) 如何高效并行地读取一棵 B+ 树
(2) 设计一个高效的数据库缓存机制
注:第一题因为我对 B+ 树不熟悉,所以出了第二道题,面试官说答的还不错。
(1) 实现双向链表的插入、删除、查找函数
注:双向链表不怎么熟,插入和查找都实现了,删除部分脑子短路,有个 bug 一直没想明白。
毕竟是数据库内核开发,所以对于底层问的还是比较多的,数据结构要求也比较高。我目前实习在做一些基于 Linux 的底层工具和应用开发,所以对于底层/内核这方面还是很感兴趣的。通过和面试官交流发现,这种内核开发的岗位之间差别不大,很多东西是相通的,未来这也属于是我的一个就业方向。
#数据人的面试交流地##实习面试##面试##数据库#