24届-C++开发面经(华od)
> 前言
非常感谢栗栗姐的机考和面试相关资料,以及帮我找部门,全流程关注进度。
## 背景
24届计算机类,无实习、无奖学金。
## 一、机试(380)
1. 机场航班调度
2. 机器人搬砖
3. 数据单元的变化替换
先练习输入输出的方法,然后再去做栗栗姐发的练习题,大概一周之内参加机考都没有问题。如果考试真想不出来,就输出特殊样例,可以拿部分分。机考两个半小时,时间是肯定够的,但是不要卡在一道题上,可以先拿暴力分,时间充足再优化。
## 二、综测
综测按照栗栗姐发的注意事项选择,貌似是不限时(最好25分钟选完),注意性格积极,做事稳重,性格选择保持前后一致即可。
## 三、hr面
1. 自我介绍
2. 为什么选择base地(外地人)
3. 为什么选择od
4. 为什么觉得自己无经验可以胜任这份工作
5. 在校经历,专业学习,考研秋招情况等等(已经工作的可以替换为工作经历)
我是应届生,没有太多工程经验,所以可能会问秋招考研或者找工作的事,准备好这个问题的回答,避免紧张。
## 四、技术一面
1. 自我介绍
2. TCP/IP四层架构
3. TCP使用的拥塞控制算法
4. 设计模式,设计原则
5. C++ GoogleTest测试框架
6. 是否了解建模语言
7. 哈希表原理
8. 手撕两道题(反转链表,翻转二叉树)
面试计算机基础这一块,对于C++er来说,操作系统和计算机网络比较重要,但是我简历上没写操作系统,所以基本问的是计算机网络,但是也没有问的太深。设计模式最好在实际项目中使用过,同理了解测试框架也是大大的加分项,建模语言也是相当重要的,在软件工程领域绘制流程图、时序图、uml类图等跟写代码一样重要。面试官考虑到我缺乏工程经验,于是给了我两道手撕题,在自己的电脑的ide上操作(我觉得最好不要用ai联想插件,使用编译和库函数提示插件是可以的),共享屏幕即可,反转链表写了好久,不过好在最后写出来了。基础答得中规中矩,会的基本都答出来了。
## 五、技术二面
1. 自我介绍
2. OSI七层网络架构
3. TCP三次握手,四次挥手,为什么握手是三次
4. C与C++区别
5. 请简要介绍你了解的C++STL容器
6. C++多线程了解吗
7. 手撕(字符串排序)
二面全是问我简历上的东西,准备的还行,基本都答上来了。在栗栗姐发的C++基础里面有各种基础知识,我复习了3-4天,我可以答的出是什么,然后就是原理啥的。如果真要问看没看过源码,我觉得可以准备一个看过的,我看过C++类型萃取value_type的源码,说是源码实际上是别人总结的源码,带有解析,还有一个vector底层源码,比如了解扩容机制,vector迭代器开始指针、结束指针和当前指针的操作原理。多线程这一块其实不是太过于要求,工作说是做后台服务器开发,所以可能会涉及多线程,但面试主要还是计网、面向对象、STL、常规算法这些。手撕是一个字符串排序,但不是可以直接sort一把梭的,它是要自定义排序规则,STL中sort第三个参数是可以自定义排序规则,我用的是lambda表达式,我对这个熟悉一点,使用起来更加方便。如果手撕题直接简单排序,可以去询问面试官要不要手写排序,比如手撕一个归并排序,这样会给面试加分。
## 六、主管面
1. 自我介绍
2. 项目中遇到的难题,如何解决
3. 介绍一下自己的校内项目
4. 是否了解od(包括部门、工作相关)
5. 谈薪
主管面,是关于稳定、抗压方面的,所以主管压力面,也不要太紧张,毕竟工作上经常会有压力,适当调节心态,不要紧张。自己对应准备好话语,比如od的口号,以客户为本...,还有项目中的难点,以及解决方法,还有项目中的收获,比如团队合作、沟通能力、解决问题的能力等。
## 总结
1. 面试一般是贴着简历问,所以简历上面的东西一定要非常熟悉。
2. 面试前把**可能会问**的问题思考一下。
3. 手撕题可以多练练,排序、链表、二叉树、bfs、dfs(递归)。
## 感谢再次感谢栗栗姐对我的帮助,不管是机考还是综测、还有后来与部门沟通面试,都给我不断注意提醒,即使我有的时候没看到信息,但是还是回复我很多,真的很感谢。