本科24届,在三、四月份大厂开暑期实习投了一轮,面试都没捞到几个,就算笔试ak也进不了面试,太难受了。于是5月份复习了一个月,5月最后一周各大软件海投一轮,除了C++的offer没有,golang、Android、iOS、嵌入式这些都拿了。感觉中小企业更多的都是在拉家常问项目和个人的开发经验以及解决代码异常的能力,很少问八股文。
一面(40min):
1.问代码量
2.解释红黑树
3.解释堆、栈,从数据结构和内存管理方面
4.解释堆、栈再内存管理中实现的过程
5.解释static修饰,使用场景、修饰变量、函数、类成员变量、类成员函数
6.解释c++匿名函数,lamda异同
7.计算机网络TCP分包和解包的过程。三次握手、四次挥手的过程。http/https的区别。
8.闲聊
二面(35min):
1自我介绍,C++用了多久?
2.使用指针要注意什么?
3.熟悉哪些设计模式,详细讲讲?(单例,工厂)
4.同步和异步的区别在哪?看你项目中日志系统异步和同步都实现了,具体怎么做的?说说代码层面的实现
5.c++代码到程序的执行过程。
6.c++11以上版本有了解吗?选几个你最熟悉的特性进行解释(shared_ptr、std::function、auto)
7.你觉得在auto和c++98中模板之间的关系是什么?(没明白问的是什么,答了auto的特性,和实现原理)
8.实现过shared_ptr吗?没有啊,说一些你了解的shared_prt特性
9.对STL挺熟悉的吗?那解释vector、list、map、unordered_map四个容器使用的场景和原理?
10.假设现在自定义一个class,使用这个class作为unordered_map、map的key要在类内做什么处理呢?
公司B(20min):
1.vector中push_back实现原理, 在vector尾部操作之后对迭代器有什么影响(迭代器失效问题)
2.继承和多态的定义
3.gcc生成可执行文件的原生指令
4.cmake输出可执行文件的指令
5.linux中查找文件、查看进程的命令
6.基类指针分配派生类的空间,
7.内存对齐的含义及其作用
8.闲聊学习的过程。
因为拿到的面试不多,后面几个面试才想起来要好好复盘总结,所以记录到的不多。