微信公众号【程序员江湖】
作者黄小斜,斜杠青年,某985硕士,阿里研发工程师,于2018 年秋招拿到 BAT 头条、网易、滴滴等 8 个大厂 offer
个人擅长领域 :自学编程、技术校园招聘、软件工程考研(关注公众号后回复”资料“即可领取 3T 免费技术学习资源)
作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到我在这半年里做对了哪些事情。
前言
研究生时期的方向选择
对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。
我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情。首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在实验室做项目(因为我更希望去大公司里锻炼几年),所以我当时本着想要找实习的想法选择了导师,事实证明我的选择还是很正确的,我在研二有大段时间去参加实习,让我在大厂里有足够的时间去锻炼和学习。
而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。
我在读研之前想做游戏开发和Android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄。
最后,我综合公司的岗位情况,个人兴趣,以及我之前的学习经历等因素,选定了Java开发方向。
于是,我在学校的实训项目中选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。
笨鸟先飞,勤能补拙
尽管我的入学成绩是全学院的top3,但是,我发现,作为非科班出身的我,和很多科班同学相比,还是有一定差距的。
大部分同学本科都上过计算机专业的相关课程,比如计算机网络,操作系统,数据结构等等,而我以前连听都没听过,除此之外,他们一般都会几段比较完整的项目经验,至少在Java Web方面已经算是比较熟悉了。而我在当时,只学了数据结构,另外接触过一些Java基础,有一部分项目经验,基本上就是入门水平。
于是我痛定思痛,决定好好弥补我的不足,平时一有空就去图书馆找些书来看,不论是操作系统,计算机网络,还是数据库等本科课程,我都会找一些对应的书籍来看,当时不太清楚其实有些课程其实不需要特地去补,以至于我连计算机组成原理,编译原理,软件测试等方面的书都特地找来看,现在想想也是挺逗比的。
由于我们上的课比较水,所以上课时间反而变成了我自学基础课程的大好时光了。所以我平时上课的时候都会带两三本书,一到两周内看完一本,虽然可能吸收的不是特别好,但是对当时的我来说还是有很大帮助的。
除此之外,有时候我还会偷偷去旁听有一些本科生的课程,这也是因为我在自学一些课程的时候遇到了困难,比如《操作系统》,《数据库原理》等等。于是我花时间研究了一下本科生的课表,趁着自己没课的时候赶紧去旁听课程。有时候感觉自己在课堂中显得非常突兀,尴尬地想要逃跑,但总算是坚持地听完了一门数据库的课程。
此外,我还在各种视频网站上看网课,比亦或是看中国MOOC的计算机基础课程,里面的操作系统,数据库等课程也让我印象深刻。
就这样,每天我都把自己的时间填满,愣是在研一上学期看了好几本书,当时书的版本现在有的记不清了,主要是计算机网络,操作系统,计算机组成原理,另外还有软件工程,软件测试,设计模式,等书籍。就这样,我靠着这段时间的坚持把计算机基础课程补上来了一些。
历尽艰辛,终得实习
时间来到研一下半页,这时候我刚刚结束了学校的Java Web的项目实训课程,在做这个项目期间,我发现自己暴露出了很多问题,技术实践能力不足,Java基础不扎实。这件事情也给我自己敲响了警钟,因为我计划在春招期间找一份大厂的实习,但是目前看来我的水平还远远不够。
压力之下,只有努力一条出路。于是,从那时候起,我开始了“留守“实验室的学习生活。为什么要在实验室学习,一是因为学习气氛好,二是因为平时大家也可以互相交流问题。
每天早上9点到实验室打开电脑,晚上9点背电脑回寝室。大部分时间我会花在看书上,这段时间主要看的都是Java相关的书籍,借鉴的是江南白衣大佬的“Java后端书架”,比如《深入理解JVM虚拟机》,《Java并发编程艺术》,《深入分析Java Web技术内幕》,《深入剖析Spring源码》等等。
另外一部分时间我会用来看一些技术博客,我主要是根据面经上的知识点按图索骥,找到对应讲解该知识点的文章,那时候主要还是通过搜索引擎来找文章,当然有时候看到一些重点难点也会自己写一些博客。不过这个时期并不是我大量写博客的阶段,主要还是看一些讲解面试知识点的技术博客为主。
除此之外在面试前几天我会花时间去看这家公司的面经,搞懂每一个面经上的知识点,并且记录在我的笔记上,光是面经相关的笔记我就记了100多篇,这样的学习习惯我一直坚持到了秋招,确保每个面试知识点都能被我记住,消化,直至完全理解。
慢慢的,笔记越来越多,我参加面试的公司也越来越多,于是我开始不断完善自己的简历,总结自己的面试技巧,选择合适的网申时机。从头到尾我大概花了3个月的时间在找实习上,期间大大小小参加了20多次面试,我也从一开始面试一问三不知的菜鸟,逐渐变成了面霸,到复习末期,我对Java常见面试知识点已经了然于胸,同时也越来越自信,不管面什么大厂都不慌不忙。
这样的日子持续了好几个月,所谓世上无难事,只怕有心人。到最后,实验室里每个人都拿到了心仪的实习offer。
实习面试回顾
当初找实习的时候投简历比较暴力,基本上就是海投,好几个网站一起投,当时根本不知道有什么面试黑名单(冷却期),所以经常毫无准备地去面试大厂,结果可想而知。可惜当时还没有养成记录面经的习惯,所以大致地大家分享一下面试经历吧。
下面我按照面试时间先后记录一下面试流程,时间历程大概是从11月初到第二年3月初。
百度:此时的我还处于零基础状态,一问三不知,面试官语气和缓地劝退。
(深受打击,开始疯狂学习,刷面经,打基础)
新浪,搜狐,爱奇艺等巴拉巴拉:基本一轮游,偶尔能过一面。
(自我否定自我怀疑中,然后开始看书,学原理和进阶内容)
网易,头条(作死),去哪儿,携程等:虽然进步了一些,但是还是没有拿到最后的offer。
(继续疯狂看书,刷博客,刷面经,然后开始做总结,写博客)
到第二年的春天,我继续新的征程。
美丽联合,CVTE,美团,网易游戏:都拿了offer。
重点说一下拿了offer的这几家的面试经历吧。
美丽联合:当时是视频面试,技术问题比较基础,就是常见的Java基础问题,比如集合类,多线程,JVM等等。同时还问了一些场景问题,算是比较有难度的了。当时经历了两次面试,大概面了一个多小时,最终收获offer。
CVTE:这个是现场面试,技术面试就问了几道数据库的问题,总监面则是让我把简历项目的数据库设计讲清楚,可以说是很简单了。hr面则聊了半个小时,最后得到了offer。
美团:当时参加的是远程面试,应该是电话面试,问的问题比较有难度,除了Java基础问题,还会问一些多线程啊,锁和同步之类的问题,面试持续一个多小时,最后给了offer。
网易游戏:当时是两轮电话面试。第一轮是技术面试,持续时间一个小时,基本把我之前复习的内容都问了一遍,从Java基础,集合类,再到并发编程,设计模式,数据库等等,另外还问了后端架构相关的问题。总体答得还不错,二面只出了两道智力题,答出来一道,然后面试官问我玩哪些网易游戏,emmm这个我懂。
原谅我忘记了详细的面试内容,毕竟年代太过久远。
如果你是Java方向的同学,那么我打算向你安利我的另一个微信公众号【Java技术江湖】这是一位阿里Java工程师的技术小站,致力于分享Java后端技术文章,以及这几年学习Java的心得体会,偶尔也记录在阿里成长的点滴,和大家一起在Java学习道路上成长。
找实习的经验总结
1、写好你的简历,要实事求是。找实习对项目的要求不会很高,但是基础要比较扎实。
2、夯实你的基础,多看书和博客,勤做总结,面经可以用于查缺补漏,但不是全部。
3、同一家公司的面试一般有记录(冷却期),做好准备再去面试,否则可能浪费机会。
4、春招的实习生叫做统招实习生,非春招的实习生叫做日常实习生,一般前者的面试难度比较大,后者面试难度比较小,所以,两者有一定区别,可能在后续实习内容和转正难度上会体现出差异,大家可以权衡一下。
5 、找实习有几个网站你需要知道:实习僧,牛客网,拉勾。
6、面试过程中记得问清楚能不能转正,这对你后续的选择影响重大。
最后说一点:其实实习没那么难找,一般岗位要求也会比校招低,所以你可以“挑剔”一点,有机会最好选择你喜欢的部门,我当时没太注意这一点,所以特地补充。
后记
现在是11月份,找实习的小伙伴们开始着手准备了吗,要知道,复习这种事,宜早不宜迟呀,学弟学妹们赶紧开始吧。
另外,本文可能没有把找实习的技巧和经验讲的很仔细,后面会继续推出这方面的文章。
除此之外,关于在网易游戏和百度实习的那些事,我也会写一篇文章,让大家提前了解实习生活是什样的。