春招战线拉到比较长,从二月底开始整理项目、制作简历,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天美,业务应该是游戏服务器研发方面
可以从转正率、秋招加成等方面分析,想听听大家的意见或建议,谢谢大家啦!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。