秋招差不多可以告一段落了,简单记录一下吧。
浑浑噩噩的开始
时间飞快,转眼就到了7月份,好多公司的秋招提前批也已经开始了,我也是时候该海投一波简历了。那么问题来了,要投什么岗?Java、算法还是大数据。Java是从本科开始一直在做的,不过也只是一些简单的Web项目,而且Java要准备的东西太多了,各大框架都仅仅是会用,一问原理就一脸懵逼了;研究生期间做了一些有关TensorFlow
、机器学习算法的东西,但都是自学水平,要论文没论文,要竞赛没竞赛;大数据嘛,好像各个公司都不太缺人,而且自己对Hadoop
、Spark
也是自学水平,做的那个项目太小了。最后想来想去,首先pass掉了算法岗,因为算法岗投的人太多了,竞争太激烈犹如神仙打架,还是先投大数据吧,毕竟自己也比较喜欢数据处理相关的工作,先试试看吧,不行的话正式批再投Java
。
就这样面了几次大数据岗,都是一面挂。。我会的实在太基础,好多问题都只能回答上来面试官问的第一个问题,比如面试官先让介绍一下MapReduce
过程,OK,这个我会,之后呢,人家再一个shuffle
过程有什么缺点,要怎么解决,就把我问住了。。。而且这些东西因为我没做过实际的项目,看起来很吃力,不能理论结合实际,就只能死记硬背了;不像Java,学一些知识点时经常能想到,原来这块底层是这么实现的啊,那知道了这个原理我以后还可以这么用,然后就会加深记忆。综上,我选择了及时止损,开始只投Java岗。此时时间已经来到了8月中旬。
Java面试感受
现在面了几十次,来说一点面Java的感受。
在刚开始找Java开发的工作之前,我有关Java开发的思想还停留在两三年前,以为SSM框架(Spring
+ SpringMVC
+ Mybatis
)对面试特别重要,觉得Hibernate
、strusts2
这些老框架也会被经常问到,结果面了几场后发现,根本不是这样啊,感觉自己完全out了,现在Spring
都算比较老的技术了,而且后台框架其实在整个Java面试中的比重根本没想象中那么大,而且问的话也都比较偏前沿,Spring Boot
、Spring Cloud
、微服务这些问的比较多,感叹现在技术发展之快啊。
其实最大的感受是,Java并发编程太重要了,几乎每场面试,无论大小公司,都会问到多线程、线程池、synchronized
、各种锁等等这些东西;问的第二多的是HashMap
、 ConcurrentHashMap
、 TreeMap
、HashSet
、 ArrayList
等这些集合框架;然后就是JVM了,内存结构、垃圾回收算法、垃圾收集器、如何调优等等。感觉在Java方面如果把《深入理解Java虚拟机》、《Java并发编程实践》这两本书吃透,其他后台框架就算不会都能拿个不错的offer了。
除此之外,基础课程中必须得会的有:
- 数据库(重点是索引、事务隔离级别、锁、SQL语句场景题)
- 计算机网络(重点是TCP、HTTP)
- 数据结构(重点是链表、二叉树、排序、哈希表……好吧整本书都挺重要)
- 操作系统(重点是进程线程的区别、进程间通信、死锁、页面置换算法、Linux常用指令)
- 设计模式(设计模式的分类、设计原则、最基础的单例模式、工厂模式得会)
加分项(实在不会也影响不大):
- Redis
- 消息队列
- zookeeper
- Spring全家桶及其原理
- Dubbo、微服务
一点建议
希望后面求职的学弟学妹们,早早准备,争取去大厂实习,对之后找工作会很有帮助。
哦对了,刷题,一定要刷题,最起码把《剑指offer》上的66题得刷完,之后再刷个LeetCode上的hot 100题。
刷题可以从现在就开始了,基础知识最好在寒假期间开始看吧,太早了容易忘,然后开学后去找暑期实习。
秋招过程中多总结、查漏补缺、多和同伴交流,多去牛客网上看看面经,今年Java并发问的多,也许到明年JVM又问的多了呢。
面试中,面试官更看重的是你技术的深度,而非广度。所以平常学习时就应多思考why,而不是只会how就行了。
推荐个公众号:
- 码农求职小助手(微信号:
pcwlJava
),这个作者是个浙大硕士,总结了很多干货面经,高频面试问题。 - Java的架构师技术栈(微信号:
fdd_sxu_nwpu
),这个作者也是西工大的,计算机学院18级硕士,看了几篇文章,他对源码剖析的比较深入,语言简练,通俗易懂。
刷题不会看题解:
https://github.com/azl397985856/leetcode
https://github.com/MisterBooo/LeetCodeAnimation
再补充个实验室大师兄阿里大佬周健华写的面经:https://github.com/StarryNight678/code_interview ,对求职也很有帮助。