今天给大家分享一篇不错的面经,作者从一个非科班的小白,通过读研期间自学Java,一点点啃数据结构和Java基础,通过大半年的努力,最终获得了网易游戏的 Java 实习 offer,这一路的艰辛,作者通过文字的形式表达出来,值得一读。原文如下:
研究生时期的方向选择
对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。
我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情。首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在实验室做项目「因为我更希望去大公司里锻炼几年」,所以我当时本着想要找实习的想法选择了导师,事实证明我的选择还是很正确的,我在研二有大段时间去参加实习,让我在大厂里有足够的时间去锻炼和学习。
而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。
我在读研之前想做游戏开发和 Android 开发,但我以前也学过 Java Web 开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄。
最后,我综合公司的岗位情况,个人兴趣,以及我之前的学习经历等因素,选定了 Java 开发方向。
于是,我在学校的实训项目中选择了 Java Web 项目,从此也真正意义上地踏上了 Java 的学习之路。
如果有想学习java的程序员,可来我们的java学习扣qun:72340,3928免费送java的视频教程噢!小编是一名5年java开发经验的全栈工程师,整理了一份适合18年学习的java干货,送给每一位想学的小伙伴,欢迎大家一起学习哦。
笨鸟先飞,勤能补拙
尽管我的入学成绩是全学院的 top 3,但是,我发现,作为非科班出身的我,和很多科班同学相比,还是有一定差距的。
大部分同学本科都上过计算机专业的相关课程,比如计算机网络,操作系统,数据结构等等,而我以前连听都没听过,除此之外,他们一般都会几段比较完整的项目经验,至少在 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这个我懂。
原谅我忘记了详细的面试内容,毕竟年代太过久远。
找实习的经验总结
1、写好你的简历,要实事求是。找实习对项目的要求不会很高,但是基础要比较扎实。
2、夯实你的基础,多看书和博客,勤做总结,面经可以用于查缺补漏,但不是全部。
3、同一家公司的面试一般有记录(冷却期),做好准备再去面试,否则可能浪费机会。
4、春招的实习生叫做统招实习生,非春招的实习生叫做日常实习生,一般前者的面试难度比较大,后者面试难度比较小,所以,两者有一定区别,可能在后续实习内容和转正难度上会体现出差异,大家可以权衡一下。
5 、找实习有几个网站你需要知道:实习僧,牛客网,拉勾。
6、面试过程中记得问清楚能不能转正,这对你后续的选择影响重大。
最后说一点,其实实习没那么难找,一般岗位要求也会比校招低,所以你可以「挑剔」一点,有机会最好选择你喜欢的部门,我当时没太注意这一点,所以特地补充。
后记
现在是 11 月份,找实习的小伙伴们开始着手准备了吗,要知道,复习这种事,宜早不宜迟呀,学弟学妹们赶紧开始吧。