Java后台方向求职经验

 
  笔者是19届(15级)信息工程学院软件工程系的学生,现已签约中国银联的软件开发工程师,方向是Java后台开发方向。

  本文适用于已经决定毕业以后直接就业,同时准备找Java方向的技术岗,但不知道如何准备的同学,全文约3000字,阅读大概需要10分钟。全文分两部分,所有干货都在第二部分,第一部分只是介绍一下笔者自身的情况。

一、自身情况介绍

  笔者是大概在大三上学期有了本科毕业以后直接就业的想法,在大三的寒假开始正式进行校招的准备,在大三下学期开学前一周左右开始投简历找实习,在大三到大四的暑假开始投秋招简历,在十月份左右陆续收到offer,在十一月份正式结束了求职的所有准备,确定签约。

  最终收到了以下几个offer:中国银联、苏宁、去哪儿网、4399游戏、茁壮网络、海康威视(最后一个其实不算,因为对方要求转岗,所以面试的时候就直接拒了,也就没有拿到正式的offer)。

二、Java方向求职路线

  这部分主要给读者提供一个准备校招的思路,共分四个部分(简历、笔试、面试、技术)
  从我的校招经历来看,在校大学生求职有如下两个途径:
avatar
  如果读者有志于找一份大厂的工作的话,建议以第二种方式为主,因为像BAT以及一些独角兽是基本上不会去几个学校的,大厂的校招一般都是以求职者自己网申,然后求职者等待公司的招聘安排为主。当然能够招应届生,有实力和财力培养应届生的企业实力都不会差,所以第一种方式的企业规模也不会太小。
  不管是哪种方式 ,选拔标准都是:简历+笔试+面试,所以想要准备校招的话,也要从这几点来下功夫。(校招其实有的地方很像考试,也需要应试技巧。)

(1) 简历

  简历应该是校招最先要准备的东西,不会写的话就在网上找模板,然后拿下来根据自己情况填,比如笔者简历分为以下几个部分:专业技能、实习经验、项目经历、校园经历。然后在醒目的位置写上了个人信息和求职岗位。
  写简历一方面是准备投递用的,另一方面是可以让你知道自己究竟什么地方还没有准备好,比如笔者写简历的时候发下专业技能写不了几条,实习经验根本没有,所以笔者就明确了第一步准备工作:学专业技术+找一个实习。
  简历写好以后保留一份电子版和若干份纸质版,纸质版A4纸打印即可,想正式一点可以用硬纸打印。
  注意电子版除了保存PDF版外,还要保存一版可以修改的,方便你在投递简历的时候根据不同公司对简历的细节进行修改,比如笔者在投简历给阿里巴巴时就会着重写出笔者的项目是部署在阿里云上的,而在给腾讯投递简历时就会把这行删除掉。

(2) 笔试

  大部分笔试的形式为线上笔试,也就是在一个规定时间内通过登陆统一网址来进行测试(一般为赛码网和牛客网,也有公司会开发自己的笔试系统),笔试过程一般会开启摄像头,但不会读取声音。摄像头里只要保证一直有笔试者完整的脸部即可,无须全身像。
  利用上面提到的两点,线上笔试的其实有很多技巧,特别是一些可以显著提高通过率的技巧,建议大家自己摸索。
  因为秋招是很重要的事,一家公司的笔试只有一场,一次机会,也许因为一个思路受阻就导致你丧失了这家公司面试的机会,也丧失了进这家公司的机会,所以不管你是否有实力,笔者的建议是先想尽一切办法通过笔试再说。

(3) 面试

  面试不同公司的面试形式区别很大,对于技术岗来说,常见形式是几轮技术面试+一轮HR面试,技术面试着重考察专业技能,HR面试更加关注言谈举止,以及薪资待遇。
  对于Java岗位,技术面试一般的面试官会从以下几个方面问问题:Java语言、数据库、操作系统(主要是Linux)、网络通信、算法等等。
  笔者认为面试还是比较看临场发挥的,也有很大的不确定性,笔者在面试美团二轮技术面的时候,面试官的前三个问题正好和笔者前一天晚上看的三篇博客完美契合,就导致前三个问题答得非常完美,在一开始给了面试官一个完美得印象。
  对于面试,笔者的建议是:1、自我介绍时多说自己擅长的东西,引导面试官从你的自我介绍中挑出问题来问你,这样保证面试官问你的问题你一定能回答。2、面试时不仅自己要多说,也要尽可能让面试官多说,让面试官觉得你们两个不只是面试,还是在探讨。笔者百度一面的时候就不停的问面试官问题,面试官也非常乐意解答,最后顺利通过。3、通常最后面试官会询问面试者是否还有问题,这时候能说尽量说,同时表达一下通过面试的强烈愿望。

(4) 技术

  笔者主要学习的是Java后台方向,在这里介绍一下想要通过校招,需要学习的一些地方:以下都是笔者自己学习时的一个思路,挂一漏万,不可能非常完美,仅供参考。

1、 Java部分:

avatar

2、数据库部分

  数据库和JavaWeb部分关系较为密切,可以一起学习,建议掌握常用的sql语句,熟悉一种常用的数据库驱动(如MySQL、SQLServer),了解一下事务处理、数据库引擎、行级锁、表级锁等概念;如果有余力,能够掌握一门非关系型数据库绝对是加分项。

3、操作系统

  这部分笔者掌握的并不好,建议读者可以掌握常用的Linux命令,同时熟悉一下Linux的相关机制。

4、网络通信

  笔者在网络部分碰到的最多的面试问题是关于TCP、UDP的区别的,基本每三场面试就会有一场问这个问题,建议深入了解一下,包括TCP的“三挥四握”等等。笔者碰到的这部分的第二多的问题是http、https相关的问题,也建议了解下。

5、算法

  算法是笔者最头疼的部分,这部分内容较多,包括常用数据结构、常用算法等,主要看平时积累,建议可以常去leetcode或者牛客网上做一做算法题,肯定会有收获。这部分常见问题包括:链表、树、图等数据结构,快速排序、堆排序、深度优先遍历、广度优先遍历、动态规划等常见算法。

6、其它

  上面几个部分是企业着重考察的几个部分,另外笔者还学习了以下相关知识,包括:

  1、 JVM相关知识,这个笔者是通过《深入理解Java虚拟机》一书学习的,会对理解一些Java机制有帮助,同时可以解决面试当中一些问题。

  2、 设计模式相关,这部分笔者主要是了解了下最常用的设计模式,单例、工厂、装饰等。

  3、 可以通过几个例子,了解下maven相关知识,这个很好懂,是用于jar包的管理的,也会方便今后的开发

  4、 git等版本控制工具,熟悉一下常用的命令即可。

  以上就是笔者在技术方面备战校招的所有准备工作,平心而论笔者在上面好多方面还有欠缺,但是至少这个思路应该是没错的。