面经复盘
我是从 2021-08-20 开始准备秋招的,确实比较晚了。第一个星期投了一部分简历,同时也在刷算法和题解,截止到 2021-8-27 左右,牛客上大概刷了 50 道算法题左右,堆相关的题刷完,同时 C++、操作系统和计算机网络相关的题也刷了一部分
截止到目前(2021-09-16),趁着很多东西没忘,对面试做一个总结
本来面经是保存到简书上的,结果今天简书 ping 不通,不知道具体什么情况,只能靠回忆了。
第一个收到的面试是在智联招聘上的一家公司:磐优科技,投的是 C++/Qt 面试的时候是 21 号,所以面试中答的非常不理想,内存调度算法都没回想全。但是幸运的是依然给我发来了实习 offer,但是因为没有实习时间所以放弃了
面试时长 20 分钟
第二个收到面试邀请的是红帽的测试,当时投的是 C++ 后台开发,后来给我打电话问我要不要换到测试岗。第二天发来面试邀请。
技术栈是:Python + libvirt
问的问题大概如下:
为什么询问是否转测试岗时犹豫这么长时间:自己没做过测试,但是做不好
为什么意向城市里没北京(实际上当初是担心北京政治气氛太严重,但是我回答的是都可以)
问项目:其中问的比较久的是 Python 爬虫,中间用了 Scrapy + ORM,对数据的去重、数据的查询(是不是裸 SQL)问了比较长时间
问 Python 基础语法:dict 是不是有序的(3.6 之前是无序的,之后是有序的,这里有序是指插入有序)
Python 保护成员是否可以被 import。说实话之前确实没注意这个,因为自从知道 Python 是个鸭子类型后,Python 我就没往 OO 方面学,甚至我刚刚知道还有保护成员。当时答的是可以。
问了 Linux 的部分命令
提到了容器(Docker, Docker-compose, OpenShift(不会),k8s(不会))
提到了 systemd 有几种类型(service, socket, timer, target,device, mount, auomount,swap,path,slice,scope)
提到了虚拟机(libvirt, vbox),因为我虚拟机只是用来安装系统,其它更进阶的还没用过
更喜欢 Remote 还是更喜欢 Office(在校喜欢 Remote,离校喜欢 Office)
问了小组沟通怎么办(Google Meeting + 邮件 + IRC)
是否有转正机会(实习结束看双方意向)
中间技术方面答的我认为还算可以,但是她们用的 libvirt 和英语这部分可能不是很好。后来面试官也算是给了一个口头 Offer,定下了十个月的实习期。但是在问到什么是能开始时,我回到了 9-5 号,当时看到面试官有些不自在,我就知道答错了。第三天给她发了个邮件说实习随时可以开始,但是没想到那个邮箱不是她的,所以 9-6 又发了短信,她说选了另一个人。。。
面试时长 1h
第三个是广联达的:
主要是问 C++ 八股文,快问快答的形式,中间因为发现我会 Qt,所以也问了不少 Qt 相关的内容
C++ 内存布局
C++ 虚函数
Qt 信号和槽
Qt 反射机制是怎么实现的(这个不知道)
还有一些记不清了,但是基本上只有 Qt 反射机制没答上,中间语气词太多,加了太多的嗯、啊、呃
面试时长 30m
一面挂,拒群友说应该是被刷简历了
第四个是 4399,投的是游戏客户端开发,后来发现社招里的游戏服务器也接受校招。
一面技术,没问太复杂的。问了排序的复杂度,反问时问了他们的技术栈(UE)
面试时间 10 分钟左右
4399 二面是 HR 面,主要是聊天的形式,似乎没有刷人
面试时间 20-30 分钟左右
4399 三面是 Boss 面,主要是他看了前两次的面试记录,问了为什么我的项目都是插件的形式(主要是聚焦于核心)
面试时间 30+
一个月后发来感谢信
第五个是美团的,美团就纯属意外了,因为我晚进去一个小时,一看都是算法题,所以当时直接 print 的结果,后来依然发来了面试请求。当时因为知道可能不大,所以也没有准备,结果自我介绍都忘了,我觉得应该是在刷 KPI,因为面试时间是 7 点。面试官算是比较和善,也没问什么难题,让写了一个 SQL,但是 SQL 我忘了,所以只是说了思路。后来听不到面试官声音,而且有电流声,面试官退了一次,我以为他是生气了,所以也退了,后来打电话问我什么情况。我又重新进了
面试时间 45 分钟左右
不出意外,第二天拿到感谢信
第六个是小米的,嗯,这个应该也是在刷 KPI,因为我投的岗位已经不招了,应该是 offer 发完了。依然面试可能是照顾我的感受吧,中间问的很简单,而且面试官对 C++ 似乎不太擅长,对于移动构造表示了疑惑。面试官声音也小,听不清,三十分钟左右结束
隔天感谢信
第七个是转转,投的是测试。
一面技术,简单问了一些测试相关的内容,问了微信点赞的测试怎么设计,答的不是很好
面试时间 30m 左右
二面技术,依然是在问测试相关的内容。面试官整体处于心不在焉的形态,后来提到我的专业后也有些变色,反问环节时问了她对我的印象,diss 了我的性格不适合测试,后来想解释时被打断
面试时间 30m 左右
三面 HR,感觉还不错,问题都比较简单,反问环节问了加班情况
大概一个月左右有人来商量薪资。
第八个是中科海讯,研究所出身的军工企业,声纳方向,投的是研发工程师,每年有几个星期要去甲方。但是人才培养很好
一面 HR,中间没有问技术,聊了半个小时。上来没有自我介绍,而是给自己下定义,找几个关键字。之后再对这些关键字进行解释。可以看出来 HR 还是很专业的,而且应该也是名校毕业,所以当她对新疆大学抽烟问题表示疑惑时,我不知道该这么说,只能含糊过去。这么说呢,不说确实嘈点太多,说了又有种 diss 自己学校的意思,甚至可能会出现 mz 问题
二面部门老大的技术面,因为时间冲突问题将时间调到了 10 点,现在想起来有些后悔,应该调另外一家的。主要介绍了我的项目,反问期间问了技术栈相关的内容。是第一个明确表示我的简历比较符合他们公司的。希望二面能过吧
三面真 Boss 面,但是二面还没结果,不知道什么情况(三面没有进行,2021-9-23 发来了 offer :))
第九个是和中科海讯当天 11.30 的面试。驭势科技,自动驾驶这一块的企业,面试了 80 分钟,面试官是去年入职的,对于我的 C++ 能力表示了认可,提到了 IO 复用,还给我将了 select 和 epoll 的核心区别。电话面试,声音听起来很和善,但是因为系统编程和网路编程不太擅长,所以向我表达了遗憾
第二天发来感谢信
第十个是辉乘健康。面试官迟到半小时,上来先做了一道题:给出前序遍历和中序遍历,求后序遍历。但是这个题没有做过,重建二叉树的时候分区出现了问题。面试官口音听起来??不知道那里的,但是有种盛气凌人的感觉
面了 30 分钟,大部分在看代码中渡过
因为是实习岗,所以可能要求比较低,后面依然发来了二面,但是因为已经拿了 offer,所以推掉了
第十一个是 MetaApp。第二家有完善的实习生培养计划。早 10 晚 9。不过因为有培养计划我还是很乐意的。
一面的面试官实际上是用 Java 做引擎的,他说 C++ 是核心部门(有种要凉的感觉),弄了两个算法:一个是二分查找,二分查找已经踩过坑了,所以我当时是直接默写了下来。第二个是一个层次遍历,总体比较简单。
面试 1h+
二面因为有正式 offer 拒掉了
第十二个是似乎是淘宝的?应该是后续被捞起来了,刚刚面试完。面试内容也比较简单
说一下多态(静态多态和动态多态)
说一下堆和栈(我把数据结构里的堆栈和内存里的堆栈都说了)
new 有哪些问题(new 分为两部分,先分配内存,这时可能会产生缺页中断,然后再在这块地址上调用构造函数)
怎么创建进程(C++ 里好像没这个函数,所以我答的是进程调用 fork,线程调用 thread)
struct 和 class 的区别(应该是三点,没答全)
然后说他们主要是 Java,问我能不能写,我说 Java 学过,也可以,然后问 Java 和 C++ 的区别:
Java 封装了底层细节。比如 Java 是大端的,不用调用 htons 这样的函数,所以更适合网络编程
Java 有 gc,所以一般没有内存泄漏(Java 的 gc 应该是计数的方式,这种和 C++ 的 shared_ptr 一样,当存在环形引用的时候会出现对象无法被析构的问题)
Java 的单例模式时间长不用可能被 gc 掉,C++ 没这个问题
Java 是严格 OO 的,C++ 是多范式
Java 有共同基类(补充)
Java 默认是虚函数(补充)
Java 读十万数据和读一万数据可能效率一样,C++ 则不然(补充)
然后写了一个 LRU。这个 LRU 还真是常见哦。面试考两次了(第一次似乎是美团?)
LRU 这东西实现也简单,我觉得思想还没 dfs 难,就一个 hash 表加一个单向链表。和二分查找一样背背比较好
然后面试官说我的博客他上不去,问我什么情况,我把 GH 上的代码设置成 public 后重新部署了一个 Github Pages
这个 pages。。。本来我是不想开源源代码的,因为里面引用了很多文章,所以加了个 pages 部署到了 Gitee,结果 Gitee 前一段时间抽风,说我笔记里有违规内容。所以我迁移到了 CloudFlare。面试官所在地区可能是 CloudFlare 被墙了,所以。。。
第十三个是深信服 50 分钟左右
面试官进的很早,我提前十分钟刚进面试官就进了。
自我介绍
问了我什么时候开始学的编程(高二)
高中有没有什么项目(无)
看过哪些书
C++ 的优点和缺点(优点:多范式、性能好、基本上什么功能都能实现、标准库质量高。缺点:智能指针有坑、多范式、复杂)
C++ 哪些你觉得不好(remove 和 replace 违反直觉)
做过哪些项目(开共享屏幕看了我的项目,但是没有深究)
智能指针有哪些坑(enable_shared_this、循环引用、多线程性能不佳、使用比较复杂、接口污染)
有哪些是 C++ 能做而 Python 不能做的(比如自定义标题栏)
有哪些数据结构和算法(数组、链表、队列、堆、栈、红黑树、跳表)
跳表怎么实现的(单向有序链表、抽节点)
一亿范围、一千万数字中节省内存地查找某一个数字(位图)
一亿数字进行节省内存地排序(时间复杂度限制为 O(n))(位图)
压缩数组
两个大数算法实际上是编程珠玑第一章的内容。第一个刚开始想到过,但是想到一亿没敢说,说使用 hash 映射进去,但是面试官要求内存占用小一些。后来面试官提示了位图我就说了出来。当时我说的是分一亿位的数,不太好。用位图好一些
第二个依然是这样,将存在的位置为 1,按序输出即可
压缩数组应该是一个 easy 算法,但是边界判断一直想不通。熬了17分钟没写出来。。。
两个大数都是使用位图的方式,压缩数组题目为:给定数组 [1,2,3,4,6,8] 压缩为 [1,4,6,8] 。主要是一个首尾判断的问题,但是这个确实没想起来,卡壳了。最后面试官听起来对我没写出来算法有些不满意。。。
深信服算是一个 C++ 比较纯粹的公司,从笔试到面试都是纯粹的 C++,不会问你一些计算机网络、操作系统这些东西
深信服三面拖了一个月多,本来说是线下,但是后来安排成线上了。三面内容是技术面混合 HR 面(一个人,应该是部门的老大面的)。大概讲了
怎样写好代码
大学最近两年感觉最有成就感的一件事
反问环节问了薪资问题,引起了反感,后来被刷了。面试时间 30 分钟左右
第十四个是海能达。本来 17 号的笔试都没写,后面发邮件说我简历匹配帮我延迟到 21 号晚上 11 点。24 号下午 3:30 面试。
自我介绍
本科什么专业
项目有哪些
学生会经历是干嘛的
有没有嵌入式相关经验(没有,但是有打算)
加上进腾讯会议的一分钟,总共面了 7 分钟 :(。突然又发邮件去西安线下面试。算了,我觉得实在是没意思
希望能过吧。目前比较想去的就是中科海讯(军工的话感觉稳定一些)、淘宝(正好我确实有点想转 Java 的意识)、MetaApp(新人培养确实是很诱人)
昨天(2021 年 9 月 23 日),中科海迅发来 offer :)
整体来说,面试体验比较好的是:
红帽:面试官整体处于微笑、直视摄像头的状态,面试官婴儿肥,挺好看的
中科海讯:也是处于微笑状态,我微笑的话也会有回应,而且 HR 确实是非常的漂亮友善。只希望我不要太菜以至于无法通过面试
小米:面试官应该也是新人吧,我微笑会有回应
驭势科技:电话面试,面试官声音听起来很温柔,说话慢慢的,面试等于是聊天吧,也是第一个对我的 vim 表示赞同的(实在是太难了。甚至他还知道 nvim 和 vim 的区别,还知道 emacs)。
MetaApp:没什么好说的,一面面试官酷似彭于宴,属于静默型帅哥,说话也是慢慢的,很温柔
也算是踩了一些坑。主要是:
简历不应该一份简历,到处投递
问缺点时应该说技术上的缺点,性格上的是大忌,因为性格是很难改变的,技术的话学个几天就差不多了
校招群不应该加的,因为我容易水群,HR 会感觉我很菜。。。(昨天刚被一个 HR 骂过,不过 HR 说的也确实很对,学的广而不精。实际上昨天被 diss 主要可能还是我说我想在简历上写 C++写精通,然后大约四个 HR 出来批评我)