秋招投的基本都是Java研发岗,分享一下自己的复习策略
初级策略:看面经和刷题
如果是面试java开发的话,推荐JavaGuide这个仓库,里面覆盖的还比较全面
高级策略:看书和读源码
其实最开始我是拒绝看书的,因为觉得太慢,而且可能记不住,所以我使用了初级策略,但是在面试过程中有几件事情让我发现了秋招仅仅依靠面经是无法拿到大厂offer的
问题如下:
- 面试中让我实现HashMap的put函数伪代码,实现ThreadPoolExecutor的offer和take函数伪代码
- 大小端是什么样的,如何写代码判断,网络字节序c++和java会存在大小端转换问题么?
- 你对jvm看起来很了解,那双亲委派模型知道么?
- Spring的启动过程是怎么样的,用到了哪些类?
- 遇到大量wait_time状态怎么处理?
分析下上面几个问题,可以得到下面几个结论
- 我面的都是java和后台研发的岗位,但是不可避免的会碰到c++的面试官问c++相关的面试问题,尤其是网络编程上
- java面试如果仅仅看面经的话,遇到源码和更深入一层的问题基本顾及不到,而恰恰现在大厂的面试官都会去深入一步询问
所以只看面经很容易被识别出来,然后被面试官吊打,我只举了面试过程中遇到的5个较深入的问题,还有更多的问题我没列出来,而且可以认为有几个问题没答出来,就少了几个offer,今年的面试已经很难有问题不会可以给offer的空间了
基于上述结论我推荐几本我看过的书,都是豆瓣评分很高很经典的书籍,分别用于补充不同的部分,所有的书籍均可下载,下载链接,该推荐基于已经学过Java有一定编程能力的同志
Java研发书籍:
推荐阅读顺序:
Java高并发程序设计 -> JDK -> 深入理解Java虚拟机 -> MySQL必知必会 -> Redis开发与运维 -> TCP/IP编程 -> 图解HTTP -> Head First 设计模式 -> Java 8实战 -> 大型网站技术架构 -> 高性能MySQL -> 其他
书籍详情:
- JDK的collection,map,concurrent包必看
- Java高并发程序设计:必看,面试中高并发几乎是必问的点,如果没有系统的看过高并发程序如何写,类库如何用很容易被问晕
- 深入理解Java虚拟机:必看,经典中的经典,所有jvm和jmm相关的问题和知识都在这里有答案
- MySQL必知必会:必看,内容为sql语句的基本使用,建议配合牛客网的数据库实战编程来复习
- Redis开发与运维:必看,主要内容为Redis的使用和特点,讲解了Redis都有哪些可用的内容
- TCP/IP编程:必看,书中虽然都是C++,但基本覆盖了网络编程能遇到的问题,包括IO使用,网络字节序等
- 图解HTTP:必看,书很短一天就能看完,能很快的掌握http协议中的字段和含义,面试中也经常被问到
- Head First 设计模式:选看,讲java设计模式的,其中单例模式的四种实现被问得最多
- Java 8实战:选看,非常有价值的书籍,Java 8的新特性使得Java函数式编程成为了可能
- 大型网站技术架构:必看,面试中常常会遇到秒杀系统设计一类的问题,这时候需要有对分布式系统演化的理解
- 高性能MySQL:选看,内容为mysql的实现原理和性能优化,在面试中经常会被问到,读这本书会有更深刻的理解
- 其他:还有很多进阶的书籍,比如Spring揭秘、Netty权威指南、Redis设计与实现等,这些都可以后续再看
建议:学一个工具的时候,需要准备两本书,第一本书是讲如何使用的,第二本书是讲内部原理的,建议先将第一本书看个大概,再去开始做项目,一边做一边巩固,同时开始学习实现原理。