查看原文
其他

学渣阿粉的首次阿里面试之路

鸭血粉丝 Java极客技术 2020-12-28

Hello 大家好,我是鸭血粉丝,今天跟大家分享一下阿粉我的阿里巴巴面试经历,由于阿粉记忆不好,部分题目忘记了,另外只列出相关题目,部分提供思路,具体的答案请大家自行在家解答,毕竟大部分同学距离开工还有几天时间,这几天可以不用数大米了,来做做题吧。

突如其来的一面

  1. 电话预约:阿里的电话总是那么突然,经常在上班上的好好的时候,就突然来了说个杭州的座机电话,接的多了看到就可以猜到。大家习惯就好,一般面试官会提前打电话预约时间,可以预约一个自己合适的时间,因为阿粉我加班比较多,所以预约的都是晚上 9,10 点~,不得不说,阿里的面试官也挺辛苦的。

  2. 介绍自己:常规流程,简单介绍自己的毕业院校,工作经历以及一些兴趣爱好,提交准备好,多背几遍。

  3. 介绍自己做的项目:按照自己熟悉的项目流程框架去逐步介绍,项目主要做了什么,用了什么,这里一定要讲自己熟悉的部分,因为面试官会根据你提到的技术点展开后续的问题,千万不要给自己挖填不了的坑。我这边介绍的时候提到了 Kafka,所以后面面试官问了好几个 Kafka 的问题,所以一定要说自己熟悉的技术。

  4. 项目中最有难度和记忆最深刻的项目:这个问题按照实际去回答就好,可以说自己做过的但不一定是最难的,可以是自己最熟悉的,觉得有亮点可以说的,避免讲不了几句就没话可说的情况。

  5. Hashmap 原理:Java 面试的必问问题,不需要多说什么了。这里需要注意,不能只看到表面现象,需要学会多延伸问题,从 Hashmap 可以延伸到 HashTable,ConcurrentHash,以及线程安全等问题。

  6. 底层红黑树是什么?什么是红黑树:这个问题就是对上面问题一个很好的补充,Hashmap 在 Java8 的时候,会将链表在长度大于8的时候进行链表转红黑树,那么同样这也是一个延伸问题。红黑树:是一种平衡二叉查找树,

  7. ArrayList 与 LinkedList的区别:回到插入数据和存储数据时的区别,底层的数据结构等。

  8. 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,每次扩容采用原始大小加上原始大小的一半

  1. 常用排序算法和时间复杂度
排序名称稳定性平均时间复杂度最好时间复杂度最坏时间复杂度
桶排序不稳定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)
  1. 快排的实现原理:双指针,建议在纸上自行手写实现,这样才容易记牢。

  2. Kafka 事务处理机制

  3. Kafka 消息重复消费如何处理

  4. Kafka 如何保证消息的可靠性

  5. 线上FullGC 处理方法

  6. 垃圾回收介绍下

  7. 多进程和多线程有什么区别

  8. 类加载机制

  9. 开发过程中关于规范的代码有什么好的可以分享

  10. Spring 解决循环依赖

一面相对来说是比较偏技术细节的,从语言本身到 JVM,再到框架和工具都有涉及。

二面

二面的电话,同样还是那么的突如其来。。。二面的内部比较宽泛,偏项目和个人发展,没有标准答案,大家自行思考即可。

  1. 介绍自己,并介绍一下自己做的项目

  2. 自己主要负责哪块内容,其中印象最深刻的项目是什么

  3. 项目中遇到的最难的问题是什么,怎么解决的,

  4. 项目在生产上有没有遇到过问题,是什么样子的问题以及如何解决的

  5. 有没有因为 bug 或者其他原因导致的线上问题

  6. HashMap 与 ConcurrentHashMap的区别

  7. 线程池的实现原理

  8. GC 垃圾回收器的理解

  9. 慢 SQL 优化有什么建议

  10. Kafka 的基本组件和消息流程

  11. 使用 Redis 如何实现一个分布式锁

  12. 本人觉得工作这么久对业务有什么重大的贡献

  13. 项目小组有多少人,个人觉得自己在小组中是什么样的位置

  14. 工作这么久觉得业务上有什么缺陷,怎么优化

  15. 是否有参与项目架构的讨论和设计

  16. 业余时间一般做些什么

  17. 有 Github 账号,那GitHub 上印象最深刻的项目是什么

从二面的题目上可以看得出,考察的是各方面的能力,项目经历和设计能力,沟通能力以及学校能力,可谓是方方面面都在考察。

结语

二面过去了很久还没接到电话,阿粉我就知道肯定是到此为止了。哎,很遗憾阿粉我就进行到了二面,没机会给大家介绍三面的内容了,不过阿粉我会努力的!争取下次给大家分享三面的内容。

虽然阿粉这次失败了,但是阿粉我并没有气馁,只能说明阿粉还有很大的进步空间,下次再战!

最近疫情严重,在家待着哪里都不能去,刚好阿粉要在我好好学习学习,争取等到疫情结束过后再次冲击!

End


如有收获,请帮忙转发,您的鼓励是作者最大的动力!


精彩回顾:

阿粉带你学习设计模式之原型(Prototype)模式

因新型肺炎,多国对中国入境人员实施管制,网友猛批!

一次关于 Dubbo 服务 IP 注册错误的踩坑经历

长按二维码




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存