学渣阿粉的首次阿里面试之路
Hello 大家好,我是鸭血粉丝,今天跟大家分享一下阿粉我的阿里巴巴面试经历,由于阿粉记忆不好,部分题目忘记了,另外只列出相关题目,部分提供思路,具体的答案请大家自行在家解答,毕竟大部分同学距离开工还有几天时间,这几天可以不用数大米了,来做做题吧。
突如其来的一面
电话预约:阿里的电话总是那么突然,经常在上班上的好好的时候,就突然来了说个杭州的座机电话,接的多了看到就可以猜到。大家习惯就好,一般面试官会提前打电话预约时间,可以预约一个自己合适的时间,因为阿粉我加班比较多,所以预约的都是晚上 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
如有收获,请帮忙转发,您的鼓励是作者最大的动力!
精彩回顾:
长按二维码