记录一下自己的秋招,cpp选手
背景:双9,科班出身,主要用c++,科研用python,刷题500+。顶会共一一篇,实验室不给实习,所以无实习,两个实验室的c++项目。
感想:今年秋招真太难了,哭了
大概说一下目前的进度
意向:三星 中冶南方 科大讯飞
面完泡池子:美团、中兴、华为、亚马逊、快手
挂了:南方基金、米哈游、陌陌、zoom、微软(没约面)、虾皮
=============下面是已经面过或者知道结果的互联网厂,国企和外企在另一篇笔记=============
南方基金
7.20(1面,已凉)
- 删除链表倒数n个节点
- 用两个队列来模拟栈
- 操作系统死锁产生的条件,漏了互斥条件
- 死锁恢复,漏了进程回退
- 死锁避免和预防
- 最多能产生多少个tcp链接,回答了跟tcp报文端口大小有关,但是具体的数值不太记得了,面试官说跟tcp报文端口大小无关?事后看了下,还跟内存大小有关。
- 服务端怎么标志一个tcp链接,应该是根据ip和端口,我说是创建socket返回的id(因为前面在说服务端套接字什么的,下意识就往这方面想了)
- 9个小球,找出重量不一样的..回答错了,说了四次,实际上三次就够,先分成三份,第一次放两份,如果平衡就知道有问题的球在剩下一份,拿那一份测一下就知道是重了还是轻了,再从这三个球中拿两个出来,就能知道结果
中兴-成都
8.5(技术面+综合面 1h)
- 问项目,居然问的是第二个项目…第一个项目没问
- 用过什么IDE,什么调试工具
- 哈希表知道吗,底层怎么实现的
- 先序遍历怎么做的
- 自己实现过什么数据结构
- 自己是怎样实现vector的,有没有跟stl的实现对比过
- 多个头文件互相引用怎么办(回答说用program once或者ifdef那几个宏定义,但面试官说这只能让头文件编译一次,查资料说是要用前置声明)
- 进程的内存布局
- 介绍一下操作系统内核(答得不好,有点蒙)
- 平时用过什么调试,多线程怎么调试
- gdb调试怎么打断点,数据断点知道吗(这个没了解)
- 平时遇到过什么bug,怎么处理的。
前面半小时技术面,后面半小时是综合面试,聊一下哪里人,对中兴有啥了解,对内卷怎么看,别怼面试官,自行发挥就行。
美团
8.19(一面 50min)
- 介绍组里的工作,问我了解自动驾驶吗,这部分大概15分钟左右
- 算法题 会议室问题 leetcode 253, 写的太快,又给了道改进题,大概意思是说有N个会议室,每次会议记为[开始时间, 结束时间, 人数], 问最多能满足多少人参加会议。改进题想半天还是不会,面试官说用dp,记下N-1个会议能满足多少人。
- c++ 4个智能指针
- move,什么时候用。移动构造,移动赋值
- 设计模式用过吗,单例模式说一下,什么时候用单例模式
- 反问
8.24(二面 45min)
做项目或者论文时什么时候最有成就感
然后聊了20 分钟论文,感觉面试官对我做的方向有所涉猎,也能听得懂
写题,三个点abc,判断第四个点p是不是在abc围成的三角形内,写了个计算面积的方式,abc围成的面积和abp,acp,bcp围成的面积之和是否相等
然后问这个方法有什么问题,我说精度上会有一些问题(实际上还有点p落在三角形边上的问题)
顺势就问了double怎么表示的(回答得不好,只记得有几位表示基数,另外几位表示指数..)
最后又问了论文,汽车上自动驾驶的一个处理流程是怎样的,怎么根据语义分割结果算出物***置(搞乱了,其实是直接可以通过learning的方法计算,不需要语义分割结果),我说单目摄像头就通过learning方法计算,但是实际使用会有很大风险,最好用双目摄像头直接计算。
反问:有什么可以提高的,后面还有几轮面试。
8.30(三面/hr面 35min)
- 自我介绍
- 两个项目和论文哪个更有挑战(选了论文)
- 介绍论文以及遇到的困难,怎么解决的,创新点怎么想的
- 家在哪,工作地点选哪里
- 大学期间碰到最消极的事情
- 最有成就感的事
- 是否允许实习
- 保研是本来成绩就好,还是做了什么努力
- 未来工作规划
- 对美团的了解
- 反问,还有几轮面试(还有一轮),工作地点是否能调整(得和其他面试官商量)
9.6(四面/技术面 35min)
面试官是另一个组的leader,应该是交叉面吧
- 问论文,问的非常深,大概问了20多分钟
- 问c++基础,智能指针和裸指针差别,segmetation fault碰到过嘛,如何定位
- 反问
第四范式
8.24(一面 1h)
- 自我介绍
- 问项目,简单介绍一下,然后问一下技术难点
- 项目里面有没有用多线程,怎么用的
- 线程死锁的四个条件,如何预防
- 数据库用过吗,怎么优化查询(答了对经常访问的字段建索引,where条件后面进场出现的也要建),顺便说了一下插入的优化
- 数据库事务四个特性,然后问一致性具体怎么理解,银行转账的例子
- 做题,一道bfs遍历的题目,思路很容易想,但是一开始写的有点乱,debug了半天,平台对c++的支持也不太好,编译出的问题(变量未定义啥的)并没有红线提示,只能自己靠经验解决,最后大约写了15分钟。
- 反问,组里是做啥的,自己的面试表现有什么可以改进的地方(自己介绍项目的时间太长了,说要简略一点,重点介绍项目的难点)
吐槽一下,面试官人挺好的,但是面试体验确实不太行,本来约的一周前,被鸽了一次,然后今天进去又等了10多分钟,差点就要退出会议室了...
8.31(二面 30min)
- 自我介绍
- 项目的角色和指责,初期的设计在中途有没有发生什么改变,如何应对。
- 项目中遇到的最大的困难
- 开始场景设计题,微信点餐,怎么设计程序使用户能够看到互相点的菜品以及点的菜发生改变的时候让其他用户能够马上看到(我直接说用观察者模式,然后写了个大概的样子)
- 多个读者订阅作者多个作者,每个读者能看到最近发布的20条他所关注的作者的文章,然后取关的时候需要进行更新。(我在观察者模式上加了个维护读者作者关系的数据结构,同时维护一个优先队列保存20篇文章,更新或者删除的时候遍历修改,最后觉得太麻烦了,说直接用数据库保存这些关系)
- 反问:上面那个场景题一般是怎么做的,回答是用数据库存这种文章还有关系,读者作者的信息,然后更新的时候遍历修改。
- 反问2:后面还有几轮面试(两轮,分别是技术总监面,hr面)
华为提前批
8.27(一面 1h)
- 自我介绍
- 写题,{}()[]这些括号是否配对
- 然后开始八股
- 右值和右值引用,段错误如何调试,缓冲区溢出的问题(数据丢失,还有变量被覆盖,这个没答到)
- 用过多线程吗,死锁怎么解决(预防,避免,发生了死锁直接解决),项目中一般使用加锁避免死锁
- 看你刚刚用gdb调试,平时是怎么调试的,打断点还是日志。
- 中间问了一下论文,大概两分钟
- 然后问项目,主要单人的角色,怎么设计这个项目的,遇到了什么困难,怎么解决的
***协议(先进行arp,然后构建icmp包发送给对方,对方接收后返回,根据返回结果看看是否超时之类的)
10. 反问
一面后休息约20分钟
8.27(二面, 40min)
- 写题,给一个n,求n个括号的所有组合,力扣原题,五六分钟写完
- 开始八股,顺序还有部分问题不太记得了
- 内联函数和宏函数区别,优劣
- lambda表达式
- 进程线程的区别
- 用过什么数据结构
- 哈希冲突怎么解决
- 说一下快排原理
- 项目解决过的最困难的问题
9.27(主管面, 30min)
- 自我介绍
- 问项目(两个都问了),项目的意义,自己的主要职责,难点
- 个人背景的一些问题(哪里人,父母干嘛的)
- 碰到过什么很烦的事情(考虑了一下说是做事情的时候不喜欢被打扰),同事指点江山怎么办(看看是不是代码真有问题,沟通,再看情况),会吵架不(不会,老实人)
- tcp拥塞控制
- 面试了什么公司,有没有offer,喜欢做app还是web,为什么想来华为
- 反问
快手音视频部门
9.8(一面 1h)
- 问项目,主要问音视频同步,问的有点深,只会一半…
- New malloc区别
- c c++区别
- http常用状态码
- c++内存分布
- 析构函数为什么用虚函数
- 给了几段代码看输出(虚函数,空类大小)
- map怎么删除满足一定条件(value>=x)的数据(考察迭代器失效的问题)
- static用法
- 写题,给一个递增数组,序列化成一段字符串,直接模拟就行
- 一个较大的数据,要切片。每片数字不能超过k 1025, 片数尽可能少,片大小尽可能均匀。如何切片
- 第二题是找出出现次数超过一半的数字
9.8(二面 1h)
- 问项目,但问的比较简单
- 聊天,忘记聊的啥了,好像是为啥没实习什么的,华为面得怎么样什么的
- 做题,两道easy,第一道写的有点差,给一个值k,要求将这个k拆成不同的数字,类似于数据拆包,将这个k均匀拆分成一对数字,要求拆分后数字不大于x。第二题链表题,
- tcp能起多少个链接
- 每个tcp大概要多少内存(不太会,随便说了个数字)
- 启1w个tcp要怎么监听(IO复用)
- 什么时候用select,epoll
- 可以用两个线程监听吗,优缺点是什么
- 协程了解吗,跟线程比有什么优势
- 不同线程的协程有互斥的问题吗
- 反问
这一面回答八股文比较拉胯,没做过webserver的项目,所以问网络和线程就蒙了,估计凉了。
9.20(三面 1h)
- 问项目,音视频方面的知识,用什么编码协议,传输协议,怎么优化的
- 怎么用udp来简单模拟tcp,降低丢包率
- 做题,倒N字遍历,按行存储结果,找规律就行,有点紧张,不过还是找对规律了,一次过
- 业务场景题,输入app,如何提示后续的单词比如application等,用字典树
- 如何查找前100个频率最高的单词,我说搜索出来之后放在优先队列排序,面试官说节点内可以多存一些信息,不太会。
- 怎么多机存储这个字典树。按照头字符依次放到对应的机器上,比如有26台机器,a开头的放0号机器这样。如果有90%都是以a开头的怎么办,我说那按照字符串内出现频率最高的字符放,比如app最高的是p,放在p对应的机器上。
- 怎么降低搜索的网络延迟,我说cdn+redis缓存
- 反问
9.26(hr面 25min)
- 面试官和我都自我介绍
- 介绍项目,两个都介绍一波,然后问难点
- 有多少offer,想去哪里工作
- 预期薪资
- 反问做啥的(似乎是转码相关的),多久有通知(最慢国庆后)
科大讯飞
9.8(一面 30min)
一面是hr面,具体内容有点忘了,大概就是介绍一下论文项目,然后各种bq问题
9.17(二面 20min)
- 自我介绍
- 问项目,承担的角色,碰到的印象深刻的问题
- 问论文,简略介绍论文
- c++基础,new malloc区别,子类析构是否调用父类析构
- 反问,业务,和教育相关的智能应用的开发,有几轮面试,4轮,hr面+两轮技术面+总监面(不知道是不是技术面)
9.27(三面 30min)
- 自我介绍
- 介绍音视频项目,自己的角色,负责什么,遇到的问题
- 音视频项目使用的协议,为什么不直接用ffmpeg,为什么要用卫星中继
- c++,webserver会吗,线程池怎么设计,如何动态扩容线程池(只看过,没写过这个项目,估计没答对)
- 操作系统,kill一个进程会发生什么(乱答的,面试官说基本正确)
- 期望薪资
- 反问
米哈游(笔试ak,然后凉)
陌陌(简历直接挂)
中物院(简历挂?)
这个投了两个地点,一个显示未通过筛选,另一个显示放弃初试,但是我短信和邮件都没收到通知...
#Cpp面经##南方基金##中兴##美团##第四范式#