面试复习系列总览
这组东西先不按教材顺序来,也不想写成那种“看起来很全,其实不好讲”的面试模板。更实际一点的做法还是先抓主线,把自己最容易讲散的几块重新串起来。
我现在复习时最明显的问题不是没见过这些知识点,而是每个点都知道一点,真要开口的时候又接不上。比如 C++ 能说对象模型,也能说智能指针,但一问到资源管理和并发,又容易答成两摊。OS 和 CUDA 也差不多,都是一堆名词在脑子里飘,连不成一个顺的解释。
所以这组文章先只做三条:
C++:对象怎么活,资源怎么管,多线程代码为什么会出事。OS:程序怎么变成进程,地址空间和文件描述符分别管什么。CUDA / HPC:线程怎么铺开,数据怎么走,性能到底卡在哪。
这几篇都不会写得特别全,更像是复习时给自己留的“开口版本”。先把最短那条回答链立住,后面再补细节。不然一上来就把所有定义、分类、例外情况全塞进去,最后反而什么都记不住。
现在的顺序大概是先补 OS,再补 C++,最后补 CUDA / HPC。OS 放前面主要是因为很多问题最后都会落到运行时和系统行为上,先把这条线顺下来,后面看 C++ 和并行那部分会更自然一点。
后面如果继续写,大概率也是沿着这个思路拆小一点,比如单独写 fork/exec、mmap、shared_ptr 的代价、还有 occupancy 到底该怎么理解。这些东西平时都见过,但真到面试里其实很容易讲空。