raft 选举流程
candidate如果没有收到来自大多数结点的投票会怎样
发动选举的timeout具体是怎么设置的
client能向follower发送读写请求吗
如果请求都是向Leader发的,那Leader并发压力会不会很大?怎么解决(Shard + Raft优化技术)
读请求是怎么处理的
持久化是怎么做的,储存的形式
快照是怎么做的
x86函数是怎样调用的,参数放哪,返回地址放哪?x64呢?arm呢?(x86从第n个参数到第一个参数依次push,然后执行call指令,等价于push当前eip作为返回地址,然后再jmp到目标函数地址。x64前六个参数会放在寄存器(rdi、rsi...)剩下的压栈。arm不会)
call能用push eip和jmp两个指令代替吗?有没有试过(答了应该可以,没试过。面完马上想起来好像不能直接push eip,面试官可能想问的应该是这个orz)
jmp指令有两种,长距离和短距离,区别是?(不会)
copy-on-write是怎么实现的(浅拷贝页表,码掉写权限,设置page fault handler)
fork在父进程的函数返回值是什么,在子进程又是什么。fork返回值怎么实现的(trapframe设置eax)
父进程有两个线程,fork完之后子进程几个线程?(答了JOS的)如果是linux呢(不会,让我猜,我猜一个,好像对了)
Linux 守护进程是怎么实现的?怎么编程让一个进程在后台运行,比如docker的-d参数(只答了调shell命令用 & )不用shell直接做可以吗?(不会)
Linux 的 /proc 目录是怎么实现的(kernel 内存中的 Process Table)
os的页机制是为了解决什么(vm、fs,方便连续读写)
.so等动态链接库在载入的时候,其地址的特点是什么(页对齐,16进制后三位为0)
GDB断点是怎么实现的(往内存写一个发送软中断的单字节指令,比如Int 0x3 => 0xcc)
断点能断.code上的任意一个地址吗(不行,如果打在了一个指令内部会导致parse指令异常)
单步调试是怎么做的(CPU有个eflags专门干这个的)
GDB为什么能attach其他进程?(答了因为对子进程有管理权限)追问GDB attach并不一定要子进程吧,那到底是怎么实现的(不会)
你实现的这个OS有图形界面吗?没有图形界面能运行shell吗?
qemu两种模式,kvm是什么(不会)
短链接和长链接的区别。现在哪个用的多
QUIC了解吗?已经有了tcp,为什么还要造QUIC这个可靠传输的轮子(没答出来)
在一个http链接中,如果发送请求没收到响应,还能再发送吗
TCP挥手time wait的目的
最长连续递增子数组
面试流程(3轮技术+1轮HR)
对实习生技术栈等方面的期望(不着急,可以先学go)