秋招总结(内附C++高频面试题)
0 写在前面
秋招在牛客网上受益匪浅,主要包括秋招的知识储备、面试经验分享以及招聘信息获取。非常感谢热于分享的牛友们,也想把自己的经历整理出来,帮助到有需要的人。
1 个人情况
楼主普通双211水硕,绩点还行,ACM铜铁选手,本科毕设有一个实验室划水横向项目(C#的WebForm框架),研究生搞了一年算法没成果,2019年初决定转C++。在牛客上找了几条C++的精华贴,便照着书单一本一本看,中间掺杂着实验室杂事和小论文的事情,个人的时间规划能力比较弱,复习效果一般般,最终也没搞出个C++的项目。七月末开始疯狂投简历,提前批基本全挂,九月初拿到猿辅导offer后开始转运,十月拿到锐捷、亿联、吉比特offer,十月下旬有幸拿到网易互娱游戏研发、滴滴国际化、百度地图的offer。
2 秋招经历
秋招投的基本是C++相关的岗位(没有的就投后端开发),总共投了36+份简历,16家公司给了面试机会,总共与27个面试官进行了交流,最终拿到7家offer,每个offer都来之不易,非常满意,感谢这些公司对我的认可,给了我继续前进的动力。
2.1 OFFER(7):猿辅导、百度、网易互娱、滴滴、锐捷网络、吉比特、亿联网络。
2.2 中途放弃的(3):海康威视、拼多多、华为、4399。
2.3 失联的(5):字节跳动(1面后失联)、网宿科技(1面通过后失联)、美团点评(内推后失联)、京东(笔试后失联)。
2.4 面试挂(6):腾讯WXG(1面挂)、深信服(2面挂)、趋势科技(1面挂)、Shopee(1面挂)、360(2面挂)、贝壳找房(1面挂)。
2.5 笔试/测评挂(7):网龙、中兴、B站、东方财富、携程、富途、快手
2.6 简历挂(8):虎牙直播、Zoom、ThoughtWorks、追一科技、作业帮、昆仑万维、瓜子二手车、厦航。
3 帮助最大的材料
牛客精华贴1:https://www.nowcoder.com/discuss/147538
CyC大佬的github链接:https://github.com/CyC2018/CS-Notes
牛客精华贴2:https://www.nowcoder.com/discuss/57978
刷题平台:LeetCode、牛客上的剑指offer,LeetCode上讨论区里面的Most Voted方案很有参考价值。
记笔记工具:幕布,一款能够自动将列表转化为思维导图的应用,跟百度三面面试官聊到了这个,感觉是个加分项。
简历制作工具:wondercv。
4 关于书籍
4.1 看过的书:剑指offer、现代操作系统、CSAPP第2和第3部分、计算机网络自顶向下方法、C++ Primer、Effective C++、侯捷老师的STL源码剖析。
4.2 没看但觉得很重要的书:深度探索C++对象模型、apue、unp、linux内核相关、redis设计与实现、Head First设计模式、TCP/IP详解。
5 关于心态
心态最炸的是8月份,面完360后极度怀疑自己,在床上躺了一天。楼主调节心态的方式是面试之前暗示自己,只要把会的知识点讲清楚就行,不会的通过复盘查缺补漏,尽人事听天命,尽力就不后悔。所以楼主一路走来感觉很踏实,会的都努力讲好,不会的也会尝试在面试官的引导下解答,基本都能正常发挥。楼主这边推荐一个网易公开课上的“积极心理学”课程,这门课程给楼主带来了很多正能量。
6 高频面试题
楼主根据自己的面经,整理了一份按频次排序的面经合集,括号里面为被问到的次数,基数为27场。原料取自:https://www.nowcoder.com/discuss/334298
6.1 C++:
1、STL容器(vector, list, set, map),一般问vector与list区别,vector扩容,set,map底层红黑树这些?(8)
2、C++内存管理?malloc与new的区别?野指针?内存泄漏?(6)
3、智能指针(shared_ptr、weak_ptr、unique_ptr)?手撕shared_ptr?(5)
4、C++多态?虚函数如何实现?(3)
5、static、extern、const、volatile关键字?(3)
6、构造函数可以是虚函数吗?析构函数可以是继续函数吗?为什么析构函数要定义为虚函数?(2)
7、声明和定义的区别?(1)
8、指针函数和函数指针?(1)
9、strcpy的问题?(1)
10、指针常量?常量指针?(1)
11、深拷贝与浅拷贝?(1)
12、右值引用?(1)
13、脚本语言懂吗?(1)
14、类对象的大小?内存对齐?成员函数是否占空间?·(1)
15、C/C++与python的本质区别?(1)
16、C++异常机制?(1)
17、python的GC机制?(1)
18、struct与class的区别?(1)
19、面向对象与面向过程的区别?(1)
20、C++重载与重写?(1)
6.2 操作系统:
1、进程与线程的区别?线程池?什么时候用进程?什么时候用线程?(9)
2、进程之间的通信方式?(6)
3、了解协程吗?(4)
4、linux基本命令?ps、grep、top等?强行杀一个进程怎么杀?glibc是干什么的?(4)
5、进程调度算法?抢占式非抢占式?(3)
6、虚拟内存机制?mmu?(3)
7、什么叫死锁?死锁必要条件?避免、预防、恢复、检测?(2)
8、select、poll、epoll?(2)
9、静态链接与动态链接?(2)
10、手撕LRU页面置换算法?(2)
11、怎么保证线程安全?(2)
12、线程之间的同步方式? (1)
13、同步、异步、阻塞、非阻塞?(1)
14、操作系统拿来干什么的?(1)
15、进程切换?(1)
16、进程的内存空间分布?堆与栈的区别?为什么用堆这种数据结构?(1)
17、操作系统的用户态与内核态?(1)
18、linux常见信号?kill -9?进程组?Group ID和PPID什么区别?(1)
6.3 计算机网络:
1、TCP/IP三次握手(为什么三次)、四次挥手(为什么四次)、滑动窗口、流量控制、拥塞控制?(10)
2、socket编程了解哪些?(9)
3、http状态码?(3)
4、http报文结构?get与post的区别?post与put的区别?还有哪些请求头?post可以在url里面携带参数吗?(3)
5、TCP与UDP的区别?(3)
6、计算机网络7/5层结构?各层常见协议?(2)
7、http与https的区别?http的加密方式?(2)
8、消息队列有用过吗?(1)
9、介于TCP与UDP之间的一些协议?(1)
10、两台机子互ping的过程?(1)
11、TCP的粘包问题怎么解决?(1)
12、网络库有用过什么?(1)
13、IP层如何找MAC地址?如果对应IP不在局域网呢? (1)
14、网桥?虚拟设备对?(1)
15、ARP攻击,ARP欺骗?(1)
16、UDP数据报文多大?(1)
6.4 数据库:
1、B树与B+树?(4)
2、乐观锁&悲观锁?如何实现?(3)
3、联合索引?最左匹配原则?(3)
4、数据库事务?mysql事务隔离级别?(2)
5、数据库索引有哪些?(2)
6、redis了解吗?一致性哈希如何优化(虚拟结点)?(2)
7、数据库引擎(innodb、mysima)?(2)
8、数据库优化(如何定位慢查询?如何改进?)?(1)
6.5 算法与数据结构:
1、动态规划介绍?(4)
2、红黑树?(3)
3、哈希函数设计?哈希冲突的处理方法?(3)
4、常见排序算法?时间复杂度?基本原理?手撕快排?(3)
5、最短路算法介绍?如何优化?(2)
6、10亿行32位无符号整数,找出第7亿大的数是多少?只给300M内存?(2)
7、扫雷写一个随机埋n个雷的算法(洗牌算法原理)? (1)
8、链表反转?(第m到第n个?每隔k个?(1)
9、一个n位数,现在可以删除其中任意k位,使得剩下的数最小(前导零忽略)?(1)
10、有符号大数链表加法,靠近头结点为高位?(1)
11、二叉树中序便利后继结点?(1)
12、无向图的联通块?(1)
13、手撕并查集?(1)
14、链表合并?(1)
15、有序链表删除重复结点?(1)
16、二叉树根到叶子的路径和为sum的路径?(1)
17、二叉排序树第三大结点?(1)
18、20个银币,1个金币,每次拿1个到4个,金币只能最后一个拿,且金币银币不能同时拿,现在你先开始拿,问如何拿到金币?(1)
19、环形缓冲区?(1)
20、斐波那契数列求第n项(递归、迭代、矩阵快速幂、公式)?(1)
21、二叉搜索树的插入?(1)
22、分解质因数?(1)
23、500个数组,每个数组有500个元素,从大到小排序好,找出前500个最大的数?(1)
24、旋转数组找最小值?(1)
25、10亿个IP,取出频次出现最多的TOP10个IP?(1)
6.6 项目:
1、项目介绍?项目难点?遇到的困难?为什么这样技术选型?(13)
2、科研课题介绍?难点?创新点?科研课题的实际应用场景?(5)
3、MVC三层架构?(1)
4、权限管理?用户登录验证?(1)
5、服务器宕机怎么排查错误?(1)
6.7 开放性问题:
1、设计一个红包系统?红包的分配在什么环节去分配?金额在发的环节去分配还是在抢的环节去分配?怎么随机分配?需要考虑哪些问题?(1)
2、估算一个上班区域一天的营销额?(1)
3、微信搜索附近的人怎么设计?(1)
6.8 其他问题:
1、自我介绍(开始)?有什么想问我的(结束)?(18)
2、手头offer?怎么看待这些offer(地点、薪资、平台、岗位等)?意向的工作城市?(7)
3、对公司了解吗?对求职岗位了解吗?胜任岗位的优势?为什么选这个岗位?对未来职位的兴趣点?(5)
4、课外关注的技术?有没关注开源社区?是否了解当前热门技术?(5)
5、你的优点/你的缺点?(3)
6、设计模式了解吗?手撕单例?工厂模式为什么不直接用构造函数?(3)
7、加密算法?MD5加密算法?(3)
8、怎么看待算法岗和开发岗?(2)
9、ACM经历?如何团队协作?(2)
10、编译原理了解吗?(2)
11、期望薪资?(2)
12、最近看的书?(2)
13、遇到的最困难的事情?(2)
14、学习某个技术需要的时间周期?(2)
15、有比较崇拜的人吗?(1)
16、特别有成就感的事情?(1)
17、职业规划?个人优势?(1)
18、正则表达式?(1)
19、53个人中,任选3个人至少有两个人生日相同的概率?(1)
20、平时的学习习惯?(1)
7 遗憾的事情
1、研一入了算法的坑,中途发现自己太菜搞不动。
2、春招的时候没有去实习,没有投简历。
3、秋招计划安排不够详细,走一步算一步,导致最终没有C++项目,很多书没时间看。
8 有趣的事情
1、觉得能过的却挂掉了,觉得没有希望的却拿到offer了。秋招不要把自己吊死在一棵树上。
2、面试时长最短8分钟,最长1个多小时,基本没有HR面。
3、发现ACM+C++投游戏岗位真香。
4、C++选手最后要投敌加入Java阵营了。
9 写给未来的自己
多锻炼身体、多看书、造一些轮子、做一些有挑战性的事情。
#校招##C++工程师##面试题目#