过五关斩六将,五轮阿里Java后端社招面试


年底向阿里和字节投递了简历,有幸都拿到了offer。可能是我运气比较好,总的来说两家公司的面试体检都非常好,流程很快,面试官也都很专业。

字节是三轮技术面+一轮HR面,阿里是四轮技术面+一轮HR面。一些技术问题,这里简单罗列一。很多问题是回答以后再接着延伸问的,类似的问题在这边我就直接给他合并了。

废话就不说了,趁着还能想起一些东西来,记录一下本次社招面试过程。还有一点,不管是阿里还是字节,手写算法都是在他们提供的ide上写的,没有提示,不能编译,只能写完run。这个比较难受。

因为文章篇幅原因,下面只讲解阿里面试过程,后续会再加上字节面试过程。

一面(约 1 hour)

一面的知识都篇基础一些,也都是之前面试常问的问题,我把主要问题都列了一下,可以直接点开链接看答案(最好能关注我们的公众号「Java面试指导」,可以直接打开小程序,PC 端还是不太方便)

  • 个人介绍

线程池都有哪几种工作队列?

说一说几种常见的线程池及适用场景?

Java线程池实现原理

在浏览器中输入url地址到显示主页的过程

TCP建立连接时为什么要传回 SYN

滑动窗口和流量控制

介绍一下内存池、进程池、线程池

说下你对进程同步的理解

  • 算法题:非常经典的链表反转问题,给一个链表,能将链表反转过来,这个比较简单,但是面试官主要考虑你边界问题,代码就不给出了,可以自行百度一下。

二面(约 1 hour)

二面一开始是聊项目,然后就开始问技术方面的知识,感觉整体知识点要难一些,特别是对MySQL、消息队列的问题问的比较多,最后也有算法考察,但是算不难,主要面试的内容,我也简单罗列一下:

  • 聊采集的项目,对filebeat有哪些改动,改完以后如何确保对其它模块没有影响(可能是因为我面的部门,入职后也会做这个相关,问得很细)

  • 平时Elastic Search使用场景,如果做数据同步。ES准实时性问题。

单例模式的线程安全性

什么是线程的阻塞问题?如何解决?

有了解过“回表”的概念吗?什么情况下会出现“回表”?

MySQL的redo日志和undo日志分别有什么用?

MySQL主从复制原理流程分布式 Session了解过吗?如何实现?

负载均衡的实现方案有哪些?

消息如何保证幂等性

消息队列积压怎么办

如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时怎么解决?

  • 算法题:给一个有序数组,找出第一个比k大的数字的下标。要求自己写测试用例(感觉也是考察的一环,边界条件一定要想清楚)

三面(约 50 min)

三面面试官感觉好像很忙,问题一个接一个问得非常快,没做算法题,整体面试时间在50分钟左右。

  • 接手一个新项目,不了解的情况下,如何避免出问题。(这个当时感觉没答到点子上,只说了要分支测试要充分啥的。面完以后想想,应该包括性能测试、灰度部署、以及可观测性监控这些点。)
  • 怎么解决Redis 热key。我只回答了本地缓存、Redis集群水平扩容。但是面试官对这两个答案不够满意,让我考虑本地缓存被击穿,就是经常有大量请求打到Redis的场景。集群扩容太重 ,问我有没有其它方案。
  • 也让我写了几个 SQL,但是感觉也都不太复杂。
  • 其实三面问了挺多问题,但是他问得很快,我那天又很懵。状态很差,记不清楚了(前一天在公司通宵了,第二天又失眠了,差不多四十多小时没睡在面试……)

四面(约 30 min)

四面面试官休假了,就直接先HR面了。

和字节差不多的问题,不过因为他们知道我在面字节。还问了一下,我自己的倾向性。这里我比较坦诚,直接说了倾向于阿里的中后台岗位。所以后面给的评级待遇啥的,他们应该就是卡着字节给。

五面(约 40 min)

五面本来很紧张,因为了解到是个级别非常高的大佬。不过,这面反倒最简单,就是聊聊天。

话题主要有:原公司的业务模式,盈利模式,技术团队规模,服务器规模等,聊一些价值观念。离职原因,对跳槽的看法,对加班的看法。对转岗活水的看法。对新技术是否有跟踪,平时会做哪方面的积累。反正很泛。

感觉这一面主要考察一个人的价值观,和逻辑思维能力,说话得有条理。这个我没做好,东拉西扯的。


“Java 面试题指南”经历接近一年的迭代打磨,目前已经提供了小程序刷题、PC 端访问(https://java.ecool.fun/)。截至 2022 年 2 月 28 日,已经录入 Java 常见面试 800+ 题,想刷 Java 面试题的小伙伴千万不要错过。我们在近期推出了简历指导、模拟面试等付费功能,有想了解的小伙伴们可以添加小助手微信(interview-java)进行咨询哦~