(开发岗分享帖)聊聊我是如何拿到这么多大厂offer的

作为过来人,聊聊我的秋招之路。

自我介绍:

首先自我介绍一下,大家可以叫我Jerry哥,我本硕都是一个中流211学校,本科的时候专业是通信,只学过C++/C的知识,做过几个当时看起来很牛逼的课设(对于本科生来说),不排斥打代码。研究生,我读的也不是计算机科班专业,老师对计算机这块也不是很懂,但是研究方向却是深度学习方面的。由于老师的横向项目也是比较多,所以自己平时既需要做学术上的汇报,还要参与老师的横向项目。所幸的是项目都是和敲代码相关,偏软件,也就萌生了往软开发展的想法。

斩获的offer:

Jerry 哥在2020面试期间拿到的offer:

腾讯、字节、美团、网易、pdd等互联网offer 以及 农商行、农行、招商银行、上交所、招行、深信服、华为等offer。

让我们一起加油吧:

大家都是从小白开始成长的,没有人一开始就是大佬,合理规划好自己,你也可以成为大佬,主要还是要保持不断进取斗志。

在这里我想和大家分享一下自己当时的学习路线、学习方法和一些学习资料,想要进一步交流的可以私信我。

学习路线:

我大概是2019年10月才开始学 Java。这里需要提一下,如果光学习语法而不去打代码,是很容易忘的,只有在 debug的过程中才会成长。如果你是零基础或者编程能力一般,请提早开始学,因为我之前已经学习过C++/C/Python/JavaScript等语言,所以语言的学习对我来说会轻松很多。

大家可以看一下各个后端开发工程师的招聘要求,这里以阿里巴巴的招聘要求为例子:

总结一下就是:

1、计算机基础扎实,常见的数据结构和算法要会;

2、最好掌握一门脚本语言,如 Perl,Python,shell 等,对 linux 环境有一定认识,毕竟我们是在 linux 环境下进行部署;

3、熟练编写 SQL 脚本,有 MySql 开发经验,数据库 sql 语句 crud 是日常业务;

4、掌握一***端开发常用语言,如 Java、Golang、 C,C++,PHP,.NET 等编程语言中的一种或几种;

5、有项目经验更佳。参加过大学生数学建模竞赛,“挑战杯”,机器人足球比赛,或者写过项目放到 github 上;

乍一看感觉东西很多很杂,简单总结就是:

计算机考研 408 基础+算法题+会一门脚本+一门后端语言+MySQL+Redis+一个项目,有开源经历更佳。

这是国内Top互联网的要求,按照这个路线,接下来我会告诉你应该怎么准备才能上岸。

408 基础

408=计算机网络+操作系统+数据结构与算法+计算机组成原理


😀计算机网络

面试频率:★★★★

就一本书 《计算机网络自顶向下》,如果有时间可以多读几遍,真的是一本神书。

面试中计算机网络问的概率也比较大,主要针对网络层和传输层以及应用层问一些问题。所有的问题可以基于OSI七层模型展开。

基础的问题比如:

1、tcp 和 udp 之间的区别

2、哪些协议用到了 tcp,哪些用到了 udp

3、http 和 https 之间有什么区别

4、加密方式分为哪几种(对称加密和非对称加密)

5、OSI,TCP/IP,五层协议的体系结构,以及各层协议

6、三次握手四次挥手

深入一点的有:

1、TCP 的拥塞控制是如何实现的

2、快重传和快恢复是如何配合

3、如果我计算机的 MTU(最大传输字节)设置过大会有什么影响


推荐一个菜鸟教程总结的一些知识点:

https://www.runoob.com/w3cnote/summary-of-network.html

如果有更多的时间系统的看,推荐书籍:

《计算机网络:自顶向下》 《图解 TCP/TP》 《图解 HTTP》


😀计算机组成原理

面试频率:★

计算机组成原理应该是面试当中会问到最少的基础知识了

从面向面试的角度来说,仅做了解即可,如果是平时学习的话,可以参考下面的图作为一个学习路线

推荐书籍

《计算机组成原理》

😀数据结构与算法

面试频率:★★★★★

数据结构与算法,必问项!!!!!

无论是后端/前端/安卓/IOS,家家户户必备。

数据结构与算法是面试当中的重中之重,因为不了解数据结构与算法,就好比你的汽车里没有发动机。

数据结构与算法的书籍可以说网上非常多,如果是小白可以学习 《大话数据结构》,属于比较生动形象地带你了解所有数据结构。

有一定基础了可以看看 《算法》 ,这本书比较难看懂,有兴趣的可以深挖,时间不足的话可以直接跳过。

书本上更多是一些静态知识,例如树的构成,平衡二叉树的构建,前序遍历等各种表示等等,又或者是图中结点之间关系的表述(邻接矩阵还是邻接表)等,如果没有去在实践中加深,很容易忘记。

如果想要了解多一点关于数据结构的知识,推荐当当网搜“数据结构与算法分析”+对应学习语言,像我当时就看了这本书:

只是看不实践,相当于0

这就提到了应届生常说的——刷题

这里要说一句,做题要注重方法!方法!方法!

其实我并不赞同刷题这个词,因为刷题意味着你仅仅是为了找工作而刷,如果仅仅为了记住答案或者某种目的,那么过个几个月后你肯定还是会忘记,所以我觉得做题很有必要,理解一道题更有必要,总结题目类型事半功倍。

刷题的时候我比较喜欢按照专题去做,例如有二叉树、图论、并查集、二分法、动态规划等专题,例如你只有学会了0/1背包问题才可以去做完全背包问题(关于背包问题我也做了全系列的解读,大家有兴趣可以私信我)。如果短时间内专注于专题题目中,会加深对这个数据结构和算法的理解。

我当时主要依托于两个平台做题:这里推荐给大家两个刷题网站:

https://leetcode-cn.com/

Leetcode是一个非常多人学习算法的社区,可以说现在想要进互联网大厂,都是需要刷题巩固的。

https://www.acwing.com/

Acwing是近两年才火起来的社区,我在学习算法的时候其实也很迷茫,看着生涩的题解,一开始冷启动的时候只能刷几道题。

Acwing更多是一个题解社区,由北大NOIP金牌得主yxc创办,十分适合在校学生学习。

《剑指offer》 属于入门级别的算法题了,也是属于面试中手撕常考题,一开始如果做leetcode比较吃力的话,可以先看看《剑指offer》,很多大厂的题目都是基于《剑指offer》或者它的变形。

我做的题目不是特别多,但是每一道题我都认真总结反复思考,这很重要!!因为可能几天之内你重新做这个题目还能凭借艾宾浩斯的记忆曲线,形成肌肉记忆顺利的把代码打出来。但是当时间一长,更多是要凭借你的理解去解题,在工作中更是需要通过自己的分析选择特定的数据结构,思考至上。

我做的题目很少,这里稍微晒一晒吧。

我记得我2020年3月开始找实习的时候,做去年腾讯的校招题,五道题我AC了四道,但是2019年做的时候就小菜鸡一枚,这就很明显看出来,水平提高了,所以后来的秋招学习中线就放到了其他地方。

ps:如果要看往年的笔试真题,也可以在我的公众号"大厂笔试"里看到,里面有一些我的解答,去年还帮师兄AC了不少题目。

如果在日常学习中有遇到算法题相关的疑问也可以加我好友,有空可以解答一下,其实也是互相学习的过程。


😀操作系统

面试频率:★★★

操作系统应该是我决定去面后端才开始学习的,事实上每个程序员都要懂操作系统,这是我当时认识的一个盲区。

因为非科班的缘故,并没有上这门课,而且平时由于没有太多的需求,导致了这门课我是时间比较靠后才进行学习的。

操作系统特点为内容多,但于此同时也非常有趣同其他计算机知识紧密联系。后端开发工程师对操作系统的要求不小,如果有时间的话最好多复习点。

我学习的时候看了王道考研的视频,老师对知识点剖析得也比较不错,在这里也推荐一波

https://www.bilibili.com/video/BV1YE411D7nH?from=search&seid=10316055627636820951

操作系统在面试中被问到的概率中等,一般通常会问一些和内存相关的一些问题比如:

线程同步的方式有哪些?

进程的通信方式有哪些?

什么是死锁?死锁产生的条件?

分页和分段有什么区别?

操作系统中进程调度策略有哪几种?

程序从堆中动态分配内存时,虚拟内存上怎么操作的?

如果看完这个B站的视频,相信你在里头都可以找到答案。如果你已经对操作系统很熟悉了,相信我,用二倍速一天看完它,你肯定也会有不同的收获。


😀后端语言基础
面试频率:★★★★★
后端语言基础主要有C++、Golang、Java、PHP,我当时学习的是Java,主要就是考虑了以下几点:

岗位需求多

开源资料多

自己本科毕业的时候学过Java

接下来就介绍下Java学习路线

我当时花了点时间系统性的看了一本 Java 的入门书 《第一行代码》,对 Java 的语言特性有了一定的了解。如果你之前学习过其他编程语言,可以学的快一点。

进阶的话后面看了点 《Java并发编程的艺术》

这本书从并发编程的底层实现机制入手,逐步介绍了在设计Java并发程序时各种重要的技术、设计模式与应用,同时辅以丰富的示例代码 主要涉及Java并发机制的底层实现原理如volatile的应用、synchronized的实现原理与应用、Java对象头、锁的升级与对比、原子操作的实现原理等等,可以说是一本学习并发编程入门的好书籍,在面试的时候经常会有面试问你:

Synchronized和Reentrentlock之间的区别是什么?

volatile是如何保证它的可见性?

volatile能否保证原子性?

要想学好java,彻底搞懂java,JVM你必须知道!

Java通过引入虚拟机(VM)的概念,让编译后的代码直接跑在一台虚拟的机器上,无论最终的目标平台是什么,都在上面构建出一个虚拟的一致的虚拟机出来,就可以达到一次编译到处执行的效果了。

推荐一下这本书《深入理解Java虚拟机》

这本书里主要涉及垃圾收集、内存管理机制、内存模型、类加载的时机等,都是经常问的考点。

如果是面试Java后端,虚拟机的知识真是必看,但是由于应届生基本上项目精要为0,所以面试官不会问道项目排查方面的内容,只会问一些比较基础的比如:

说一下堆栈的区别?

什么是双亲委派模型?

说一下类装载的执行过程?

针对Java学习,不要只停留于表面的语法,要多看多做,切忌眼高手低。


😀MySQL

面试频率:★★★★

数据库的学习,离不开实践。

先在自己的电脑上安装一个MySQL,可以参考:

https://www.runoob.com/mysql/mysql-install.html

安装版本最好高于5.7,因为有些特性才能学习到。

如果想要安装一个可视化工具,推荐navicathttp://www.navicat.com.cn/(当然Dbeaver也可以的)

安装完毕后开始MySQL的学习,针对这一部分的学习我的学习路线可以总结为三个部分:

1、快速看完一个体系视频

2、操作数据库,练习SQL语句

3、结合InnoDB特性学习

1.看完一个系统性的视频或者书籍是为了能够让你在短时间内快速学习这个中间件,了解整个中间件的脉络。

我当时看的视频是这个:

https://www.bilibili.com/video/BV1UQ4y1P7Xr?p=75

2.操作数据库,练习SQL语句,我建议你直接使用终端进行操作。 有些人会说现在ORM这么成熟了还要学习SQL吗?当然,因为万丈高楼平地起,ORM底层也是操作SQL的,在性能排查上学习点SQL大有益处。explain语句怎么分析?死锁状态如何查看?索引如何建立?都要使用SQL。

3.其他特性的学习。InnoDB支持事务,支持行锁,已经是最常用的存储引擎。

四大特性:

原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;

一致性(Consistency):执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;

隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;

持久性(Durability):一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

多看一些MySQL的基础知识,MySQL的知识说实话非常多,但是它的体系结构非常明显,学习起来有章可循。在面试中经常会问道一些固定答案的题目比如:

MySQL索引使用的数据结构是什么?

redo log和undo log之间有什么异同?

如何利用bin log做主从复制?

这些答案可以参考我公众号写的一些文章,也可以参考一下:

https://www.runoob.com/mysql/mysql-tutorial.html


😀Redis

面试频率:取决于项目中涉及到与否

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

学习redis我推荐这本书 《Redis的设计与实现》(还是我在字节实习的时候同事推荐给我的)

这本书深入浅出的描述了redis的几种数据结构的底层实现以及主从复制、事务性、持久化等特性,一句话总结就是非常全面地剖析,例如redis底层字符串是由SDS构成,压缩列表何时会失效等等。

再推荐一个学习redis的网站:http://redisbook.com/


😀项目——面试最常问的一个点

面试频率:★★★★★

首先项目要拿得出手,拿得出手的项目这个标准其实很模糊,五年前学生管理系统可以拿得出手,现在这种系统比比皆是。

无论是本科生还是硕士生,我觉得都可以从平时做的项目中挖掘一些自己的点,而不是一上来就看B站的视频自己做一个。

例如我之前做过一些机械臂的工作,我就把机械臂的信息和网页结合起来,通过网页远程登录访问机械臂设备进行操作。这种项目可模仿性低而且在你之前做过的项目中进行改进。

抛砖引玉,扯远了,我后面又帮老师做了一个小商店的支付项目,比较复杂,当时也是参考了一个慕课网的视频,如果你没有项目,那私信我,给你指条明路。

如果你有后端开发的项目或者后端开发的实习经历,那么我想你可以在这上面多思考以下几点,这个也是我当时面腾讯的时候面试官的四连追问:

你的项目需求是什么?

你的项目中有几个人完成?分工是什么?你在当中又是充当什么样的角色?

你觉得你的工作在当中完成的如何?有没有遇到什么困难?

觉得这个项目还有什么改进的地方,项目落地了吗?


暑假实习面试

一般暑假实习的面试比秋招面试简单,而且有一定的转正概率,所以同学们一定要去尝试面一下暑假实习。

当然会有的人会说,如果我的老师不让我去实习或者自己的时间安排不允许,怎么办?

这里我推荐,直接面,面上了去不去再说。

只有经历过面试,你才知道自己的水平怎么样,一场面试成功与否不在于你是否100%回答上面试官的所有问题,而是你已经发挥出你最好的状态了。只有在战场上你才能知道自己的真实水平。

每年的三月份开始,陆陆续续大厂就都开始暑假实习招聘面试了。

面试首先就是投递简历,简历其实很关键,因为面试官是根据你简历上的亮点来提问你。

在一场三十分钟的面试当中,前面两分钟你可以做一段自我介绍,要想有开门红,必须要自我介绍得体。所以,你必须在面试开始自己的优点进行描述,这也是你唯一一个可以主动出击的地方。

我一般是这么自我介绍的:

面试官你好,我的名字叫J,我是来自XX大学通信学院的一名硕士研究生,这次是来应聘XX公司的后端开发岗位,主要有两点:

1.一是自己在平时项目和实习中有担任过后端开发工程师岗位的经历,主要做过xxx和xxx这几个项目,对Java、MySQL和Redis等中间件有一定的了解

2.在学校的学习中我还积极参加各种竞赛,如参加过全国建模比赛获得X等奖、 研究生电子设计大赛X等奖

基于以上原因我这次来应聘这个岗位

3.在学术上发表过XX论文(如果岗位不相关,三句话内结束),使用XX语言编写,已经被录用

简洁明了,主要突出你的优势:

1.做过哪些项目,有哪些经历,对哪些东西了解,进而诱导面试官去问你

2.分点叙述,如果有更好的经历可以继续补充,最好不要超过三点,逻辑清晰让面试官能够快速捕捉你的亮点

最好不要提及以下几点:

1.爱好,如运动、看电影等,技术岗面试不care这个,而且不会因为你的爱好就聊这些东西

2.涉及学生会社团等无关技术面试的介绍,这个只能体现你的课余生活

3.说一些和技术无关的面试话题

我每次在面试的时候都会开启手机录音,以方便复盘。面试是一个查缺补漏的好机会,面试官问你的问题,很可能下家公司也会问。如果你在第一场面试前只掌握了 50% 的知识,那么我希望你每次进步 5% ,这样到了第五场面试的时候,你就已经大概来到了70% 左右的水平。

暑假实习感受

最后我是去了字节跳动实习,吸引我的主要就是字节不pua且自由的文化吧。实习最大的感受就是忙,而且节奏快。项目里主要有三个人,人力不够,有的时候我得和测试产品聊需求,这也验证了网上说的一句话 “字节实习生和正式员工一样”。

在实习过程中也不用怕犯错,因为只有犯错你才能不断进步。

实习的时候主力语言是Golang和python,大概花了几天时间熟悉下Golang语法,然后直接开始干活。

实习可以让直接接触到生产环境的代码,同我们平时做的demo不同,在代码逻辑、架构设计选型、数据库设计等方面都很有讲究,当时参加技术评审会议讨论了很久,严谨务实是每个程序员的内功。

后来和我二面三面交流了一下我的面试情况,他们说一面的时候问了我大概一个小时左右,感觉基础还是比较不错,虽然有些问题不会,但是有自己的思考,所以二面面试官,也就是我的mentor,二十分钟就问完我问题了,三面本以为会刁难,结果也是二十分钟。这说明了一点,如果你在一面或者二面中表现非常出色的话,他们会写面评,后续的面试官看得到前面的面试评语,好面评是会加分的。

没有实习经历怎么办?

根据供需关系,可能最后你没有找到合适的岗位或者没有收到心仪的offer,导致了你没有实习经历。没关系,我身边也有很多同学没有实习经历但是在秋招的时候面上了很多大厂。我总结一下他们身边的优点大多如下:

1.计划性强

如果你没有实习经历,不意味着你同大厂或者互联网失之交臂。因为面试的时候更多的是询问基础知识,而我当时在实习的时候忙于业务代码,有些基础知识都忘了。如果你没有实习,合理安排好自己的时间,将我上面提及的几个技术栈学习好了,去面秋招也不是什么难事。

2.有比较好的项目

如果有比较好的项目,而且面试的部门刚好是相关的,那么如果在面试过程中和面试官聊的比较投机,那么你成功的概率就非常大了。例如我当时面试网易的时候,提及到了我在字节跳动做过的项目,他们非常感兴趣以至于全程都没怎么问基础知识,最后做了一道算法题然后就让我过了。所以如果没有实习经历,可以花点时间多打磨一下自己的项目。

总结:

我的秋招经验就先分享到这里,让我们一起进步!
转载至Jerrycodes
#秋招#
全部评论
不错 谢谢分享
1 回复
分享
发布于 2021-01-27 22:26
有点强 向大佬学习
1 回复
分享
发布于 2021-01-27 22:27
春招专场
校招火热招聘中
官网直投

相关推荐

北京中电45所 对自研产品进行测试或质量保证 工资待遇约了下周谈,可能每月应该会比东软多个4-6k的样子,不过可能会涉及到绩效工资,还不清楚占比多少。
点赞 评论 收藏
转发
40 212 评论
分享
牛客网
牛客企业服务