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

简介: 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

相关文章
|
2月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
20天前
|
存储 NoSQL 架构师
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
50 4
|
1月前
|
存储 NoSQL 算法
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
|
1月前
|
SQL 关系型数据库 MySQL
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
|
2月前
|
消息中间件 存储 canal
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?
|
2月前
|
消息中间件 架构师 Java
阿里面试:秒杀的分布式事务, 是如何设计的?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试阿里、滴滴、极兔等一线互联网企业时,遇到了许多关于分布式事务的重要面试题。为了帮助大家更好地应对这些面试题,尼恩进行了系统化的梳理,详细介绍了Seata和RocketMQ事务消息的结合,以及如何实现强弱结合型事务。文章还提供了分布式事务的标准面试答案,并推荐了《尼恩Java面试宝典PDF》等资源,帮助大家在面试中脱颖而出。
|
2月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
|
2月前
|
Kubernetes 架构师 算法
阿里面试:全国14亿人,统计出重名最多的前100个姓名
文章介绍了如何解决“从全国14亿人的数据中统计出重名人数最多的前100位姓名”的面试题,详细分析了多种数据结构的优缺点,最终推荐使用前缀树(Trie)+小顶堆的组合。文章还提供了具体的Java代码实现,并讨论了在内存受限情况下的解决方案,强调了TOP N问题的典型解题思路。最后,鼓励读者通过系统化学习《尼恩Java面试宝典》提升面试技巧。
阿里面试:全国14亿人,统计出重名最多的前100个姓名
|
2月前
|
存储 缓存 NoSQL
阿里面试题:缓存的一些常见的坑,你遇到过哪些,怎么解决的?
阿里面试题:缓存的一些常见的坑,你遇到过哪些,怎么解决的?
|
2月前
|
存储 Kubernetes 架构师
阿里面试:JVM 锁内存 是怎么变化的? JVM 锁的膨胀过程 ?
尼恩,一位经验丰富的40岁老架构师,通过其读者交流群分享了一系列关于JVM锁的深度解析,包括偏向锁、轻量级锁、自旋锁和重量级锁的概念、内存结构变化及锁膨胀流程。这些内容不仅帮助群内的小伙伴们顺利通过了多家一线互联网企业的面试,还整理成了《尼恩Java面试宝典》等技术资料,助力更多开发者提升技术水平,实现职业逆袭。尼恩强调,掌握这些核心知识点不仅能提高面试成功率,还能在实际工作中更好地应对高并发场景下的性能优化问题。

热门文章

最新文章