Java工程师修炼之路(校招总结)

前言

在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。

一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,并且,我对校园招聘也做了一些研究和相应的准备。

在今年的秋季招聘结束以后,我也决定把这些东西全部都写成文字,做成专题,以便分享给更多未来将要参加校招的同学。

微信公众号【程序员江湖】

作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条、网易、滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验、求职心得和成长感悟,以及作为程序员的思考和见解。(关注公众号后回复”资料“即可领取 3T 免费技术学习资源)

公众号回复1可得我的联系方式,有问题可以和我交流。

公众号回复2可得加群方式,一起加入交流群吧。(目前已有300多位小伙伴)

大学时期的迷茫与坚定

我的本科专业是电子信息工程,基本没有接触过计算机专业的课程,只学过c语言,然后在大三的时候接触过java,Android,以及前端开发。

那时候我还不知道软件开发的水有多深,抱着试一试的态度去应聘了很多公司。结果可想而知。

当年我对游戏开发很有兴趣,特别是对网易游戏情有独钟,但是当我看到网易游戏研发工程师的招聘要求时,我只能望而却步,因为它要求学历至少是985的硕士。

也因为这个契机,我在大三的暑假开始准备考研,花了一个月的时间深思熟虑之后,选择了我大华科。

毕竟是跨专业,在复习过程还是有点吃力的,但是就靠着一股毅力和执着,半年之后,顺利地考上了,成绩还意外地非常好。

研究生时期的探索和规划

对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。

我当时本着想要找实习的想法选择了我现在的导师,事实证明我的选择还是很正确的。

而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。

我在读研之前想做游戏开发和Android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄,并且基于我之前的学习经历,java开发可能更加适合我。最终在学校的实训项目中我选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。

我的Java入门之路

之前说过,在研一期间看了很多计算机专业的书籍,比如计算机网络,操作系统,数据库等等,虽然吸收得都不太好,但也算是看过了。

于是我开始踏上学习Java的道路。最开始我找了一些Java的书单,然后买了一些比较基础的书籍,先啃为敬。那时候我看过《Java从入门到精通》这种烂大街的书,也看过《Java编程思想》这种很难懂的书。

一段时间后我感觉吸收效果不好,于是开始把目光转向视频课程了。那时候听舍友力神的建议,到极客学院上看一些视频课程,我当时就觉得这个讲的比书上要好懂一些。后来我又接触到了慕课网,中国MOOC等网站,逐渐地把相关的技术课程都看完了。

那时候正好我们的项目实训还在进行,于是我就把趁热打铁把这些东西用在了项目当中,并且第一次用博客记录下我的实践经验。

现在回头想想,此时的我也只不过是刚刚入门了Java以及web开发。然而那时候不知道天高地厚的我,就开始xjb投各大公司的Java实习岗位了。结果可想而知,那叫一个惨啊。

我的Java进阶之路

上文说到我刚刚开始投递实习岗位,是在研一的下学期。当时整天躲在实验室,一边看书一边看视频,接到面试时赶紧刷面经,忙的不亦乐乎。那段时间感觉自己的复习状态和考研差不多。

然而,由于水平确实不咋地,当时我被各大公司的面试官吊打。比如我第一家面的就是百度,三个很简单的问题一个都不会,人家面试官都不好意思打击我了。后来我又面了一些大大小小的互联网公司,虽然情况有所好转,但是总的来说,我要学习的东西还很多。

在准备面试的过程中,我看了很多面经,也看了很多技术博客,发现自己的基础很薄弱,需要系统性的学习。并且这些东西是视频和入门书籍给不了我的。于是我又踏上了找书的道路。

那时候Java书单泛滥,有的书单质量低下,买来的书看两眼就看不下去了。直到我看到了“江南白衣的后端书架”这一文章,才发现Java后端书架原来应该是这样的。于是我照葫芦画瓢把相关书籍都买了,这个阶段,也算是刚刚踏上Java进阶之路吧。

这里面不得不提几本书,对学习Java的同学非常重要,一本是《深入理解JVM虚拟机》,一本是《深入分析Java技术内幕》,以及《Java并发编程艺术》。

再后来,凭着一股不到黄河心不死的精神,终于拿到了网易游戏的实习offer。于是,第一次在大厂实习的机会终于来了,我怀着即期待又忧虑的心情来到了杭州。

我的Java实习之路

在猪场实习的时间并不长,也就持续了三个月不到,当时我们部门在做数据仓库,于是我这边主要负责Java Web应用的开发,其实也就是写一些简单的后台接口。

在熟悉了工作流程以后,我很快就适应了工作的节奏,毕竟做的东西也不难,导师也会经常指导,就这样我完成了一个又一个需求,直到后来家里有事,我才临时选择辞职回家。

由于在网易实习的时间比较短,我也留下了一些遗憾,比如对整个项目的架构不够熟悉,并且很多相关技术栈也来不及学习。后来我去熊厂实习的时候,尽量避免了这些问题。

熊厂实习的时间长达半年,部门当时做的是私有云,emmm完全是全新的技术栈啊,于是我基本上又是从零开始学习云计算,但是由于之前的操作系统和网络基础不扎实,在学习相关技术时,基本是两眼一抹黑,学啥啥不会。

这也导致我在上班期间看了很多计算机基础方面的书籍,包括《计算机网络:自顶向下》,《深入理解计算机系统》等等。当然,这也是因为我的工作内容很简单。CRUD你懂的。

于是花时间自学成为了我那时候的主旋律,看书,看内网资源,参加技术分享,倒也非常充实。当然,有空我也会看看项目代码,了解一下技术架构,以便让自己对整个项目有一个更好的理解。

再后来,2018年来了。

抉择时刻:实习转正还是秋招

我是2018年1月份离开北京的。当时面临几个问题,是否续租房子,是否继续实习。还有一个小插曲就是当时养的一只猫也得带回去。再三思考后我决定回学校准备秋招。

过年后我就回到学校了,当时我本不打算参加春招,想要潜心修炼准备秋招,但是架不住春招宣传力度大,并且几个大厂都标榜着“转正容易,hc多多”等口号。于是我没忍住,上牛客投了几次简历,打算面几家大厂,心想万一过了就去吧。

简历都投出去了,那也只好复习了啊,当时我们宿舍跟打了鸡血一样,一整天都在刷题,从早到晚泡着刷LeetCode,一个月后终于刷到100多题,也算是能应付一下笔试了吧。

春招我投的公司不多,也就at,网易游戏和京东。最后阿里和京东都给了offer。但是当时阿里的流程走得特别慢,直到内推截止前一天才给我发offer,并且自己也感觉之前面试表现一般,心想我要是去了也是B+,很有可能成为拥抱变化的牺牲品,于是我咬咬牙放弃了,大不了秋招再来。

塞翁失马,焉知非福,春招的颗粒无收反而让我可以安心准备秋招,于是我有大把的时间做我想做的事,制定自己的学习计划,安排自己的生活,不需要去考虑转正这种麻烦事了。

至此,四月终了,春招告一段落。

Java修仙之路

平时经常逛牛客,我也经常发些面经啥的,于是很多牛油喜欢调侃说“看神仙”。这时候我只能尴尬又不失礼貌的微笑了0。0

在下不才,成不了神仙,最多就是打游戏的时候能修修仙罢了。

不过你还真别说,网上还真有“Java成神之路”这样的文章,真的打扰了哈哈。

科普一下修仙梗: 修仙梗的意思是喜欢熬夜的人不睡觉不猝死反而要修仙,然后就被广大的网友们互相调侃玩坏了,现在熬夜都不叫熬夜了,新潮的说法就是修仙,熬夜不会猝死啊,会增强法力。

不逗你们了,咱们还是进入正题吧。我在五月份的时候做了一个计划,打算在七月底之前完成复习工作,原因是七月底有阿里的提前批招聘,是我最最重视的一个招聘。这个计划简称三个月计划,我主要做了三个方面的学习规划。

一:首先,便是对Java后端技术栈的复习,这也是最重要的一部分,因为面试永远都是考基础考得最多。

这部分内容又可以细分为多个方面:

1 Java知识体系:包括了Java基础,集合类,设计模式,Java并发技术,Java网络编程,JVM,JavaWeb,Spring框架等等。

2 计算机基础:包括了操作系统,计算机网络,数据结构,数据库,缓存等内容。

3 后端进阶:包括了分布式理论,以及常见分布式技术比如负载均衡,zookeeper,消息队列,分布式缓存等等。当然,这里面也包括系统架构方面的知识,以及RPC,微服务等内容。

4 额外内容:这部分内容因人而异,我主要是因为实习的时候项目涉及了hadoop以及私有云技术栈,所以自己看了很多这方面的东西,譬如Hadoop生态,OpenStack生态,以及docker生态。

我在复习这部分内容的时候,一般先看优质博客,然后自己整理总结对应写一些博客,最后把能够实现的东西实现一下,这样一来一个知识点就搞定了。剩下的事情就是重复这个步骤。

下面放上我的博客:https://blog.csdn.net/a724888

二:其次,便是对算法的学习了。我也把算法的学习分为了几个部分。

1 基础数据结构与算法:主要是复习之前学过的数据结构和算法,额外再看一些算法书籍,譬如《图解算法》,以了解常见算法。

2 剑指offer:剑指offer基本上是面试必考的,所以把它刷个两三遍是很有必要的。

3 LeetCode:搞定前面两项之后,刷LeetCode也会有些底气了,我当时就刷了150题左右,主要也是刷经典的题目。

4 笔试真题:这个就不用多说了,真题是一定要刷的。毕竟各个公司出题的路子都花里胡哨。

刷题多了,就会遇到很多原题和类似题目,所以,尽早开刷,做好准备吧。

三、最后一部分,则是做项目。大概说下我做项目的几个要点吧

1 为什么这时候我还要做项目呢:一来是我觉得实习过程自己接触的东西太细碎,没有对全局做把控,二来是因为想给GitHub加点东西,顺便学点新的技术。于是我选择了当时牛客网上的两个项目来自己做做看。

2 关于项目选择:叶神这两个项目还是讲的非常棒棒的,用的东西也很新,代码也有提供,避免了自己要写前端的尴尬,另外,这两个项目模仿了知乎和头条,更加接地气。

3 把项目做到GitHub上:之前对git也比较熟了,所以想把这个项目按照正常开发的流程走一遍,于是我每天都会做一个模块,然后发布几个版本,记录一下版本更新的细节,写这些东西的时候,自己其实就已经做了思考和总结,感觉还是不错的。

下面放上我的GitHub:https://github.com/h2pl

就这么过了三个月,提前批拉开序幕。

秋招回忆录

从七月初第一次投递简历,到九月初,整整两个月的时间,大大小小投了几十家公司,其中很多都是提前批,内推,也经历了许多的笔试,面试。

期间也拿了几个offer,包括百度,腾讯,蚂蚁金服,头条,华为,网易(网易云音乐没给offer,调到了其他部门)。有几家直接收到拒信的,包括拼多多,深信服。还有几家在等待结果。包括快手,斗鱼等。

当然也有一些还没面试完的公司以及待安排面试的公司,这里就不展开说了。

八月底基本上提前批就已经结束了,所以一般这段时间正式校招也开始了,各种大规模的笔试也很多,所以大家即使没有拿到offer也不要灰心,毕竟校招是一场持久战,基本上要到九月十月才能下结论。我之前分享了很多公司的面经,其实大部分都是提前批的,很多都是直接免笔试的,因为我对算法并不是很在行,所以感觉还是比较幸运的。

从七月底第一次面试到9月基本佛系,中间经历了大大小小的面试,这里只进行简单的记录哈,要看面经的话请到我的公众号:程序员江湖。

具体的面经都比较长,这里大概介绍一下面试的情况,然后我会放上面经的链接供大家查阅。

1 阿里面经

阿里中间件研发面经

蚂蚁金服研发面经

岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。

我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。

然后我也参加了蚂蚁金服中间件部门的面试,经历了三次面试,但是没有走流程,所以面试中止了。

最后我走的是蚂蚁金服财富事业群的流程,经历了四次面试,包括一次交叉面,最终拿到了蚂蚁金服的意向书,评级为A。

阿里的面试体验还是比较好的,至少不要求手写算法,但是非常注重Java基础,中间件部门还会特别安排Java基础笔试。

2 腾讯面经

腾讯研发面经

岗位是后台开发工程师,我没有选择意向事业群。

SNG的部门捞了我的简历,开始了面试,他们的技术栈主要是Java,所以比较有的聊。

一共经历了四次技术面试和一次HR面试,目前正在等待结果。

腾讯的面试一如既往地注重考查网络和操作系统,并且喜欢问Linux底层的一些知识,在这方面我还是有很多不足的。

3 百度面经

百度研发面经

百度研发面经整合版

岗位是研发工程师岗位,部门包括百度智能云的三个分部门以及大搜索部门。

百度的提前批面试不走流程,所以可以同时面试好多个部门,所以我参加百度面试的次数大概有12次左右,最终应该是拿了两个部门的offer。

百度的面试风格非常统一,每次面试基本都要到电脑上写算法,所以那段时间写算法写的头皮发麻。

4 网易面经

网易研发面经

面试部门是网易云音乐,岗位是Java开发工程师。

网易是唯一一家我去外地面试的公司,也是我最早去实习的老东家。

一共三轮面试,耗时一个下午。

网易的面试比我想象中的要难,面试官会问的问题都比较深,并且会让你写一些结合实践的代码。

5 头条面经

今日头条研发面经

岗位是后台研发工程师,地点选择了上海。

我参加的是字节跳动的内推面试,当时找了一个牛友要到了白金码,再次感谢这位头条大佬。

然后就开始了一下午的视频面试,一共三轮技术面试,每一轮都要写代码,问问题的风格有点像腾讯,也喜欢问一些底层知识,让我有点懵逼。

如果想看更多公司的面经,也请移步微信公众号:程序员江湖。


另外,我上周还面试了一次亚马逊,因为很多知名外企到十月才开始招人,所以闲了很久之后我又重操旧业了,可能在面完大摩和微软之后,秋招才能正式结束吧

结束也是开始

中秋节刚过,国庆节又要到来了。正如每一年的秋招一样,年复一年,在时间面前我们也是渺小的尘埃。

秋招结束不代表着结局,而是新的旅程开始,马上,毕业论文,offer选择,入职准备,毕业旅行等事项也要提上日程了。

不知道明年我们看待学弟学妹的秋招时,会是怎样的一种心境呢。

▼更多精彩内容

笔试经验小分享

有关秋招面试的一些小技巧

我的秋招经验分享(内附校招交流群)

Java工程师修炼之路(校招总结)的更多相关文章

  1. Java工程师修炼之路(从小白到BAT的两年学习历程)

    ​ 作者:陆小凤 文章首发于:微信公众号[程序员江湖] 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾 ...

  2. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  3. Java工程师高手之路

    JVM方面 JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final 垃圾回收 内存分配策略.垃圾收集器(G1).GC算 ...

  4. 【转载】java工程师学习之路---给自己的目标

    想学习或者提升java的可以看看,单从java角度来看总结的虽然还是很全面的,主要是为了自己看 http://blog.csdn.net/peace1213/article/details/50849 ...

  5. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  6. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  7. Java工程师学习指南 完结篇

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  8. Java工程师学习指南 中级篇

    Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...

  9. Java工程师学习指南 初级篇

    Java工程师学习指南 初级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

随机推荐

  1. 大型三甲医院医疗体检信息管理系统源码 PEIS 体检科软件 CS

    详情请点击查看 开发环境 :VS2008 + C# + SQL2000 功能介绍: 1:设置:操作员设置   系统功能设置    用户组权限设置  公告打印设置  数据字典设置  临床类型设置  体检 ...

  2. Java多线程问题

    一. Java多线程: Java给多线程编程提供了内置的支持.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 多线程是多任务的一种特别的形式,但多线 ...

  3. spring配置文件中context:property-placeholder导入多个独立的配置文件

    spring中 context:property-placeholder 导入多个独立的 .properties配置文件? Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个 o ...

  4. 注解@PostConstruct与@PreDestroy 特性说明

    简介 Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作.此文主要说明@PostCons ...

  5. 推荐一个比crontab更好用的东西:crongo

    This is a crontab service that supports hot plug and high performance. In addition, it supports seco ...

  6. InnoDB基本特性

    Ⅰ.double write 目的:保证数据写入的可靠性 小知识: 什么是partial write? 16k的page只写入了4k,6k,8k,12k就断掉了的情况 corrupt的page就是pa ...

  7. Project facet Java version 1.8 not supported JDK版本不对无法启动项目解决办法

    https://jingyan.baidu.com/article/6c67b1d69a59a02787bb1e30.html

  8. tkinter中frame布局控件(九)

    frame控件 frame控件是将窗口分成好几个小模块,然后每个小模块中添加控件. 也就是将窗口合理的布局 由于和其他控件的操作基本一致,就不做注释了 import tkinter wuya = tk ...

  9. 关于<input type="date">这种取值的问题 【原创】

    举例 <input type="date" id="date1"> var num = $("#date1").val(); a ...

  10. Android 自定义 ViewPager 打造千变万化的图片切换效果

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主 ...