收集一些面经中看到的问题,用于学习,主要采用AI回答。

C++

RVO是什么?

菱形继承是什么?怎么解决?

仿函数

Rocksdb

write batch怎么做到原子性?

跨cf的原子性是怎么实现的

lsm tree落盘顺序

分布式

raft

操作系统

page table子进程和父进程是共享的吗,线程之间共享吗

参考6.s081的实验。

子进程和父进程在创建时会复制页表,但页表项指向相同的物理内存页面,因此初始状态下它们的页表内容相同,但页表本身是独立的。这些共享的物理页面会被标记为“只读”,当任一进程尝试修改时,触发写时复制(COW)机制,此时才会为修改的进程创建新的物理页面副本。因此,父子进程的页表并非直接共享,而是通过复制和COW机制实现内存的高效利用。

线程之间则共享同一进程的页表,因为线程属于同一地址空间,所有线程使用相同的页表结构。这是进程与线程在内存管理上的关键区别之一。

pread/pwrite详细流程

打开一个文件,文件系统的详细流程