一个C++程序员的校招总结
哈哈,正式入职成为打工人了,没错,我选择了ByteDance
欢迎各位牛友们加入到ByteDance,
我的字节内推码,UCQVJAU
我的字节内推码,UCQVJAU
我的字节内推码,UCQVJAU
内推帮忙更进流程,修改简历,以及校招疑难解惑
欢迎大家加我的微信(BOOMCHAOCHAO),及时了解内推进度 (ps:字节伙食不赖)
投递链接: https://jobs.toutiao.com/s/2BLTET3
欢迎来ByteDance和我做同事哈😊😊笑脸
10.30更新
这周可以算作开奖周了,哈哈,我发现我运气还真好,offer开出的奖质量还都不错的哈,最近几周会陆陆续续把学习资料和笔记整理好放在Github上,欢迎大家多多指教,贴一个Github链接,目前把算法总结放上去了
https://github.com/BoomChao/Interview_Summary
校招总结
NOTE:大家有什么问题直接在帖子下面留言就可以了哈,我有空会定时查看回复的,给我发私信的人太多了消息容易被忽略掉
自我介绍
楼主非科班,本科就读于某一所二本学校,专业为土木工程;之后研究生到一所一般的985院校读了力学相关专业,因为读研期间会用到C++语言,去年九月份就决定去互联网参加工作,之后便开始了今年的秋招之路,我大概正式准备是从今年年初开始的,除了算法这一块是去年10月份左右准备,半年左右的时间感觉利用好是足够的,这半年我基本没有节假日,没有周日,事实证明付出就会有回报的;
我是研究生,所以除去自学计算机知识外还有一些自己科研上的任务,但是今年年初时候我对导师表达我我对科研不感兴趣,想去互联网工作,我导师这半年几乎没有管过我,给我安排的活都很轻松(非常感谢我的导师),我认为大家要是觉得时间不够用,可以主动向导师表达一下自己的想法,我感觉一个好的导师都是盼着自己的学生好,所以你有想法,敢于行动,老师自然而然也会很支持你,就怕你对于老师分配的活也不想干,计算机这边也没花时间好好学,最后落得个竹篮打水一场空;
顺便说一句,互联网大厂真的欢迎任何对技术有热爱的同学,希望像我这般非科班而且学校又不是太好的同学千万不要对自己持怀疑态度啊
投递情况
先来说说 BAT 吧,估计大家都投了这些大厂
百度:提前批就投递了,结果一个半月没有人约我面试,最后等到正式批次将近9月中旬才给我发笔试链接。。。,因为后来想好了不去北京,所以笔试也没太放在心上,结果国庆节后约了我面试,三面一上午走完(三面面试官居然是我校友🤣),目前等结果中(已OC)
阿里:第一志愿阿里云 (结果投递没几天发现阿里云发了大量意向,我投的有点晚,阿里校招开始三周我才开始投),结果简历挂,转到了第二志愿飞猪,结果前前后面面了6次,还不算上笔试,一共换了5个人; 已OC
腾讯:这个记得很清楚,腾讯效率好高,投了没几天就约了面试,面试官是个小哥,人挺好,之前约面就问了我介不介意工作地点(本人家在南方),所以南方这边岗位都可以,但是万万没想到我这个腾讯云的岗位在西安,于是就没有下文了。。。
接下来是 TMD
字节跳动:提前批投的后端开发,结果简历挂;正式批次发了笔试链接 (a了3.5道) 很快就约了面试,一二三面一个星期走完,隔了一个星期收到了意向书
美团:哈哈,美团应该是大厂内第一个开始提前批的吧,但是提前批只开放移动端岗位,由于不知道自己水平咋样,所以美团是我面试的第一个大厂,果断投了,两轮面试隔了一周,每一轮都将近一个半小时,二面完隔了一天约了HR面,当天下午收到意向书
滴滴:滴滴到现在(直到国庆节)貌似正式批都没有开,我当初是牛客网投的提前批,当天一二三面都面完了,但是三面全程都在问设计题,对于我这种没有互联网项目,没有实习的家伙无疑是暴击。。。
快手:因为不想去北京,投的杭州,快手效率是真高(和字节差不多),一面过后立马约的二面连着面了两个小时(面完没多久阿里一个电话打过来面了三面,面了两轮快手太疲惫了,阿里居然有几个很简单的问题忘了一些,不过幸好还是过了),从投简历到拿到意向书只花了两周
华为:cloub BU,前面面了这些大厂,后面面华为就很简单啦(今年貌似华为笔试比较难,但是只要100分就可以进面试,楼主本人9.3号机考,OC了后两道拿了500分直接进面),一二面一上午面完的,三面是主管面,我投的是华为南研所,但是主管看我面评比较好,建议我来深圳,后来HR问我期望薪资,我毫不客气的说了一个很香的价格,HR说国庆节后发offer
大疆:无人机巨头,但是面试没有我想象的那么难,一面是技术面,小哥人很严肃,自我介绍完后没有问项目,直接对着简历问,比如我简历上写了熟悉常见的关系型数据库MySQL和非关心型数据库Redis,面试官就问我这两种数据库的适用场景;一面纯问技术,面了将近三十分钟
二面两个Leader面的,全程问项目,还问了一些底层原理,问我的是网络相关的问题,具体问题忘了,反正是我当时说了一种常见的网络攻击,面试官一直问这种网路攻击的原理及其怎么防范的
终面和华为一样是主管面,这个主管感觉不太友好,总是毫不留情打断你讲话,面了半小时左右(目前等大疆开奖)
面完上面 BAT 和 TMD 这些差不多也佛系了, 因为心里想去大厂,所以下面的公司即使拿了也没有太大意愿去
深信服,base选的长沙,开的价格在长沙很香👍
最右(HR说15~21薪资,冲大厂困难的同学不妨考虑这些优质的创业公司😃)
度小满(百度金融分出来的,也在北京)
小红书,面试拖得好晚啊,终面约的国庆节后,三面已结束
拼多多,约的国庆节后面试,三面已走完(感觉去了多多身体吃不消😂)
校招总结
可以看到楼主秋招并没有海投,北京的公司拿了美团的意向后,像 京东 新浪 就没有投递(建议大家把时间花在刀刃上,实在不想去的公司不建议花时间去准备,面经也要有目的性的看),比如我对游戏开发不太感兴趣,所以网易游戏投了但是要么是没有参加笔试,要么是面到一半把流程终止了;
从我面试经验来看,非科班而且学校还不太好的小伙伴进大厂都不太容易,像我的本科学校就给我拖了后退(但是还是很感谢它培养了我四年);另外面试是一个双向选择的过程,不要在面试的时候把姿态放的太低,说话尽量要流利自信一点;最后预祝大家都能拿到自己心宜的offer
其实从整个秋招来看,感觉像我这种非科班,没实习而且学校还不太好的人拿大厂offer还是比较难,但是互联网技术更新迭代的很快,所以面试官倾向于喜欢一些具有快速学习能力的人,所以即使你非科班,无项目无实习,但是只要把基础打牢,让面试官看到你对这个有热情 (我印象特别深就是我面阿里,面试官看我非科班而且问题基本都回答出来了,非常好奇我怎么学的,我说我都是自学的,面试官还叫我加他微信,非常欢迎我去阿里),照样可以拿到offer
所以重要的事情再强调一遍,校招我认为重要的有,扎实基本功 + 自信流利的表达 + 及时复盘
一、基本功直接决定你能否拿到offer,编码能力不扎实
二、自信流利的表达能让面试官觉得你很好融入这个团队,因为面你的面试官一般都是你以后的leader或者同事,面试官更原意要一些交流顺畅,沟通能力比较强的同学;
三、及时复盘是针对面试中不会的问题在面试完后及时总结,找出自身原因,争对这些薄弱点加强巩固;千万不要等到自己完全准备好了再去面试,这是不可能的,你总有不会的,一定要一边面一边补充强化自身,如果不放心可以开始拿一些小公司练练手,不要一上来就冲大厂
- 建议有时间能去实习的同学还是去实习一下吧,要不然只凭基本功去面大厂要复习的东西很多,这样比较难坚持,而如果有大厂实习首先你多了一次实习转正的机会,其次你有实习基本也有项目了,和面试官也有得聊了
- 而且我认识好多校招的朋友,看他们有实习的基本面试都是聊聊天问实习项目
写在后面
楼主转互联网真的是对这个比较感兴趣,而不是冲着钱去的,在面试的过程中不止一个面试官问我为什么转互联网;互联网技术更新真的很快,而且内卷也很严重,所以对于每个同学,进入互联网真的要看你有没有兴趣,如果你奔着工资去,想着互联网薪资高,但是到你从业了,996是少不了的,想想单纯为了一个薪资去做自己不喜欢的事情又有什么意思,这也就是为什么有些同学进大厂工作了两三年薪资一直都没有涨过,换言之,如果选择其他,比如我好多同学选择会家乡去考编考公,虽热赚的少了一些,但是自己业务时间很多啊,有很多时间培养自己的爱好
互联网真的是要保持终生学习的习惯,不像我之前的土木行业你还能吃吃老本,土木那套学习理论用到互联网完完全全是不行的了,真是隔行如隔山
所以,找准自己定位就好,和别人盲目攀比没有任何意义,做好自己 !!!在校招过程中肯定也会焦虑(PS:特别优秀的人除外),我当初记得整个七月份简历投了好多好么就是直接挂掉了(比如OPPO,TP-Link,shoppee 这种比较看重学历的公司),要么就是一个面试通知都没有,看着当时校招群里面有人都拿到意向了,心里特别着急,整天不断地刷邮箱看有没有面试或者笔试链接;看着群里有人说自己拿到意向了,我当时做了一个非常正确的决定,我退出了所有的校招群和内推群,一门心思把时间投入到学习上,别人拿就拿吧,我接着学一直学到拿到offer,这种状态一直持续到八月中旬,一个一个大厂纷纷发来面试链接,之后流程就推进的很快了,面完没多久就纷纷给了意向;这说明坚持下来结果总归不会太差的!!!
学习总结
因为我了解到校招基本是对基本功的考察,所以我的学习路线也很简单,他考什么我就准备什么,针对性的复习
主要为 (重要性依次递减):
数据结构与算法 + 编程语言 + 操作系统 + 计算机网络 + 数据库(MySQL, Redis) + 设计模式(考的很少)
一、数据结构与算法
对于一个C++程序员,或者说对于一个后端开发工程师,这个是直接决定你能不能拿到offer,但是相对而言这个是最好准备,也是最难准备的
最好准备是因为这个记得很少,不像其他几项 (比如操作系统里面的内存管理,中断处理流程这些就能写篇千字的作文)
最难准备是因为算法很难坚持
我一共刷了500道题,总提交次数6000次(PS:你们看到的缺空的地方是要么是因为手头有项目,实在心累没时间刷题,或者就是回家了没带电脑,现在看来刷一道题一天也花不了多长时间,还是贵在坚持);现在即使拿到了校招的offer每天还是在坚持 Leetcode 的每日一题挑战,想要从事后端开发职位,算法你无论如何都躲不掉的,如果你怕算法题,不想去做算法题,那么我只能说后端开发可能并不太适合你
下面是我的一个学习路线:算法一定要勤思考,多动笔在纸上写写画画思路(面试也是可以用笔的)
1、首先主推 《大话数据结构》,建议先把这个上面的例子全部动手敲一遍,中间的图论的部分可以先不看(图论比较难,放在后面集中攻破即可),先我数据结构这一大类吃掉
2、《剑指offer》,这本书差不多算上扩展的题目不到100道题,建议反复刷完两三遍,这个上面有不少 LeetCode 同款题型,这个都会了之后刷LeetCode就方便了,中文版的 Leetcode 有一个剑指offer专栏,可以在上面跑case看看自己写的能不能通过
3、《算法小抄》,看这本书的原因是学学作者怎么归纳总结的,为后面自己的总结打下点基础,注:别人写的再好,总结的再好都是别人的,一点要总结吸收成自己的
4、Leetcode,强烈建议刷英文版,英文版,英文版,不仅能看到国内外各路大神代码风格,还能学习学习英文,无论如何前400道一定要滚瓜烂熟,我的习惯是一系列的题要归纳总结,这样个个击破,虽然 Leetcode 有分类专栏,但是真的不建议你去按照分类做(而且这样会养成思维定势,比如你到DP专栏去做,无形的就告诉你这道题解法使用动态规划去做),我前500道题都是一道道按照顺序去做的,自己归纳总结各类题型的解法
5、牛客大厂笔试真题,这个临近校招的时候可以刷刷,因为笔试一般都是有点难度的,看看大厂笔试题型还是很有必要的
补充一句:千万不要碰到 Hard 级别的题目就不做,因为大多数大厂的笔试题都是hard级别的,这些难题平常也要有意识的做做提升自己水平,像今年华为,腾讯,网易游戏笔试就比较难,如果笔试就直接被刷掉了,那还谈啥面试
⏱时间线:建议上面这些在6月之前全部做完,六月后可以每周抽时间做一两套牛客大厂笔试题,逐渐掌握笔试题的规律,并且及时复盘看看哪里比较薄弱,比如 LC 上关于图论的题目很少,但是笔试这类题很多,于是我便故意在牛客上找一些比较难的图论的题来做做,查漏补缺,结果效果很好
而且这个时间点有些东西要可以去记忆一下,不太建议每天背太多时间那些八股文,我都是理解的基础上记忆,另外算法我是没有看过视频的,其他的都看过,算法如果不懂建议去网上找那种有图的算法文章来看,一图胜千言;
推荐一个算法优质的公众号博主《五分钟学算法》,图解算法很到位(就不放截图了)
我感觉只要算法稳了,其他的就很好准备了(因为其他的即使你不会,实在不行背下来也能应付面试,但是算法你能背的下来吗,题目一变岂不是又不会)
二、编程语言
楼主是CPP选手,建议大家编程语言Java和CPP选一个,不过按照今年的校招形式来看,我投的大都是后端开发,用CPP的岗位太少了,除了几个厂做广告推荐搜索这一块用cpp,就连我面的百度(这个我认为主打CPP的厂,面试官居然和我说百度现在CPP岗位很少,Java和golang居多🤣)
但是CPP又一个好处是能做游戏,游戏开发只要CPP,其实从楼主本人的经验来看,你会了CPP,其他语言也能很快上手,到了公司也不会一直都只用一门编程语言,两周上手一门新的编程语言是一个程序员的基本素养
下面介绍下的CPP学习路线:
1.《C语言程序设计》-谭浩强;着重把里面的指针内容深入看看,其他内容快速过,这本书还是很经典的
2.《C++程序设计》-郑莉;当初看这本书是实验室师兄推荐的,另外网上也能找到对应的课程,这本书写的还是很好的,书后面的一些小 demo 写的也很好
3.《C++Primer》;经典中的经典,至少应该看三遍以上,尤其后面的STL的特性,比如对容器,迭代器,仿函数,以及模板和泛型这些内容重点看,面试问的太多了;而且这些东西区分度很大,就比如我经常会被问到右值引用的作用及实现,有的人就想着去网上找答案,殊不知这本书给出了已经给出了非常详细的解答
4.《STL源码解析》;不得不说STL的引入真的是CPP开发人员的利器啊,面试官对这个也很喜欢考察,看看源码实现了解下底层实现原理,有的内容不需要细看,面试的时候问你双端队列的实现,你大致能说出个原理以及具体的代码实现方式就行
5.《Effective C++》;说实话我感觉这本书比较深奥,没有经历过大型项目开发的人估计这些条款的原理理解的也不过透彻,算是拔高的书吧
我本人就只看了这几本书,其实你买好多书,首先你看不完(时间成本很高),其次走马观花的看还不如把一本书多看几遍,因为毕竟知识点就那些,换本书就只换了种方式重新给你讲一遍而已!!!
另外很重要一点,一定要做笔记,做笔记,做笔记,因为你记不住(反正我记不住),编程的学习最好配合代码一起来理解,这样我感觉效果最佳
比如下面就是我理解右值引用的第二个作用:完美转发;从书上摘下来的一些代码,这样的好处是面试的时候即使有些道理你讲不清,但是给面试官举个例子的话一般就很清晰了,小红书三面问了 vector 扩容的时间复杂度,我直接给他在聊天框里推导了一遍(话说Typora真是个好东西啊,之前一直用印象笔记,现在发现这比印象笔记好用多了😎)
⏱时间线:上面的东西可能比较多,我本人是一直坚持看的(到现在都在看),不断看不断总结,一直持续到校招结束,建议六月份优先把前三本撸个两三遍(第一遍看完第二篇就捡重要的,还不懂的看)
其实各个厂的面试风格不一样,如果你的面试官不是CPP技术栈可能就不会问CPP相关的东西,快手,阿里,字节,大疆全程没有问CPP知识点,问操作系统问的太多了,所以这一方面相对而言好准备一点
三、操作系统
这个面试问的很多,问的概念或者系统编程的题目均有,我记得快手二面几乎全程都是在问这个;我主要将操作系统的学习分为三个层次
从基本的 底层硬件知识 -> 操作系统本身 -> 编程阶次,系统编程和网络编程(网络变成本来打算放到计网讲的,这里一起讲了吧)
1.底层硬件知识,比如硬盘,内存,网卡这些基本的底层硬件工作原理有个了解即可,因为面试可能问到比如机械硬盘和固定硬盘的区别,磁盘读写的最小单位这些知识,其实这都是计算机组成原理的内容,我看的是《计算机组成原理》高校版本的,基本是纯文字,建议大家过两遍就行,是为了防止之后考到相应的知识点知道在书上的哪个位置去找,比如我被问到过操作系统怎么处理中断的,其实这本书上就有非常详细的解释
2.操作系统本身:不太推荐看那本大黑书《深入理解操作系统》这本书对基本功要求比较高,我看的是《计算机操作系统》-- 就是计算机同学考研的看的这本;因为操作系统面试问的偏理论,所以后期有些概念需要记忆,把这本书反复看,做好笔记,这是为了防止被问到像怎么处理中断,怎么处理异常,虚拟内存作用这类题,这种题你不会的话,把答案强背下来也行
推荐B站哈工大和清华的计算机组成原理和操作系统,来回多听几遍有好处
3.系统编程这一块,主要包括 Linux 系统的使用以及系统编程和 socket 编程的一些知识,大都需要实操
建议大家在一开始学习编程就在 Linux 下学习,安装一个虚拟机,在虚拟机里学习,这样久而久之 Linux 的一些命令自然而然就会了
Linux学习推荐大家去看B站兄弟连的《细说Linux教程》,很全面,边听边实操即可
系统编程和网络编程推荐去看《黑马的Linux教程》,这个教程很有水平,建议把里面老师课堂上的例子多实操几遍
4.另外 APUE 和 UNP 推荐大家有时间也看看,我也看过,虽然比较难,但是对自己水平拔高很有用,书上上的一些小 demo 很好
因为操作系统面试问的都比较偏理论,推荐大家去看一些网上的技术博客,特别是有图的那种,可能你看几千几个字还不如看几张图理解的透彻,另外博主小林Coding的《图解网络》和《图解操作系统》推荐大家后期看看,为什么是后期,因为前期还是要把底子打牢,别停留在表层,到时面试官一问深一点就不会了,后期再查漏补缺总结一些薄弱点即可
四、计算机网络
这个应该是最好准备的,也是最好学的
1.《计算机网络》--谢希林,这本书当字典来用,因为写的很详细,所以快速过一遍就行,留意哪些知识点在书中的哪些位置就行,防止之后一些偏僻的知识方便查找
2.《图解TCP/IP》 仔细看,基本的分层原理和各层的职责要烂熟于心
3.《图解HTTP》 专门讲HTTP的,面试问HTTP可太多了,这本书讲HTTP的知识一扫光
4.《图解网络硬件》 《网络是怎么连接上的》 这两本当作一个拔高选项
操作系统和计网建议每天都看,最好一本书规划好学习任务,尽可能快的看完,不然每天看一点很容易把自己看泄气!!!
六月之后每天拿出点时间背一背八股,因为一些知识点比如进线程的区别,中断处理流程这些问题都快被问烂了,但是还是每年都会问(我猜面试官也没啥问的了,要是问业务方面的东西估计没几个校招生会),所以就比的是谁说的更熟练了
五、数据库
这个我真没看过书,看过好多技术博客(CSDN一搜一大堆),这个面试一般会结合业务场景来问,不过基本都是关于索引,数据一致性,redis的数据结构以及持久化这些东西,问来问去就这些
直接B站找的视频看的,MySQL看的尚硅谷的,讲的超级详细
Redis看的狂胜说
另外MySQL有些厂会考SQL语法(比如百度),所以基本的CRUD得会,这个在牛客上的在线编程专栏练练就行,面试考的SQL语法都很简单
六、其他
另外就是一些边边角角的知识点了,比如设计模式,反正设计模式我就大疆和阿里问了,其他公司一个都没问,还有一些软件设计的基本原则,还有负载均衡,RPC机制等等。。。
这些问题建议直接网上看技术博客,然后做好笔记总结好,只要前期底子打好,后期这些边角料知识看面经来针对性的补充一下就行,花的时间很少
总结
千万不要等到完全准备好了再去投递,阿里云就是我的一个教训,每场面试都要准备好,除非你不想面,千万不要一上来就投大厂,建议先拿一些小厂面试练下手,找找感觉;另外面试千万不要迟到,面试过程中遇到不懂的问题不能说不会,即使真有问题不会也要先思考,把自己的想法及时和面试官沟通;
时刻保持微笑,让面试官看到你很积极向上乐观的态度,算法题一定要看清题目再写,先把思路和面试官说下,看到自己做过的题千万不要说自己做过,假装想一想把思路说出来,然后再写;另外有些面试官会问你哪一门学的最好,建议不要讲数据结构与算法(除非你对自己算法很自信)
给非科班的同学点建议:非科班(尤其是像我这种学校还不太好,专业一点不相关)想进大厂付出的努力很多,尤其是想拿sp或者更高的offer;建议能实习优先考虑实习,不能实习去Github上啃一个优质项目,之后就看你的基本功了;珍惜每一次面试,因为在我秋招过程中,面试我的面试官基本都7,8年工作经验(小红书终面面试官说他工作十几年了,我当时感叹我何德何能啊,这种大佬来面试我🤣),和这些行业的前辈交流真的受益很多,另外有人说程序35岁就会被优化掉,这个问题大家有兴趣到时面试可以问问你的面试官,他们基本都是三十多岁,看看他们现在都是什么level
最后的最后,作为一名刚刚结束秋招的2022届毕业生,从之前的焦虑迷茫到现在邮箱里面的十几个offer,努力从来都不会白费,希望过来的同学看到这个贴子都能拿到心仪的offer!!!
另外这十月底各个大厂陆陆续续开奖了,哈哈😎,大家可以猜猜我最终去了哪个厂,是华为,大疆,还是阿里,字节,亦或是快手,美团,百度,拼多多。。。
#面经##offer比较##招聘进度##学习路径##校招#