一面7.26
- 追着minisql的项目问了一堆,主要是问了buffer,page设计,为啥不用hash index要用B+ Tree index
- 操作系统虚拟化有什么好处
- 不知道物理机器的cache size的情况下,怎么设计程序估计cache size(我说了用矩阵,两层for,看速度的变化)。
- 存在NVM的情况下,怎么设计buffer,还好之前看过一篇NVM相关的论文,不然挂了,我说了冷数据热数据迁移问题,吧啦吧啦。
- 有了NVM后还需要redo,undo吗,我说不需要redo,但实际上两个都不需要了,论文中有提到。《How to Build a Non-Volatile Memory Database Management System》
- 算法题:leetcode 岛屿数量(ac)
二面7.27
- 创建进程的过程(我说了fork exec,然后让我介绍fork和exec的过程…)
- va转pa(这题我会,MMU,TLB,page table)
- 页表的起始地址在哪里(寄存器)
- socket连接用什么标识,我说ip地址,端口号,sockid,他说是一个五元组…
- 伙伴系统,内存池(这两个都不会)
- 虚拟地址的作用(我说复用、隔离)
- 算法题:leetcode 路径长度2(差一点ac)
三面7.30
- 原来的专业做啥,为啥不做了,还有一些相关的
- x86 cache架构
- C++新特性知道些啥
- C语言volatile关键字
- 介绍自旋锁
- 设计题:自旋锁,给了结构体,最简单的设计,面试官描述了一个算法ticket spinlock,让我设计,然后还问了,为什么要这样设计(面试官说是为了公平,防止饥饿)
全部评论
(8) 回帖