先说一下我的方向:Java开发岗。
我看过的书如下:
《剑指 Offer》
强烈推荐,书上的题我刷了三遍。这本书初期没有ACM经验的同学上手可能比较痛苦,但是当你真正刷完两遍,开始秋招面试时,你会发现这本书的算法题其实难度一般,相当于Leetcode easy难度,如果你没有这种感觉,说明你算法不过关。
建议是前期直接上手,为秋招算法功底铺路。
《程序员代码面试指南》左程云著
这本算法书我是在水牛客网时看到推荐的。书里面的算法题直接面向国内大厂,题目非常贴近面试算法题,我个人是把书里面的题目刷了一遍。
建议是在《剑指Offer》之后刷,题量比剑指要大,几乎涵盖了90%的秋招算法题
LeetCode
这个就不用多说了吧,不刷个150题就别去秋招哈(大神除外,规则永远是适用于我们这些小白菜的)
Java专业类:
《深入理解Java虚拟机》周志明著
关于Java虚拟机,别问,问就是必考。尤其是互联网大厂,当然国企银行除外。国企银行看中的是本科和研究生学历,成绩单,四六级成绩,荣誉证书这些,不在我这篇文章讨论范围内。有空我可以另外写写(今年我也拿到了一些银行Offer)
建议这本书是通读,重要星级是5星。等你秋招面试时就会感谢我。
《Java多线程编程核心技术》 高洪岩著
多线程以及锁这一块也是面试必问,尤其是Synchronized,还有线程池等等这些。这本书里对于这方面的内容有很深入的讲解。同样五星推荐。
408专业课相关书籍
408里除了计算机组成原理问的不多,其他三门也是面试里经常问到的。所以你如果想进入大厂的话,专业基础知识一定要牢固,一丁点儿弄虚作假的成分都不可能有。
《大型网站技术架构》李智慧著
大厂也会问一些学校里很难接触到的东西,比如分布式,比如负载均衡,比如缓存一致性,消息队列。这些问题是秋招面试时的常见问题,而这本不算厚的书里都有比较详细的讲解。五星推荐。
《Java编程思想》
这本大部头的书我放在了最后,因为这本书我也没有看完,但是他有多重要,有多经典不用我说,我建议是挑自己薄弱的环节去看,而不是通读。
上面我没有涉及到数据库的书籍推荐,但是这方面的知识也是特别重要,尤其是索引这一块。这里我分享一篇之前看到的关于数据库面试的文章,大家可以有个大致的感受一下。
一次阿里面试经历
接下来我分享两个开源的秋招面试知识点合集。这两个合集一定要好好研究,因为这相当于复习的大纲。
https://github.com/Snailclimb/JavaGuide
https://github.com/CyC2018/CS-Notes
最后,关于刷题。我推荐两个网站,一个是Leetcode,另一个是牛客网。秋招时互联网的笔试几乎都是牛客网系统提供的在线编程,所以可以在牛客网上提前熟悉一下环境,面试时一般也是用的牛客的在线视频面试。
最后,放上我之前记录的阿里面试的几轮问题,但我觉得这个远远没有上面我说的那些重要,因为内功才是最重要的。
一面
说说你自己的项目吧
看你项目涉及到了多线程,那你说说Java的线程池和线程池的参数吧
如果给你8G内存,500G固态硬盘,双CPU四核的配置,现在有100个用户访问你的系统,请你设计一下你刚刚说的那些线程池参数
了解Synchronized吗?它的底层结构是怎么实现的
了解HashMap吗,底层结构怎么实现的,多线程下能用它吗
那你说说ConcurrentHashMap是如何保证现成安全的
说一说TCP的拥塞机制
详细说一下TCP的三次握手以及为什么要三次握手,两次不行吗?
TCP第三次ACK时能够携带数据吗?
最后两道算法题
给你一个16*16矩阵,从最左上角到最右下角,有几条路径
给你一棵二叉树,怎么获得它的镜像二叉树
二面
做一下自我介绍吧
了解数据库吗,平时用过哪些数据库
说说Mysql的索引机制
操作系统了解吗,关于分页置换原理说说
volatile关键字有什么作用,底层是怎么实现的
我看你项目里用到了Redis缓存,具体说说怎么解决缓存一致性问题
一个String作为参数传递进来,如何在函数内部改变被传递进来的值(这题实质是考察JAVA里的反射,通过反射来改变String数据结构里的字符数组的值从而改变String的值)
接口和抽象类有什么区别
说一说JAVA虚拟机吧,越具体越好
出现Stack overflow有哪些可能
为什么重写equals要重写hashcode
算法题
如何用两个栈实现队列
删除链表的倒数第K个节点
三面
三面比较奇怪,感觉面试官特别忙,也没问我技术,就问我有没有参加过比赛,有没有得过什么奖,研究生怎么过的,最近在看什么书,有什么收获。大概就这些,全程15分钟左右。面完我有点懵,一度以为面的不是阿里的。
交叉面
自我介绍
讲一讲Https和Http的区别
为什么要用非对称加密,只用对称加密不行吗
一个SQL执行慢,有哪些可能
JVM调优有做过吗,当时你是怎么设置各个参数的
ThreadLocal内存泄漏了解过吗
TCP和UDP的区别,分别在哪些场景下使用
如何实现可靠的UDP
一个Spring项目是怎么启动起来的
Spring里一个Bean的生命周期
说说AOP的原理
最后问了一个topK类型的算法题
主管面?总监面?(反正是最后一轮技术面)
上来感觉说话很有气场,先很仔细的介绍了他们做的是什么,花了大概接近10分钟吧,然后让我详细的介绍一下我从大学到研究生的生活
之后就围绕我的项目展开提问,这部分因为每个人的项目不一样所以没什么参考价值。项目问的很细,能看出来是一位大佬,很有开发经验。问题里很多涉及到了大型网站架构方面的知识,大概的思路是怎么从一个几十人用户的小网站到上亿级别用户的大网站,这里面的架构设计是如何一步一步的升级的。一边问一边跟我讲解,真的十分佩服大佬的经验。最后问了我一道关于图的算法题。
HR面
当时在高铁上接到的HR面,因为环境有点吵,所以面的时间不长,因为听说阿里的HR貌似有一票否决权,所以丝毫不敢怠慢
详细的介绍一下你自己吧
你的优点和缺点是什么
当初跨专业考研为什么不选一个相对简单一点的学校
如何理解技术和商业化的
之后五年的职业规划是什么样的
有女朋友吗
以上就是我整个阿里面试的流程,最后贴一张意向书。愿下一个进阿里的有你。
在下面评论的明年都能去阿里哈哈