作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到我在这半年里做对了哪些事情。
前言
研究生时期的方向选择
对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。
我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情。首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在实验室做项目(因为我更希望去大公司里锻炼几年),所以我当时本着想要找实习的想法选择了导师,事实证明我的选择还是很正确的,我在研二有大段时间去参加实习,让我在大厂里有足够的时间去锻炼和学习。
而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。
我在读研之前想做游戏开发和android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄。
最后,我综合公司的岗位情况,个人兴趣,以及我之前的学习经历等因素,选定了Java开发方向。
于是,我在学校的实训项目中选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。
笨鸟先飞,勤能补拙
尽管我的入学成绩是全学院的top3,但是,我发现,作为非科班出身的我,和很多科班同学相比,还是有一定差距的。
大部分同学本科都上过计算机专业的相关课程,比如计算机网络,操作系统,数据结构等等,而我以前连听都没听过,除此之外,他们一般都会几段比较完整的项目经验,至少在Java Web方面已经算是比较熟悉了。而我在当时,只学了数据结构,另外接触过一些Java基础,有一部分项目经验,基本上就是入门水平。
于是我痛定思痛,决定好好弥补我的不足,平时一有空就去图书馆找些书来看,不论是操作系统,计算机网络,还是数据库等本科课程,我都会找一些对应的书籍来看,当时不太清楚其实有些课程其实不需要特地去补,以至于我连计算机组成原理,编译原理,软件测试等方面的书都特地找来看,现在想想也是挺逗比的。
由于我们上的课比较水,所以上课时间反而变成了我自学基础课程的大好时光了。所以我平时上课的时候都会带两三本书,一到两周内看完一本,虽然可能吸收的不是特别好,但是对当时的我来说还是有很大帮助的。
除此之外,有时候我还会偷偷去旁听有一些本科生的课程,这也是因为我在自学一些课程的时候遇到了困难,比如《操作系统》,《数据库原理》等等。于是我花时间研究了一下本科生的课表,趁着自己没课的时候赶紧去旁听课程。有时候感觉自己在课堂中显得非常突兀,尴尬地想要逃跑,但总算是坚持地听完了一门数据库的课程。
此外,我还在各种视频网站上看网课,比亦或是看计算机基础课程,里面的操作系统,数据库等课程也让我印象深刻。
就这样,每天我都把自己的时间填满,愣是在研一上学期看了好几本书,当时书的版本现在有的记不清了,主要是计算机网络,操作系统,计算机组成原理,另外还有软件工程,软件测试,设计模式,等书籍。就这样,我靠着这段时间的坚持把计算机基础课程补上来了一些。
历尽艰辛,终得实习
时间来到研一下半页,这时候我刚刚结束了学校的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这个我懂。
原谅我忘记了详细的面试内容,毕竟年代太过久远。
找实习的经验总结
1、写好你的简历,要实事求是。找实习对项目的要求不会很高,但是基础要比较扎实。
2、夯实你的基础,多看书和博客,勤做总结,面经可以用于查缺补漏,但不是全部。
3、同一家公司的面试一般有记录(冷却期),做好准备再去面试,否则可能浪费机会。
4、春招的实习生叫做统招实习生,非春招的实习生叫做日常实习生,一般前者的面试难度比较大,后者面试难度比较小,所以,两者有一定区别,可能在后续实习内容和转正难度上会体现出差异,大家可以权衡一下。
5 、找实习有几个网站你需要知道:实习僧,牛客网,拉勾。
6、面试过程中记得问清楚能不能转正,这对你后续的选择影响重大。
最后说一点:其实实习没那么难找,一般岗位要求也会比校招低,所以你可以“挑剔”一点,有机会最好选择你喜欢的部门,我当时没太注意这一点,所以特地补充。
后记
现在是11月份,找实习的小伙伴们开始着手准备了吗,要知道,复习这种事,宜早不宜迟呀,学弟学妹们赶紧开始吧。
另外,本文可能没有把找实习的技巧和经验讲的很仔细,后面会继续推出这方面的文章。
除此之外,关于在网易游戏和百度实习的那些事,我也会写一篇文章,让大家提前了解实习生活是什样的。
微信公众号
个人公众号:黄小斜
黄小斜是跨考软件工程的 985 硕士,自学 Java 两年,拿到了 BAT 等近十家大厂 offer,从技术小白成长为阿里工程师。
作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得和程序人生,目前黄小斜的CSDN博客有百万+访问量,知乎粉丝2W+,全网已有10W+读者。
黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长!
原创电子书:
关注公众号【黄小斜】后回复【原创电子书】即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》
程序员3T技术学习资源: 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 “资料” 即可免费无套路获取。
考研复习资料:
计算机考研大礼包,都是我自己考研复习时用的一些复习资料,包括公共课和专业的复习视频,这里也推荐给大家,关注公众号后,后台回复关键字 “考研” 即可免费获取。
技术公众号:Java技术江湖
如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、mysql、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
Java工程师必备学习资源: 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 “Java” 即可免费无套路获取。
本文由博客一文多发平台 OpenWrite 发布!