Contents
写在前面
本篇文章适用于非科班出身,想从事cpp方向互联网行业的同学
国庆假期事情不多,就花时间梳理一下自己的秋招。2019届的秋招整体形势,总结起来就是,时间脉络与过去一致,岗位与行业发展会有此消彼长的趋势。总体分为3-6月份春招实习生招聘、6-8月份提前批内推环节和8月底开始的正式秋招。岗位趋势上,近几年AI大热,身边很多同学都转行做算法岗了,今年竞争挺激烈的,相对的开发竞争变小,客户端方向前几年饱和后,今年好像又出现了供不应求的现象,头条客户端的签字费都6万了,眼红啊。
秋招盘点
目前为止,依照投递与面试顺序,秋招我投递了网易互联网、阿里菜鸟、华为消费者BG、海康威视、美团、远景能源、百度、腾讯、momenta、小米10家公司,其他的有的没投,有的是投了后来放弃了笔试面试。后来得到了阿里、华为、海康、远景、百度、腾讯、momenta6家面试机会,目前拿到了网易游戏、趋势科技、华为、百度、远景能源、海康威视6家offer,腾讯过了hr在等offer cal,momenta基本过了在等ceo面流程,其中趋势是6月份提前批拿的,网易游戏属于春招实习生转正。华为的岗位是云计算工程师,网易游戏是游戏研发,其他的都是cpp后台。
总结来说,秋招面试的,除了阿里没有给过和流程中的,其他都拿到了offer,阿里中间是有一些故事,直到hr面之前我觉得还是很顺利的。
2018.11.1 Update
后来腾讯那边也过了,但是是深圳的岗位,考虑之后拒绝了,选择去百度上海
秋招面经
华为:
- 拿到了秋招直通卡,直接综合面吹牛逼
- 拿到了消费者云服务的offer,只给我15K,简直侮辱价,果断拒绝;华为不仅随机分配岗位,甚至开始随机分配薪资了
阿里菜鸟:
- 拿到了秋招直通卡,一面综技术面,二面HR
- 技术面聊项目,把项目算法和过程在他面前的黑板上画了一下,聊了聊怎么改进适用于工业场景,谈笑风生…在欢声笑语中结束了一面,我觉得应该稳了
- 二面HR,聊性格,聊人生,和我聊阿里的价值观,拥抱变化,当时不懂事,和HR有来有往,吹牛逼的不亦乐乎,后来才知道,遇到HR舔就完事儿了,当时还是太年轻,估计也因为春招拒过他们,HR拖了一个月最后还是把我挂了,别人阿里都是挂了捞、捞了挂好几次机会,我自从春招过了就被锁了流程,就没别的选择了,欲哭无泪…拥抱变化吧…
- 菜鸟的办公楼比网易的新,外表也很炫酷,在这儿办公应该还是挺不错的
海康
- 一面技术面: 网络知道么,来说说tcp,http知道么,用过哪些应用层的协议;你这个项目里面,涉及到音频编解码么,说说。
- 二面HR : 聊人生聊理想,舔就完事儿了
- 海康的面试体验很差,一堆人在一个长廊转角里等很久,又热又困,表面上我是一个舔狗,内心是一个暴躁老哥,而且听说海康加班多,果断拒绝。
远景
- 办公地点在南京中心大厦,办公环境很好,可惜大部分岗位最后都是去上海的
- 去了以后每个人一张纸上写算法题,写完签到等面试,我是C++的,结果给我一个java的题目,果断放弃直接签到,后来确实也没人关心我这题怎么写的
- 拿到了直通卡,一面技术面,聊聊你在网易游戏的项目;我:如此这般…。十分钟之后,过了。
- HR面,远景的HR和我说她之前在腾讯待过,和我比较了一下BAT和远景,聊了聊,明确说是会给offer的,希望我仔细考虑以后要不要接受。
- 个人觉得远景的面试体验很舒适,安排也很合理,但是这个公司的业务细节我不是很清楚,最后给了我20K,应该是sp了;综合考虑还是拒了。个人感觉,面试也是了解一个公司的过程,面试体验好的公司,公司印象也很加分。给远景的hr小姐姐比心。
百度
- 一面:来写个算法题吧,先来个简单的(不记得题目了);然后让写一个找出两个字符串的最长公共子串的长度,这个应该是用dp,但是一时间我不记得思路了,只好现想,当场想了一个思路出来,勉强通过;死锁知道么,必要条件?怎么解决?银行家算法比较偏理论,实际呢,有没有比较实用的方法?调度算法知道吗,说说;TCP、UDP区别…一面比较基础,结束了面试官说会给我过,实践能力不错,基础可以再补一补,好好准备二面吧
- 二面:虚拟内存知道么,虚拟内存大小一般多大,什么决定的?好,来,写算法题吧,写一个不用乘法的乘法运算函数,我:这题简直不用想,手到擒来;完事儿了又来了一题,题目不记得了,也不是很难,很快写完了;好,继续问基础,说说你看的深入理解C++内存模型,来说说;redis你也看了,说说redis的删除机制,我:如此这般…;又问了一些基础,基本都答出来了,很快就结束了,临走的时候,面试官说,三面和二面节奏差不多,我这边觉得你还可以,好好准备。
- 三面:来,自我介绍下,平时看足球么,我们来分析一下,世界杯小组赛一个球队至少赢多少球才能出线,我:拿到手很慌,不过很快冷静下来,用自己现想的方案,分析了一通,不过最后答案并不对…但是思路应该是对的,面试官说就算过了,只是想看看思路;然后又问了很多场景题,这一面没问技术,有点像综合面吧,但是面的时候还是挺紧张的,智力题和场景题真不是那么好回答的。有个小细节,我最后走的时候,面试官起身一直送到门口,受到的尊重感爆棚。公司印象+100分。
- HR现场签约,聊人生聊理想,虽然也是舔,但是这次舔的心服口服,是真的想拿一个BAT的offer。最后给了一个白菜价,无所谓了,已经做好了降薪大几万去百度的准备。
momenta
- momenta这个公司是一个做无人驾驶的创业公司,本来是不会投的,在郭嘉伟同学的建议下,我一口气投了好多个创业独角兽公司,不过很多最后都没时间参加笔试,只有这家是直接面试的,就面了。
- 一面: 我们来写代码吧;好,接着问问你的项目;好,说说C++内存模型;好,随便聊聊;过了。
- 二面: 我们继续写代码;好,来一个场景设计题;想一想怎么优化,怎么达到这个复杂度。
- 三面: 我是别的部门的,交叉面,比较看重实践能力。来,我们再来写代码;好,再写一个;随便聊聊,你喜欢这个方向这个部门么。
- hr说后面安排CEO面,说是曹旭东比较重视部门发展,每个人会亲自过;我很想说,我估计是不会去贵司了,但是,如何有机会和这个层次的人聊聊天也是可遇不可求,以后也算是曾经和旭东哥谈笑风生过了,目前正在等安排时间…
- ps:代码题难度适中,不是很大,但是需要考虑边界条件。
腾讯
- 春招被腾讯挂过,深感鹅厂难度大,不敢投,所以提前批一直没有投,踩着秋招的尾巴投了鹅厂,笔试算法题,自己做竟然全ac了,感觉接下来也会有好运气。
- 一面:我怀疑他对着面试题库海了问,连珠炮一样,先是计算机网络,从tcp问到网络层协议,udp首部多少个字节,udp数据包最大多大,mtu知道么,mtu多大,由什么决定的,tcp的拥塞避免和流量控制什么过程,好,我去拿个外卖,你来写个算法题,简单用一个哈希算法结束。然后接着问,vector和list什么区别,应用场景呢,来说说你项目,嗯,我们是后台结合内容分发算法的,感觉你挺适合的,有什么问题问我,好,就这样。
- 二面:二面面试官应该很忙,看他旁边一叠简历,就面了十分钟,我以为都凉了;问我,C++内存模型,还有进程线程一些基础。完事儿就说结束了,我很慌,他说没关系,只是赶时间,今天人很多。
- HR面: 聊人生聊理想,最有成就感的项目,拿了什么offer了,这个部门是做啥的,地域考虑么、想不想去深圳,面试状态今明两天就更新,但是offer call要等到国庆后。
经验总结
- 简历是一个重点,建议花上一到两天时间好好做一份简历出来,同时在投递和面试过程中根据面试官的考察侧重不断调整,我自己的简历大的版本就有三个,做简历第一步是详尽,第二步是精简,第三步是根据投递岗位调整。简历篇幅尽量控制在一页纸,推荐latex的简历模板;越是重要的部分越是往前面放;内容贵精不贵多,凡是简历上提到的,你自己心里面要滚瓜烂熟;项目与实习经历概括式描述一下项目课题与自己的职责和贡献,但是要留有空间,让面试官来提问,类似最有成就感的项目、项目中的难点与解决、项目改进方案,这种几乎必问点建议提前准备好台本……
- 算法题是一定要刷的,算法和数据结构是结合在一起的,这部分入门很容易,看完两本专业书籍,自己跟着实现大部分基础数据结构和算法,就没啥问题了,树和图算是比较复杂的,如果自己能实现一个红黑树或者AVL树,数据结构这部分基本可以过了。至于算法,那就是无底洞了,建议把剑指offer和leetcode前150题都过一遍,剑指的可以做到理解每一个题,leetcode我觉得看人,其实一般hard难度的基本不会问。这部分我建议量力而行,就我个人经验而言,常见的字符串相关算法题、dp问题、深度优先、广度优先、排序算法都是很常考的,建议练熟。
- 关于实习或者项目:就我个人感觉,实习或者项目其实都不是必须的,他们在面试中的作用是让面试官有可以切入的话题点,由此增加对你的了解,当然,一份高质量的大厂实习的经历是很出彩的。但也不是实习经历越多越好,质量和你的熟练度很重要,有的面试官会挖很深,通常自己的demo项目是经不起这种挖掘的,这个就八仙过海各显神通了,可以做一些适当美化,只要你能自圆其说。
- 关于准备的节奏,每个人有不同的情况,所以可以自己规划,我个人建议,编程语言的基本入门操作在七月前完成比较好。我会给出每一项内容我自己所花的时间,以供参考,希望大家可以花最少的时间达到最好的效果。
- 多与大佬交流,多水群…一个人的力量有限,有质量的讨论和一群高水平的朋友可以让这个过程事半功倍,有的细节靠自己看是看不完的,能够相互分享才能提高的更快,也更容易避坑。
书单推荐
手机打字,我就偷懒省略书名号了;很多书第一次看时间会比较久,后面过一遍就很快,一两个小时就可以过一本。
其实话说回来,所有的书都不是必须要看的,因为面试本质上是一个应试的过程,你完全可以通过刷题来补充到所有的知识点,而且只看书不刷题,看到最后会找不到重点;个人建议结合自己情况,看书和刷题相结合。
- c++ primer 读完以及做完配套联系大概需要两个月
- effective c++ 认真读完并理解 约两周
- stl源码剖析 刚开始比较难,坚持认真读完大约需要2个星期
- 深入理解c++对象模型 这本书很有意思, 2个星期也足够了
- effective stl 这个不是必选,对stl感兴趣的可以看一下,一个星期足够了
- 算法 4th 橙皮的,coursera上有配套视频(不过我没看…),适合入门,进阶的话需要多练习,快速看一遍就可以开始刷题了。
- 深入理解计算机系统 这本书不是必选,但是强烈推荐,作为一本基础书籍,完整描述了从硬件到系统层面的内容,比较经典的问题比如如何实现malloc函数,这本书里面有详细介绍,我觉得这本书读完以后,很多东西理解起来会比较顺畅。比较厚,但是易读,一个半月到两个月可以完成。
- 现代操作系统 基本款 没啥好说的了,进程线程、调度算法、内存管理等章节比较重要,别的可以适当略过,其实一到两个星期也就够了。
- 计算机网络 自顶而下方法+TCP\IP详解 卷1-2 同基本款,应用层和传输层需要仔细看一下,TCP和UDP是重点,TCP是重点中的重点,时间有限的话不用看全部,精华部分两三天可以速成。书上举例如何从无到有设计出一个可靠、安全的全双工通信协议,对于理解tcp的过程很有帮助,比死记硬背强多了。
- Redis设计与实现 我不了解mysql底层,相对来说这个内容少,大概一个月可以弄清楚,这个是可选项,看个人兴趣
- muduo网络库 陈硕大大的作品,初看会觉得不连续,很晦涩,但是有充满工程实践经验的思考,想从事后台开发,了解C++多线程和网络库的,可以认真读一读,可选项。我照着他的原理跟着写了一个log库和一个基本的网络库,我觉得启发很大。
- Linux高性能服务器设计 可选项,做CPP后台的多了解没有坏处
- 鸟哥系列 Linux方面的经典,当然,其实我觉得这个里面绝大多数知识点你可以通过百度来解决,但是前人的梳理会让你能把一些点串起来。
一个免责声明:
总结一下,本身我比较喜欢看书,所以会比较重视看书这个方式,而且一般书上的描述会兼顾来龙去脉和深度,有助于进一步的学习和实践。具体怎么办看个人习惯。
开源库学习推荐
- muduo C++11 高性能网络库 github地址: https://github.com/chenshuo/muduo.git
- redis C语言实现的高性能KV数据库 github地址: https://github.com/antirez/redis.git
- level-db 谷歌大神jeff dean实现的C++11高性能KV数据库 github地址: https://github.com/google/leveldb.git
资源分享
- 分享一个Latex简历模板:链接:https://pan.baidu.com/s/1WrPO9pALAkztTlNJFKCLBA 密码:e631, 怎么用latex,可以详见:https://blog.csdn.net/King_DJF/article/details/79122669
- 之前和一个群里的小伙伴一起整理了很多基础问题和答案,每次面试前都会过一遍,后面有空整理出来,供大家需要的自取。
最后
祝好。
最最后
觉得文章对你有帮助的,欢迎扫码关注我的公众号,我会时不时的分享我的学习经验、收获。