笔试竟然过了,也挺离谱的。
早上十点半开始面试,面试官没有进入房间,倒是HR过来出了一道题让30分钟内做出来,面试官根据结果进行面试。
算法:合并区间(写了两种方法,面试官来了后问了下实现过程和复杂度比较)
然后开始面试:
1. 左值和右值,右值引用
2. 移动语义
3. 拷贝构造函数
4. 虚函数怎么实现
5. 重载与重写
6. shared_ptr怎么实现,计数那个字段存在哪里(面试官解释了下,好像是要全局)
7. unique_ptr怎么实现,怎么保证只拥有一个
8. 内存分区(堆、栈、全局静态区、代码区,堆栈之间为共享库),static变量存在哪里
9. 全局静态区的变量在什么时候加载
10. lambda表达式,[]是做什么的,值捕获和引用捕获有什么区别
11. vector的扩容(好像gcc两倍扩容,msvc是增加现有1/2的长度)
12. emplace_back()有用过吗,什么意思
13. 传指针和传引用各有什么优缺点
14. template使用过吗,什么时候使用,知道template的展开吗
15. 动态链接和静态链接
16. 编译原理了解吗(不了解)
17. 物理内存和虚拟内存,我讲到了缺页异常,他又问有什么页置换算法(FIFO、LRU)
18. LRU的具体实现,用什么数据结构实现(回答了数组,然后觉得不妥改为链表),又问链表查询页的编号需要O(n)的复杂度,现在我想要用O(1),你怎么实现(哈希表)
19. 进程和线程的区别,同步,用过什么锁,提了一嘴项目后聊了会天
20. 协程了解吗,具体讲讲
21. TCP和UDP的区别,详细问了TCP的拥塞控制,流量控制
22. 算法题:计算岛屿数量,写了一点面试官看我写得有点慢,就让我说了思路和变量的用途以及递归的想法。此时已经快两个小时了,面试官说了最后一道题,没有让写代码,说思路。
23. 洗牌,1~52,没有花色,洗牌后使得在每个位置取得每个数字的概率均等)
反问
到写第二道算法题时真的又饿又困,太难受了,因为喝了杯咖啡导致有点尿急,一直憋着,差点出事。。。
全部评论
(9) 回帖