突如其来的一面
- 电话预约:阿里的电话总是那么突然,经常在上班上的好好的时候,就突然来了说个杭州的座机电话,接的多了看到就可以猜到。大家习惯就好,一般面试官会提前打电话预约时间,可以预约一个自己合适的时间,因为阿粉我加班比较多,所以预约的都是晚上 9,10 点~,不得不说,阿里的面试官也挺辛苦的。
- 介绍自己:常规流程,简单介绍自己的毕业院校,工作经历以及一些兴趣爱好,提交准备好,多背几遍。
- 介绍自己做的项目:按照自己熟悉的项目流程框架去逐步介绍,项目主要做了什么,用了什么,这里一定要讲自己熟悉的部分,因为面试官会根据你提到的技术点展开后续的问题,千万不要给自己挖填不了的坑。我这边介绍的时候提到了 Kafka,所以后面面试官问了好几个 Kafka 的问题,所以一定要说自己熟悉的技术。
- 项目中最有难度和记忆最深刻的项目:这个问题按照实际去回答就好,可以说自己做过的但不一定是最难的,可以是自己最熟悉的,觉得有亮点可以说的,避免讲不了几句就没话可说的情况。
- Hashmap 原理:Java 面试的必问问题,不需要多说什么了。这里需要注意,不能只看到表面现象,需要学会多延伸问题,从 Hashmap 可以延伸到 HashTable,ConcurrentHash,以及线程安全等问题。
- 底层红黑树是什么?什么是红黑树:这个问题就是对上面问题一个很好的补充,Hashmap 在 Java8 的时候,会将链表在长度大于8的时候进行链表转红黑树,那么同样这也是一个延伸问题。红黑树:是一种平衡二叉查找树,
- ArrayList 与 LinkedList的区别:回到插入数据和存储数据时的区别,底层的数据结构等。
- ArrayList 扩容的过程是什么样子的
private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
“elementData默认大小为 10,每次扩容采用原始大小加上原始大小的一半
- 常用排序算法和时间复杂度
排序名称 | 稳定性 | 平均时间复杂度 | 最好时间复杂度 | 最坏时间复杂度 |
桶排序 | 不稳定 | O(n) | O(n) | O(n) |
基数排序 | 稳定 | O(n) | O(n) | O(n) |
归并排序 | 稳定 | O(nlogn) | O(nlogn) | O(nlogn) |
快速排序 | 不稳定 | O(nlogn) | O(nlogn) | O(n^2) |
堆排序 | 不稳定 | O(nlogn) | O(nlogn) | O(nlogn) |
冒泡排序 | 稳定 | O(n^2) | O(n) | O(n^2) |
选择排序 | 不稳定 | O(n^2) | O(n^2) | O(n^2) |
- 快排的实现原理:双指针,建议在纸上自行手写实现,这样才容易记牢。
- Kafka 事务处理机制
- Kafka 消息重复消费如何处理
- Kafka 如何保证消息的可靠性
- 线上FullGC 处理方法
- 垃圾回收介绍下
- 多进程和多线程有什么区别
- 类加载机制
- 开发过程中关于规范的代码有什么好的可以分享
- Spring 解决循环依赖
一面相对来说是比较偏技术细节的,从语言本身到 JVM,再到框架和工具都有涉及。
二面
二面的电话,同样还是那么的突如其来。。。二面的内部比较宽泛,偏项目和个人发展,没有标准答案,大家自行思考即可。
- 介绍自己,并介绍一下自己做的项目
- 自己主要负责哪块内容,其中印象最深刻的项目是什么
- 项目中遇到的最难的问题是什么,怎么解决的,
- 项目在生产上有没有遇到过问题,是什么样子的问题以及如何解决的
- 有没有因为 bug 或者其他原因导致的线上问题
- HashMap 与 ConcurrentHashMap的区别
- 线程池的实现原理
- GC 垃圾回收器的理解
- 慢 SQL 优化有什么建议
- Kafka 的基本组件和消息流程
- 使用 Redis 如何实现一个分布式锁
- 本人觉得工作这么久对业务有什么重大的贡献
- 项目小组有多少人,个人觉得自己在小组中是什么样的位置
- 工作这么久觉得业务上有什么缺陷,怎么优化
- 是否有参与项目架构的讨论和设计
- 业余时间一般做些什么
- 有 Github 账号,那GitHub 上印象最深刻的项目是什么
从二面的题目上可以看得出,考察的是各方面的能力,项目经历和设计能力,沟通能力以及学校能力,可谓是方方面面都在考察。
结语
二面过去了很久还没接到电话,阿粉我就知道肯定是到此为止了。哎,很遗憾阿粉我就进行到了二面,没机会给大家介绍三面的内容了,不过阿粉我会努力的!争取下次给大家分享三面的内容。
虽然阿粉这次失败了,但是阿粉我并没有气馁,只能说明阿粉还有很大的进步空间,下次再战!
最近疫情严重,在家待着哪里都不能去,刚好阿粉要在我好好学习学习,争取等到疫情结束过后再次冲击!
End