春招实习上岸,整理CVTE,华为,百度,头条,腾讯。分享心得及面经

2,597 阅读18分钟

春招战线拉到比较长,从二月底开始整理项目、制作简历,3月初开始投递第一家,接下来笔试、面试、总结、复习、等待……持续了差不多整整两个月,直到五一放假前才正式收到第一个心仪的offer。这期间学习获取了很多,现在我将心得及面经稍微梳理一下,希望我的分享也能够帮助到大家。

前后投递了二十余家,其中有的笔试没过,有的投递后或者笔试完就没有消息了,真正参加面试的有十家。目前offer情况(时间顺序):CVTE,华为(排序中),百度(oc),头条,腾讯。

心得

先谈谈自己遇到的问题与从中总结的心得,不一定对每一个人都有用,当参考参考吧。

  • 大家在找实习找工作时,可以稍微利用一些时间关注各个公司的招聘动态,据此编写一个进度表,如果有新的笔试、面试安排能够及时调整和筛选,大概什么时间点会面哪些公司,做到心中有数

  • 如果复习的差不多了,我认为可以早点投

    • 一是因为,投递完简历之后,会有筛选、笔试或者捞了简历一直没发起面试等操作,要过一阵子才会真正开始面试,在这一段等待的时间里,其实也是可以复习的

    • 二是因为,你在复习,别人也在复习,等你复习差不多了,别人也复习差不多了,这时可能有很多HC就已经发出去了,越往后走可能难度越大

    • 我觉得我身边的同学、师弟一个月前就拿到了心仪offer时,我还在持续战斗的原因之一 ,可能就是投的比较晚了

  • 有时候可能会接到没有预约的突然来电面试,此时如果允许的话,最好稍微推迟一点,做好心理准备、拿好纸笔、戴上耳机、尽快调整好进入状态、找一个较为安静的地方再开始面试,不然可能会影响面试质量

  • 每次面试时最好是能够带上纸笔,面试官提问后,将其关键点在纸上做好记录

    • 一是因为,这样有助于思考,不熟悉的问题,可以有一小段时间回忆联想相关知识点,即使是很熟悉的问题,也不用急着马上回答,可以稍加梳理,快速在心里列出几个点,有条理有逻辑的述说

    • 二是因为,这些问题可能当时回答不完全,或者是根本不太会,在纸上记录后,可以在一定程度上复盘不会的点,从而利用闲余时间再将这些不足之处补上

  • 在听到面试官问题后,最好先问清楚已知条件,根据已知条件作答,但同时也不要把条件问的太细,因为可能有反效果,把自己的思路、知识点限制得太窄(后续面经有提及)

  • 有一些开放性问题,不要觉得不熟悉、没听过,就想放弃,要敢于去尝试,去思考

    • 一是因为,根据自己的所学,慢慢回顾,以及在面试官的引导之下,是有可能回答出来的

    • 二是因为,有的开放性问题,本来就是面试官为了考察学生的知识广度、深度的,即使不会,在回答的过程也可以往自己会的知识点上引导,向面试官展现自己会的东西(后续面经有提及)

  • 心态很重要

    • 在招聘持续过程中,会经常与同学们交流,大家一起交流学习、面试心得是极好的,共同成长进步,但也难免会提到一些offer情况,不由自主的就比较一下啊,如果别人拿了好offer,而自己却不如意,心态上会很受影响,所以我觉得。。。(道理咱都懂。。。但调整起来真的不是那么容易的。。。)

      • 一是要调整自己的动机:比如说我们找实习,最主要的还是能够有一个锻炼自己,让自己成长进步的机会,攒一份实践经历,在秋招中更具有竞争力

      • 二是要保持一个平常心:知足常乐,能拿一个还可以offer就已经很不错了,接下来再接再厉

      • 虽然我嘴上这么说,但是心里真正能这样做还是很难的,希望也能听到大佬们的解惑吧

  • 状态很重要

    • 面试摆在面前,我们经常是为了面试而复习,有时候会比较浮躁。对于简单的知识过了一遍又一遍,觉得看了也没太大的作用了,实在是有点不想看了;对于较难的知识感觉之前明明看过的看懂了,这时又忘记了,很难沉下心来再去深入;感觉自己好像这段时间没有成长,没有进步,没有学到什么新东西,以致于状态变得很低迷

    • 我觉得这个情况是很正常的,不要刻意的给自己制造恐慌,不要给自己徒增压力;因为对于一些较为简单的知识,经历过了好几场面试之后,相当于已经起到了巩固作用,并且在回答的叙述上应该也比之前更有逻辑更清晰了,可以不必再花过多时间再反复的看;但一些较难的知识,还是得有针对性的各个击破,经历了好几场面试后,心里应该清楚自己哪些点比较薄弱,哪些点是重点,有针对性的去深入复习,调整好自己的状态,争取下一场能够做到更好

面经

接下来是大家最喜欢的面经环节,按照第一面开始的时间先后顺序整理,大家可以参考时间线;另外其中有一些当时记录的总结感想也一起贴上了,由于是面后再次回忆记录,不一定是准确的措辞和顺序,还请见谅。

阿里

3.25 实习一面

突然来电,问了基础情况,没问是否方便,直接开面。。。还没有准备好。。体验较差,有些问题没记录了

  • 海量数据top k问题,如何优化?哈希划分小文件时涉及很多io操作,io量是多少(minHeap的时间复杂度是nlogk,可以用partition降低至n,另外,read的io量比较大,可以使用mmap直接内存映射进来,一次性读很多而不超出内存限制,应该可以满足要求)

  • select及epoll的了解,epoll添加一个描述好还是添加多个好?

  • 虚函数机制,虚函数调用和普通函数调用,效率谁快

  • 算法题:最长不重复子串

  • 算法题:两个字符串的交集,不是排序的

  • socket网络编程函数使用

  • 项目介绍

ps:大家都说阿里的面试体验比较好,可我实在是忍不住想吐槽一下

  • 晚上9点多突然来电,没有预约,也不问现在是否方便,直接开问,我拿着手机,没带纸笔不好记录,没戴耳机有时听不清楚,没穿外套又站在风吹的大厅里面了一个小时,但自己也有原因,敬畏是阿里大佬,没有提出稍等的申请

  • 一上来就问,我们这边是阿里云搞数据库、底层方面的,你这个专业报我们是什么意思(我:???,这种语气和态度,我也是醉了)

  • 问了个算法题,两个字符串的交集,我说可以用哈希表来做,遍历其中一个字符串,做hash_map[ch]++操作,接着遍历另一个字符串,做hash_map[ch]--操作,如果hash_map[ch]-- > 0,说明这个ch属于交集部分,他一直问我hash_map[ch]--中的“--”是什么意思,我以为他没听懂,再叙述了一遍,又继续问,那这个“--”到底是什么意思呢(我:???)

  • 可能比较晚了,工作一天了还要面试,状态有点不好还是怎么,反正问了一个问题,回答完了,等个几十秒不说话,再继续问下一个

  • 估计这次面试给我的评价比较差,过了十几天后显示回绝,官网重新投递做了笔试,也再没有其他面试官捞了

状态

笔试前显示已回绝,官网重新投递、完成笔试后,一直简历评估中,估计没有后文了

腾讯

3.27 实习一面

约的视频面试,面试官很好,给人感觉很舒服,问问题的时候会给一定的解释,让人理解清楚题意,适当的时候还会提醒,如果没答上来或者不完整,会稍加讲解

  • 数组和链表的区别

  • 一个数组int arr20,起始地址为100,求arr11的地址

  • 给定1G的大文件,内存限制是100M,怎么排序

  • 归并排序的过程

  • ctrl+z,ctrl+y,用什么数据结构好

  • 实现pow,最佳的时间复杂度是多少

  • include 包含文件的时候,尖括号和双引号有什么区别,如果双引号中是库文件的话,会发生什么(答对一半,面试官解答,双引号是优先在工程文件makefile标识的文件夹中寻找,找不到再去库文件夹中找)

  • C++中struct和class当作类使用时的区别

  • C++虚函数的实现机制

  • 如果基类的析构函数没有声明为虚函数,会发生什么

  • TCP与UDP的区别

  • TCP怎么确保数据传输可靠性

  • STL中map和unordered_map的应用场景区别

  • linux中基本的操作命令,一个日志文件很大,vim打开很费时间,怎么快速搜索某个内容

  • 查看端口号情况

  • 抓包工具,有没有使用过tcpdump

  • 查看进程id、内存使用情况等

  • 查看打开的文件or描述符

  • 进程间通信机制

  • linux用的多吗,平时怎么调试

  • 做题:strcpy,需要自己输入测试用例,char strDest[],与char strSrc[]

  • 做题:excel表格列表头与数字之间的转换,strToNum和numToStr,两个都要实现

  • 有什么要问我的吗

  • 确认实习时间等

总结:做题的时候有点小紧张,可能会有敲错字母等情况,还是得细心一点;用的宿舍的网,断网了一次,面试官人很好,打电话询问后转而使用热点连接

3.28 实习二面

约的视频面试,感觉有点像压力面,我面的时候有一段时间比较紧张、有点慌乱

  • 自我介绍

  • 项目中的亮点

  • 再说说第三个项目

  • 知道写makefile吗

  • 了解数据库吗

  • 知道写shell脚本吗

  • 常用哪些linux命令,查看线程用哪个命令,会用vim吗

  • epoll的机制,什么时候用ET

  • 析构函数可以为虚函数吗,构造函数呢

  • 看过STL源码吗,说一说map的实现,红黑树的介绍

  • vector的内存扩充

  • 说说MTU,跟着扩展到网络层分片

  • 进程间通信方式

  • TCP连接释放连接的过程及状态变化

  • 说说滑动窗口

  • 了解共享内存吗(说了下虚拟页面到物理页帧的映射),后问如果这两个进程都终止了,共享内存还在吗

  • 洗牌算法,平时做题吗

  • 怎么创建线程

  • 有什么要问我的

总结:视频面试,网线又断网了一次,用手机热点也断了一次,最后加QQ用视频面,不知道是电脑出问题还是宿舍网络有问题,老是断网,好在面试官没有太介意这个

4.24 实习三面

应该是总监面,面试官人很好,主要问的是开放性非技术问题

  • 自我介绍

  • 不是科班的,怎么学习

  • 游戏研发,你会怎么做

  • 三年的工作规划

  • 有什么要问我的

  • 面试官说大家热情很高,有很多人面试,会做总体评估,一段时间后再给通知

总体而言,各个方面也都尽可能的去答了,不管怎么样,还是给了机会的,还是基本上都完成了,已经没有遗憾抱怨啥的了,暂时就先不管那么多了,就静静地等待结果通知吧

4.29 实习HR面

HR小姐姐声音很甜,没有问啥刁钻的问题为难

  • 自我介绍

  • 了解你所面的部门和岗位吗

  • 你觉得你做这个方向的工作怎么样

  • 在其他业务上有相关的学习吗

  • 主要是实验室的项目,没有其他实习经历吗

  • 工作地点有什么想法

  • 还有面其他公司吗

  • 这些公司都给你offer,会去哪一家,为什么

  • 有什么要问我的吗

总体来说,HR面所问的问题比较常规,没有刻意刁难,还比较顺利,HR说如果通过,会在5月中旬发通知

依图

4.8 实习一面

面试官很好,觉得我不是非科班,但也没有怎么为难

  • 自我介绍

  • 问项目,三个都大概了解式的问了

  • 平时调试用什么,linux的gdb用过没

  • 当发现内存泄漏或CPU占用满了,怎么办

  • 主要还是用C++,谈一谈对C++的认识

  • C++还有什么好的

  • define和const的区别

  • 可执行文件的内容分布

  • 代码段存放哪些数据,还细致的问到了未初始化的、已初始化的区域

  • 进程线程区别

  • 同步互斥机制有哪些措施

  • 条件变量应用场景

  • 网络编程的函数调用套路,客户端服务器端(还说了一些连接队列)

  • 那listen函数的backlog参数是什么意思

  • 客户端是是否可以使用bind

  • 阻塞与非阻塞,IO模型

  • 了解哪些数据结构

  • stack和vector的区别

  • 算法题:strcmp

  • 算法题:二分查找firstK

  • 有什么要问我的

总结:假期玩了几天,收假回来第一场面试,心态上还好,但是感觉面的过程中,说话有点卡顿或者思路没很快跟上,逻辑有点不清晰,感觉下次还是要理清楚了再说,有条不紊的、细致的慢慢说,不要着急,语速也不要过快。

状态

面试表现感觉还可以,不过后续没啥动静了,估计觉得不太对口吧

华为

4.16 实习一面

面试官应该是搞技术的,问了很多项目以及一些技术问题

  • 自我介绍,涉及到项目的事情,许多问题都是根据项目展开的

  • 面试官具体问题忘记了,回答是将神经网络模型稍微介绍了一下,其训练流程代码大致框架走了一遍

  • 可能有些影响影响因子并不会影响到部分输出参数怎么办

  • 有没有对神经网络进行相关的优化

  • Qt当中信号与槽机制是怎么实现的

  • 进行的相关操作,槽函数没有响应会因为什么

  • 类MVC模式是怎么实现的讲一下

  • 什么时候需要将析构函数定义成虚函数

  • 多线程如何实现同步与互斥,针对一个问题具体讲一下怎么用

  • 如果不用锁怎么实现,说的自旋锁忙等待

  • 学过哪些数学课

  • 条件概率知道吗

  • 怎么把条件概率应用到模型训练这个项目中

4.16 实习二面

面试官应该是一个不专门搞技术的主管或者领导,气场很足

  • 自我介绍

  • 详细介绍了一下其中一个项目软件开发的情况

  • 项目中有什么创新点

  • 这个项目主要解决什么问题,多少人一起做,负责哪个部分

  • 接着一起聊这个项目的详情,提出其中一些问题讨论

  • 面试官提出了一个缺点,说那怎么检测出来生成的最优路径是不是正确的呢,无法验证等

  • 有什么要问我的

总结:

  • 华为的面试也没有传说中的玄学与水啊,两轮面试都超过三十分钟,近四十分钟,既问了项目,也问了技术问题
状态

录用排序中

百度

4.21 实习一面

一面面试官很好很随和,问的很基础

  • 看你不是科班的学生,自己学过哪些知识看过哪些书

  • 说说哈希表的实现方式以及怎么解决哈希冲突

  • 说一说多态机制怎么实现的

  • 纯虚函数

  • 模板了解多少

  • 模板偏特化了解吗

  • C++11了解多少

  • 左值右值的区别

  • std::enable_if了解吗

  • 调用fork,发生了些什么事情

  • 协程了解吗

  • 32位机器,一个程序可以用的内存有多少

  • epoll相对于select的优点是什么

  • 线程同步与互斥实现机制有哪些

  • 二分查找复杂度是多少,实现一下最基本的二分查找,更改一下题目,做一下变种题(12345 变为 45123)

  • shell脚本了解吗

  • 数据库了解吗

一面比较偏重基础,把基本上各大知识块重要的点都过了一下,像是摸清楚学生大概掌握的知识面的广度

4.21 实习二面

中午吃了饭之后,HR就打电话说让上线,面试官在等了(可一面面试官说的是让我1点上线开始等),上线后二面面试官后续才达到,没有说等的事情

可能是中午刚吃了饭,没有午休,继续工作有点困乏,大家状态都有点不佳,面试官问问题,我回答问题也没有之前那么有激情了,有几道题回答的时候,感觉面试官都捂着头不想听了。。。而且自己说的也很乱,语速、逻辑有点不清

另外,感觉二面面试官问的问题,有好几个我都没理清楚什么意思。。。以至于答了半天,打断了重新说了一下,让我从另外的角度答

  • 自我介绍

  • 斐波那契序列知道吗,实现一下

  • 多线程之下,访问一个全局变量可能会有什么问题

  • 有什么机制可以确保不会出这个问题

  • 互斥锁会有一些性能开销,不想用怎么办

  • 那你知道自旋锁是怎么实现的吗

  • 除了这个(回答的,专用机器指令compare_and_swap),还有其他方法吗,原子操作了解吗

  • 什么时候会发生死锁(面试官接着上一个问题问的,我以为从使用锁的机制去讲,结果把生产者消费者模型讲了,结果他说,不是指这个,而是指什么时候会发生,死锁的条件)

  • 在代码实现上怎么解决死锁呢

  • 有些线程处于死锁状态了,怎么在另一个线程中检测出来

  • 线程栈通常是多少

  • 那一个线程可以访问另一个线程的线程栈吗,会发生什么

  • 链表了解吗,跳表呢

  • 进程虚拟地址空间划分,分别存储什么

  • static修饰全局变量和局部变量的效果

  • 最大连续子数组和

总体上感觉,大部分还是答出来了,但是感觉没讲清楚,语速、逻辑有点乱,有点急躁、状态不佳。。。

4.21 实习三面

面试官是代表公司的,通用能力考查,人很好,有问题没答出来,也做了相关的解释

  • 问项目,每个项目都稍微细致的说介绍了一下情况,在其中的职责,做了哪些事

  • 讲一讲你做的项目中的一个难点

  • 内存4G,malloc申请4.1G会发生什么

  • 内存4G,已经有其他进程申请了2.5G了,此时malloc申请4G,会发生什么

  • 有什么要问我的

总结:三面是通用能力考察,后来也解释道,问的问题没有标准答案,具体实现不同,答案不同,想看看学生们的知识广度和深度,能够根据提问发散思维想到多少东西

状态

4.30收到offer call

最后

最后来个offer求比较,目前比较满意的是

  • 字节跳动,后台开发,base深圳,部门主端PC端,业务应该是头条号方面,需要转Go语言

  • 百度,C++软开,base北京,部门忘记问了,听群里小伙伴说那天打oc的应该是智能云或凤巢

  • 腾讯,后台开发,base深圳,部门IEG天美,业务应该是游戏服务器研发方面

可以从转正率、秋招加成等方面分析,想听听大家的意见或建议,谢谢大家啦!