四非选手,上岸互联网后端/服务端开发

2023-01-05 18:03:51 浏览数 (1)

作者:阿秀

这是阿秀的第「197」篇原创

你好,我是阿秀。

前几天我在公司上班的时候,一边戴着耳机听歌,一边写码,激战正酣的时候,手机上传来一阵阵震动,我掏出手机一看原来是牛客网上有人艾特我。

我点进去一瞅,原来是牛客网上一位学弟@两年赛跑在他的秋招总结中艾特我了。

细看下去发现这位学弟在阿秀的校招二群中,算是关注我比较久的一位粉丝了。

他就读于广东工业大学的机械专业,在帖子标题中戏称自己为四非专业毕业,也就是非985、211学历、非科班、无实习、无计算机论文竞赛经历的四非学生。

最终也顺利拿到猿辅导服务端开发以及快手客户端两个互联网offer,但他并没有选择接着面下去,而是接下来的面试邀约,如深信服、4399、金山WPS等公司的邀请直接拒掉了,将机会留给其他人,留给像他一样的非科班选手,这里阿秀看到就直接留言点赞了!

阿秀在看完他的分享后觉得很是不错,今天跟大家分享一下,以下是原文,其中的我代表这位学弟本人,他在牛客网上的昵称为:"两年赛跑":

原文链接:https://www.nowcoder.com/discuss/1073121 作者:两年赛跑 编辑整理:阿秀

1、个人背景

大家好,先简单概括下自己:

  • 学历上,本硕广东工业大学机械专业;
  • 荣誉上,值得说的就是“挑战杯”的国家级二等奖(但职责是结构设计)以及相关一二等奖学金,都是本科拿的,研究生过的狠平淡;
  • 读研上,课题是工业机器人领域,比较偏向工程,至今尚未发表论文/专利;

故四非学生(非985211学历,非科班,无实习,无计算机论文竞赛),仍然渴望获得互联网高薪Offer,怎么办?

我想做这次分享的原因主要有两点

第一:获得互联网高薪Offer的秋招经验分享贴,几乎本硕92学历、相关科班生、优质实习经历、计算机竞赛/论文等占至少一样。那么,都没有的普通学生该怎么做?

第二:公众号:拓跋阿秀的号主秀哥是我前进动力的关键因素,他在牛客上的昵称是拱白菜的阿秀,故想在这里激励更多和我类似经历的朋友们;

这就是我想做此次分享的原因所在。

2、心路历程

我本科方向比较偏纯结构,有多偏呢,比如说你要问我碰没碰过编程,单片机的跑马灯呼吸灯、MFC的课程设计就是我的极限了哈哈。

在本科团队中认识了许多计院、信院的师兄师姐,获得腾讯、阿里、华为、京东的工作,甚是羡慕,尤其被他们的一句话打击到了:机械的工资这么低吗?

我知道是他们的无心之失,也不是真的看不起我之类的,他们没有恶意是不错,但这句话真的刺激到我了。

所以,眼红了就要行动,读研转行走起!我也想要互联网高薪Offer!

这段故事就从研究生说起:

1、迷茫期

研究生入学,因为本人是机器人实验室,打听后身边的师兄师姐使用Linux Cpp比较多,期间搜索了许多学习路线与经验贴。

这里不免吐槽,Linux Cpp学习路线繁多,有布满几十条学习分支的,有张罗琳琅满目的书籍的,作为小白的我压根不知道怎么学习和规划;

而经验贴很少遇到亲民的,要么打ACM、参与开源,要么学历好有实习,凡此种种,人与人之间的距离感油然而生,结果就是浑浑噩噩的,研一上学期我只能抱着C Primer书在研究生课堂上先看着。

2021年2月19日,这天我印象比较深刻,到那时我还在外面逛街,闲着通过吴师兄学算法(师兄推荐的)的文章看到了拓跋阿秀的文章《逆袭进大厂》。

出于好奇,我继续看秀哥的文章,突然翻到 双非渣硕的秋招之路总结(已拿抖音研发岗SP)文章,看完了我就在那里傻傻站着,反复看着这篇文章。

心想,这就是我要的

为什么呢?我当初作为小白,就是需要一个经历相似,努努力就能够复刻,只管努力,剩下的交给时间证明的成功案例,而秀哥的经历就是这样的。

借用秀哥上面那篇文章里面的一句话:正所谓,天道酬勤,你付出汗水和努力,剩下交给时间就好!

所以,感谢秀哥,自那以后,信心大增,慢慢沉淀,不再迷茫。

2、沉淀期

这是漫长且寂寞的阶段,过来人给个建议:同行人越多越好,因为我就是这么干的。

我申请加入了秀哥的交流二群,参加秀哥的寒假打卡活动,我参考秀哥的路走,路线越清晰越好。

然后再根据群友的建议额外补充学习,心态也越来越坚定。

还有两年不到的时间,相信自己,不要顾虑太多。

走Linux Cpp后台的路线需要学的基本知识挺多的,虽然都是科班应该学的,但面试确实就考察这些不变的基础知识,有时间的话还是需要从书籍中去学习。

这里只是讲述我个人大致经历,仅提供参考。

编程语言:这个基本按照秀哥的路线走就行了,比如B站黑马程序员的C 学习视频、《C Primer》、《深度探索C 对象模型》等,掌握Cpp常见八股不是问题,这是秀哥的C 学习路线:https://interviewguide.cn/notes/02-learning_route/02-language/01-C .html

数据结构与算法:这里我主要是看了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》(选看)。

3、收获期。

七月底我才开始进入秋招状态,力扣也才刷了508道题(包含了剑指),大部分题也完成了二刷三刷,这里也推荐使用CodeTop来帮助过过高频题。

秋招总共投了83家企业,获得笔试29家,入面共7家,先感叹一波寒气~今年的秋招让我感觉算法的作用就是用来解决笔试的,面试中没有比较难的算法题。

个人投的比较统一,只有C 开发、后台开发和测试开发这三类。笔试中尤其自动驾驶和游戏厂的笔试最难,几乎没A一道题。

广州四大坑的笔试真的要吐槽一下,txt编程很难受啊拜托,这年头为啥还让我用txt文档手写代码呢。。。

真的是:”庙小妖风大水浅王八多“,我在面大厂的时候也没遇到过这样的啊。

C厂和SQ让人感觉奇怪,两道编程题都全A,选择题做的也很自信,却直接感谢信,直接无语子。

提前批仅多益网络给予了反馈,问的比较简单,个人感觉良好但最终还是挂了,第一次面试滑铁卢告终。

4、正式批

8.12猿辅导服务端发来面试邀请邮件,那时我正吃着烤肉,我欣喜若狂,思绪乱飞,开心到爆炸,心情就像是荒凉沙漠中出现一片绿洲。

我很珍惜这次机会,终于在9.9中秋节前得到OfferCall。

HR小姐姐人美声甜,感恩猿辅导,你是我的神!是你把我所有沮丧的心情彻底清空!

再之,快手客户端无需笔试就于8.26约面了,突如其来的紧张,最终感觉是运气 实力9.20号收获第二个意向,继猿辅导之后的第二个好消息!

紧接着就是美的、4399、深信服、金山wps的面试邀请,由于已经满足于已有的意向,故将机会留给其他朋友们,我不做offer收割机,已经很满足了。

3、小小建议

秀哥上岸后将它所用过的资料都免费分享出来了,也就是说他提供的学习路线和学习资料,已经完全支持你获得一份互联网高薪Offer了,关键就只是 “朋友们,花时间,将其吸收”。

学习习惯上,好记性不如烂笔头,不管读书还是看视频,多记录笔记,本人用的是有道云笔记、MarkDown和幕布,复习起来效率会很快的。

切记,笔记要用自己的语言描述,而不是简单的复制粘贴哦。

学习思路上,不需要一下子就急着把一本书学完,看书是不需要按照顺序,先把主要的、重要的看完,有剩余时间再看别的点,如果不知道什么知识比较重要主要,可以去看看牛客面经。

我想分享的就是这些了,想再对四非普通学生说:道阻且长,扎实的计算机基础是可以获得面试官的认可的,加油

所以,已经有许多各式各样的成功案例摆在你的面前,希望能够激励你们。

最后我用B站UP 稚晖君一句话收尾:“越努力越幸运”。

0 人点赞