前言
我的校招今年结束得比较早,主要是因为拿的都是 9 月初提前批的 offer。今年的校招我拿了网易,阿里的 offer,而且都不是批发价。网易内推比较早,发 offer 也早,所以是我第一个拿到的 offer。不过我最想去的是阿里,所以在阿里给我发了 offer 之后,我就没有再参加腾讯,百度的面试了。想想还是总结一下找工作的经验,让大家参考一下,希望有所帮助。
校招经历
我大一大二的时候基本什么都搞:ACM(只坚持了一个寒假),前端,安卓,PHP,Python,甚至还跟着院长研究过虚拟桌面传输框架 Spice 的源码。从大三开始我就已经决定好了找工作的方向:Java 开发,所以后面做项目都是围绕着 Java 展开。大三的寒假的时候刷 leecode,为笔试做准备。
到了内推的时候,第一个内推面试是阿里云,表现得不好,面试官的评价是基础扎实,但是缺乏亮点。后来我想了一下,确实之前做的项目没什么亮点,不过还好阿里实习生的正式面试还有两个月时间给我准备,所以当时我就开始准备做 RedisHttpSession 这个开源项目,用 Redis 来做共享 Session,这个项目在我后面的阿里实习生面试我自己感觉还是有用的。
第二个内推的是腾讯的安全部门,结果面试官是做 C/C++,所以面试官只能问我基础的东西,因为我做的都是 Java 的项目,他也不感兴趣。结果就是我的基础不扎实,因为我把大部分时间用来准备 Java 的 JVM,并发等问题上,所以过不了也正常。
后来又投了英特尔,结果面试官问我熟不熟悉 Python,我说用 Python 做过爬虫,然后就把我录用,成了我第一个拿到的实习 offer,不过面试这么水其实也不是很想去。
内推到这基本就结束了,后面就是正式的实习生招聘。
第一个是腾讯,结果面的又是 C/C++ 的安全岗,面试官问了很多基础的东西,像 TCP 的超时时间,一个 TCP 连接需要消耗的资源,如何评估机器的最大连接数等,这方面我接触的不多,所以又挂了。
第二个是网易游戏,面的是运营开发,刚好是 Java 岗,一面问了 Java 的基础,二面问了做项目遇到的问题,怎么解决的。等了一个星期以为挂了,后面突然打电话说我过了。拿了第二个实习 offer。
最后是阿里,内推最早,正式招聘最晚。一面一开始就问一些开放性问题,答的不好,犯得毛病就是一开始就陷入技术实现无法自拔,结果答非所问。然后面试官觉得开放性问题问了也白问就开始问我 Java 基础,还好我 Java 基础比较扎实,他越问越深入,从语法问到 JVM 实现,其中穿插问一些算法数据结构,操作系统,数据库的问题,基本都答上来了。最后问了我做的 RedisHttpSession,针对这个项目问了一些实际的问题:共享 session 会不会带来安全问题等。整个面试持续了 1 个小时,问了很多问题。一面完了感觉还是有希望的,前面的开放性问题虽然答的不好,但后面的基础和项目答的还不错。果然不久就有二面了。到了二面,面试官问了一些项目的问题,还问了我对软件工程的看法,因为我的专业就是软件工程。最后是 HR 面,HR 是个大叔,当时我以为还是技术面,一开始他问我项目遇到的难题是怎么解决的,我跟他扯了一堆技术细节。后面他问了一些生活学习上的问题,我才意识到是 HR 面,总之跟 HR 聊的挺开心的,整个过程他都是笑眯眯的。晚上很快就收到了实习 offer,特别开心,然后就拒了其他 offer。
就这样,我来到了杭州的蚂蚁金服,也就是支付宝实习。实习的经历有很多可以讲,但是篇幅所限就不细说了。总的经验就是:要多思考并且让别人看到你的思考。
怎么理解?多思考就是做一件事情不是说做完就算了,而是要思考怎样做到更好,反省自己的问题;让别人看到你的思考就是说要让你的主管同事们看到你的思考,例如说你可以把你思考的东西写在周报上,或者跟你的师兄进行讨论等。
实习期间网易的内推很早就开始,于是我就参加了跨境电商的 Java 面,前两面相当顺利,所以给我加了总监面,总监面问得有点压力。值得一提的是网易的笑招组(没有打错)很有意思,发的通知都特别调皮,在杭州 G20 过后给我发了 offer。
最后是阿里的转正面试,其实转正面试主要是考核你在短短两三个月的实习中的成长,对于做业务系统需求的实习生来说,最重要莫过于你对业务的理解有多深,对于项目的业务意义有多清楚,以及实现过程遇到问题的解决方式。简单来说就是讲清楚,并且要从更高的维度开始讲。我当时跟 P9 的面试官讲我做的项目,是从整个大的主业务慢慢讲到自己做的项目,将我做的改动的业务意义讲得很清楚,于是他也听得津津有味,一连听我讲了两个项目,对我的评价也很好。也就是说也许你做的改动特别小,可能就是个增删改查,但是一旦你能想清楚你所做的改动对于整个业务的意义,此时它就不是一个简单的东西,而是有特定业务意义。如果你停留在做增删改查的层次,那么面试官绝对不会满意的。要想清楚业务的意义除了自己思考之外,一定要求助于对业务最熟悉的那个人,让他帮你理清思路。
我的整个校招经历基本就讲完了,拿了支付宝 offer 之后就没有继续面其他公司了,直接跑来继续实习了。在支付宝工作,技术上的成长是特别快的。
校招经验
下面总结一下我的校招经验,供大家参考。
重视找实习
一般每年3月份开始也就是春招的时候很多大公司就会开始招实习生了。在我看来,找实习就是校招的开始,而不是说等到6,7月份的秋招。为什么这么说?因为 BAT 今年校招的趋势就是优先招实习生,其次是内推,正式校招进来的很少。主要原因就是校招名额少了,以前可能正式校招会招不少人,但以后的趋势就是实习生,内推,想要正式校招进来会很难。所以说,能进 BAT 实习基本上一只脚就进 BAT 了,即使不能转正,有 BAT 实习经历也很好找工作。
说这么多无非就是强调准备实习面试的重要性,千万不要以为实习水水,等到秋招再努力,到时候就晚了。所以我的第一条经验就是重视找实习
打好基础
打好基础,怎么强调都不过分。面试三方看运气,七分看实力。基础起码占你实力的百分之五十。什么是基础?就是计算机的专业课。
大部分应届生是没有什么牛逼的项目经历的(包括我),所以大部分面试官对于校招最看重的就是基础,经常会问到就是快排,画 UML 图等。不要以为这些很简单,事实上一个快排就能刷了很多人。
专业课包括:
- 算法与数据结构
- 操作系统
- 编译原理
- 计算机组成
- C/C++
- 计算机网络
- 设计模式
- UML
- 软件测试
- IT 项目管理
软件测试和 IT 项目管理偏工程应用,对面试帮助不大,在学的时候也觉得没什么用,但其实真正工作了才知道它们的重要性。
上面每一门课的知识太多,就算是我也记不了那么多。但是面试就像考试,总有重点可以划。我的经验是去网上搜一下面经,多篇面经综合起来就可以看出哪些知识是重点。当然,考试只看重点也很难考高分,最好的方法自然是平时多努力,临考前抱抱佛脚。
我就不重复划重点了,网上已经有很多面经了,基础打好了,再根据实际情况重点突破,例如安卓要看看安卓源码,Java 要看看 JDK 源码等。
多做项目
学习编程的捷径只有一个:就是多动手写代码。看一千遍《算法导论》,不如动手做一道课后题。其实道理很简单,但是做起来很难,除非你自己对编程有兴趣,否则做项目对你来说就跟做作业一样痛苦。但是如果想要找一份编程的工作,总是要付出的。付出不是说看看书,背背题就行,而是要动手写代码,学以致用,否则永远都是纸上谈兵,别人一问就露陷了。
做项目也不是说随便水水,做出一个能用的东西就好,而是要精益求精,想想怎么能做得更好。很多时候面试官不按套路出牌问你一些实际问题,其实就是想考验你平时做项目有没有思考更多东西,而不是满足于实现功能。这些东西来源于平时的积累,所以平时做项目认真点,面试的时候底气就足一点。
项目的来源可以是课程的大作业,自己想做的东西(像我就做过刷课爬虫),老师的项目,学校申报的项目。只要你想做,总是有东西可以实践的。不要羡慕别人跟了某个牛逼的老师做项目,别人主动去找机会了,你自己不去争取,能怪谁?所以,找项目做一定要主动。
面试心态
心态对于面试表现是很重要的,第一次面试肯定会紧张,这种东西需要通过多参加面试解决。其次,准备越充分,面试就越不紧张,因为他问的东西你都能答上来,自然就不会紧张了。最后,对于失败要有乐观的态度,我第一次内推阿里失败的时候,内推我的师兄跟我说:面试过不了只是说明这个岗位不适合你,并不是说你的能力不行。所以要用良好的心态去对待面试,面试有运气的成分,此处不留爷,自有留爷处。让自己随时做好准备,总能找到合适的工作。
在没有坑之前,先让自己成为萝卜。
总结
其实要找一份合适的工作是不容易的,但是让自己做好准备,从心里重视找实习,平时打好基础,多做项目多思考,在面试过程中调整心态,好工作就是水到渠成的事情。最后推荐我写的一篇文章:程序员的知识管理,希望对大家整理自己的知识有所帮助。
网友评论