23届秋招 | 四非选手上岸互联网经验分享
- 个人背景
- 心路历程
- 小小建议
个人背景
大家好,先简单概括下自己:
- 学历上,本硕广东工业大学机械专业;
- 荣誉上,值得说的就是“挑战杯”的国家级二等奖(但职责是结构设计)以及相关一二等奖学金,都是本科拿的,研究生过的狠平淡;
- 读研上,课题是工业机器人领域,比较偏向工程,至今尚未发表论文/专利;
故四非(非985211学历,非科班,无实习,无计算机论文竞赛)情况下,仍然渴望获得互联网高薪Offer,怎么办?
所以,我想做这次分享的原因主要有两点:
- 获得互联网高薪Offer的秋招经验分享贴,几乎本硕92学历、相关科班生、优质实习经历、计算机竞赛/论文等占至少一样。那么,都没有的普通学生该怎么做?
- 公众号拓跋阿秀@拱白菜的阿秀 是我前进动力的关键因素,故想在这里激励更多和我类似经历的朋友们;
心路历程
我本科方向比较偏纯结构,碰没碰过编程呢,可能单片机的跑马灯呼吸灯、MFC的课程设计就是我的极限了哈哈。在本科团队中认识了许多计院、信院的师兄师姐,获得腾讯、华为、京东、阿里的工作,甚是羡慕,尤其被一句话打击到了:机械的工资这么低吗?所以,眼红了就要行动,读研转行!我也想要互联网高薪Offer!这段故事就从研究生说起:
- 迷茫期。
研究生入学,因为本人是机器人实验室,打听后身边的师兄师姐使用Linux+Cpp比较多,期间搜索了许多学习路线与经验贴,这里不免吐槽,Linux+Cpp学习路线繁多,有布满几十条学习分支的,有张罗琳琅满目的书籍的,作为小白的我压根不知道怎么学习和规划;而经验贴很少遇到亲民的,要么打ACM、参与开源,要么学历好有实习,凡此种种,人与人之间的距离感油然而生,浑浑噩噩的,研一上学期只能抱着C++Primer书在研究生课堂上先看着。
2021年2月19日,印象比较深刻,这天我还在外面逛街,闲着通过吴师兄学算法(师兄推荐的)的文章看到了拓跋阿秀的文章《逆袭进大厂》,出于好奇,我继续看秀哥的文章,突然翻到双非渣硕的秋招之路总结(已拿抖音研发岗SP)文章,傻傻站着,反复看着这篇文章,心想,这就是我要的!为什么呢?我当初作为小白,就是需要一个经历相似,努努力就能够复刻,只管努力,剩下的交给时间证明的成功案例,而秀哥的经历就是这样的,借用里面的一句话:正所谓,天道酬勤,你付出汗水和努力,剩下交给时间就好!所以,感谢秀哥,自那以后,信心大增,慢慢沉淀,不再迷茫。
- 沉淀期。
这是漫长且寂寞的阶段,建议:同行人越多越好(所以我申请加入了秀哥的交流二群,参加秀哥的寒假打卡活动),路线越清晰越好(我参考秀哥的路走,会再根据群友的建议额外补充学习),心态越坚定越好(两年不到的时间,相信自己,不要顾虑太多)。
走Linux+Cpp后台的路线需要学的基本知识挺多的,虽然都是科班应该学的,但面试确实就考察这些不变的基础知识,有时间的话还是需要从书籍中去学习。这里只是讲述我个人大致经历,仅提供参考。
编程语言:这个基本按照秀哥的路线走就行了,比如B站黑马程序员的C++学习视频、《C++Primer》、《深度探索C++对象模型》等,掌握Cpp常见八股不是问题。
数据结构与算法:这里我主要是看了MJ小码哥的恋上数据结构与算法1-2季课程,他梳理了包含数组、链表、平衡树、哈希表等数据结构与十大排序、字符串匹配、DP等算法的Java代码实现。数据结构个人认为前期学思想是最重要的,后期再关注实现细节。例如通过侯捷叔的《STL标准库》学习相关数据结构的实现,如List内置了一个虚拟Head节点来管理链表,简化了增删函数的代码设计;循环队列可以基于动态数组设计,也可以用链表设计(避免扩容影响性能),亦可以入STL的1个中控+n个缓冲区设计,它们的优缺点都值得去探索与思考,比如数据局部性,遍历性能、扩容取舍等;哈希表STL基于动态数组+链表实现,而JAVA是动态数组+链表/红黑树;另外STL还有许多值得学习的细节,例如sort、copy等利用或类型萃取在性能上的设计等,一二级内存池alloc的设计。这些都是基本可以拿来和面试官吹嘘的知识,更进一步,在数据结构多线程安全(迭代器失效情况等)、锁粒度优化(例如锁哈希表的链表头节点而非表,epoll锁红黑树节点而非树等),也是我们进一步学习(吹逼)的内容。
计算机网络:这里我为了先入门,听取了秀哥的建议,先看了韩国尹老师的一本《TCP/IP网络编程》即日本户老师的《网络是怎么连接的》,之后也看了黑皮书《计算机网络自顶向下方法》和《TCP/IP详解》,另外还有JK专栏的盛老师的《网络编程实战》,主要选看应用层、传输层和网络层的知识,全看当然是没时间的。另外可以通过小林Coding的公众号图解网络进行补充,整体学下来基本能够掌握TCP/IP、HTTP、网络安全等知识。最重要当然是TCP,所以为了体现出实践,我也完成了斯坦福CS144一个TinyTCP的课程设计。基本上,和面试官侃侃挥握手、HTTP的演化、安全加解密思想等应该是没问题的。但个人感觉网络最重要的是需要把知识给串起来,比如宏观上知道浏览器到服务端之间发生了什么,DNS解析、路由、缓存、分布式等;微观上了解下内核收发包过程,bind、listen、accept、connect等系统调用做了什么。这里尽管很细,但在面对面试官提出的场景题或基本八股时,我们可以自由发挥,畅所欲言,面试官并不强求我们回答正确,而是看我们的积累,能够达到怎样的思考层次,不知不觉中,面试官会认可你的学习主动性与探索热情。
操作系统:这里我也是主要看的黑皮书《CSAPP》,这本书真的能提高我们的专业认知,可能刚开始会很枯燥和困难,但我个人是多看几遍的性格,读厚再读薄,花多点时间,这是值得的。这里也推荐B站的一个up主九曲阑干,他做了CSAPP的伴读系列短视频,能帮助我们去理解书上的内容,真的很赞。另外还看了《Linux内核设计与实现》和JK专栏’的《趣谈Linux操作系统》,这两个是非常硬核的内容,描述了进程、调度器、锁、内存管理等操作系统核心知识的实现思想和细节,当我和面试官侃侃自旋锁和互斥量的上锁原理和细节,再引申进程上锁到争锁过程,再引申调度开销,这何尝不是和面试官展现自己的机会呢?另外还看了《操作系统之哲学原理》这本书,风格我太爱了,我当作小说来看了。
数据库:这块几乎没有准备,我只看了《Redis设计与实现》,这本书把Redis的大概内容讲述的很清楚了。另外面试中MySQL出场率也很高,有时间的小伙伴建议也可以准备一下,我直接和面试官说了不会,是有些尴尬的啊哈哈哈。
项目:本人的项目也是做WebServer,也是秀哥推荐的,B站也有该UP开发过程的视频,是很有意思和挑战的一个项目,面试过程中几乎都问这个项目。同时过程中可以同时阅读《Linux高性能服务器编程》和《Linux多线程服务端编程》和《UNP》(选看)。
- 收获期。
七月底我才开始进入秋招状态,力扣也才刷了508道题(包含了剑指),大部分题也完成了二刷三刷,这里也推荐使用CodeTop来帮助过过高频题。秋招总共投了83家企业,获得笔试29家,入面共7家,先感叹一波寒气~今年的秋招让我感觉算法的作用就是用来解决笔试的,面试中没有比较难的算法题。
个人投的比较统一,只有C++开发、后台开发和测试开发。笔试中尤其自动驾驶和游戏厂的笔试最难,几乎没A一道题。而广州四大坑的笔试真的要吐槽一下,txt编程很难受啊拜托,而且C厂和SQ让人感觉奇怪,两道编程题都全A,选择题做的也很自信,却直接感谢信,无语子。
提前批仅多益网络给予了反馈,问的比较简单,个人感觉良好但最终还是挂了,第一次面试滑铁卢告终。
正式批故事开始,8.12猿辅导服务端发来面试邀请邮件,那时我正吃着烤肉,我欣喜若狂,思绪乱飞,开心到爆炸,心情就像是荒凉沙漠中出现一片绿洲,珍惜机会,终于在9.9中秋节前得到OfferCall,HR小姐姐人美声甜,感恩猿辅导,你是我的神!是你把我所有沮丧的心情彻底清空!再之,快手客户端无需笔试就于8.26约面了,突如其来的紧张,最终感觉是运气+实力9.20号收获第二个意向,继猿辅导之后的第二个好消息!紧接着就是美的、4399、深信服、金山wps的面试邀请,由于已经满足于已有的意向,故将机会留给其他朋友们。
小小建议
秀哥提供的学习路线和学习资料,已经完全支持你获得一份互联网高薪Offer了,关键就只是“朋友们,花时间,将其吸收”。
学习习惯上,好记性不如烂笔头,不管读书还是看视频,多记录笔记,本人用的是有道云笔记、MarkDown和幕布,复习起来效率会很快的,切记,笔记要用自己的语言描述,而不是简单的复制粘贴哦。
学习思路上,不需要一下子就急着把一本书学完,看书是不需要按照顺序,先把主要的、重要的看完,有剩余时间再看别的点,如果不知道什么知识比较重要主要,可以去看看牛客面经。
想分享的就是这些了,想再对四非普通学生说:道阻且长,扎实的计算机基础是可以获得面试官的认可的,加油。所以,已经有许多各式各样的成功案例摆在你的面前,希望能够激励你们,用B站UP稚晖君一句话收束:“越努力越幸运”。