写点什么

详细!蚂蚁、字节、PDD 社招面经 Java 岗(分布式 + 线程安全 +MySQL+CAS)

发布于: 2021 年 03 月 05 日

蚂蚁金服

一面

  • 算法题,给了长度为 N 的有重复元素的数组,要求输出第 10 大的数。

  • 需要在 2 小时内完成。

二面

  • 自我介绍

  • 目前在部门做什么,业务简单介绍下,内部有哪些系统,作用和交互过程说下

  • Dubbo 踩过哪些坑,怎么解决的?

  • 对线程安全的理解

  • 乐观锁和悲观锁的区别?

  • 这两种锁在 Java 和 MySQL 分别是怎么实现的?

  • 事务有哪些特性?

  • 怎么理解原子性?

  • HashMap 为什么不是线程安全的?

  • 怎么让 HashMap 变得线程安全?

  • jdk1.8 对 ConcurrentHashMap 做了哪些优化?

  • redis 主从机制了解么?怎么实现的?

  • 有过 GC 调优的经历么?

  • 有什么想问的

三面

  • 自我介绍

  • 接下来就是全部问的项目,对自己的项目细节逐个盘问,最后问了下如何改进方案

  • 有什么想问我么?

四面

  • 介绍下自己

  • 问项目

  • 说说 Spring 的生命周期吧

  • 说说 GC 的过程

  • 强制 young gc 会有什么问题?

  • 知道 G1 么?

  • 回收过程是怎么样的?

  • 你提到的 Remember Set 底层是怎么实现的?

  • CMS GC 有什么问题?

  • 怎么避免产生浮动垃圾?

  • 有什么想问的么?

五面

  • HRBP 面,主要聊了部门在做的事情、职业发展、福利待遇等。阿里面试官有一票否决权,很看重你的价值观是否 match。

  • HR 面一定要诚实,不要说谎,只要你说谎 HR 都会去证实。

  • 最后 HR 还对我说目前稳定性保障部挺缺人的,希望我尽快回复。

小结

蚂蚁面试比较重视基础,所以 Java 那些基本功一定要扎实。

拼多多

一面

  • 聊项目

  • Java 中的 HashMap、TreeMap 解释下?

  • TreeMap 查询写入的时间复杂度多少?

  • ConcurrentHashMap 怎么实现线程安全的?

  • HashMap 多线程有什么问题?怎么解决?

  • CAS 和 synchronize 有什么区别?都用 synchronize 不行么?

  • get 需要加锁么,为什么?

  • volatile 的作用是什么?

  • 给我一张纸,画了一个九方格,都填了数字,给一个 MN 矩阵,从 1 开始逆时针打印这 MN 个数,要求时间复杂度尽可能低,可以先说下思路

  • 有什么想问我的?

二面

  • 自我介绍下

  • 手上还有其他 offer 么?

  • 部门组织结构是怎样的?

  • 系统有哪些模块,每个模块用了哪些技术,数据怎么流转的?给了我一张纸,我在上面简单画了下系统之间的流转情况

  • 链路追踪的信息是怎么传递的?

  • SpanId 怎么保证唯一性?

  • RpcContext 是在什么维度传递的?

  • Dubbo 的远程调用怎么实现的?

  • Spring 的单例是怎么实现的?

  • 为什么要单独实现一个服务治理框架?

  • 谁主导的?内部还在使用么?

  • 逆向有想过怎么做成通用么?

  • 有什么想问的

HR 面

主要问了些职业发展、是否有其他 offer、以及入职意向等问题,顺便说了下公司的福利待遇等,手上有其他 offer 或者大厂经历会有一定加分。

字节跳动

一面

  • 自我介绍

  • 聊项目

  • Redis 熟悉么,了解哪些数据结构? zset 底层怎么实现的?

  • 红黑树了解么,时间复杂度?

  • 既然两个数据结构时间复杂度都是 O(logN),zset 为什么不用红黑树

  • 线程池的线程数怎么确定?

  • 如果是 IO 操作为主怎么确定?

  • 如果计算型操作又怎么确定?

  • 跳表的查询过程是怎么样的,查询和插入的时间复杂度?

  • 说下 Dubbo 的原理?

  • CAS 了解么?还了解其他同步机制么?

  • 做题:数组 A,2*n 个元素,n 个奇数、n 个偶数,设计一个算法,使得数组奇数下标位置放置的都是奇数,偶数下标位置放置的都是偶数。先说下你的思路

  • 你有什么想问我的?

二面

  • 自我介绍

  • 问项目

  • 分布式追踪的上下文是怎么存储和传递的?

  • SpringMVC 不同用户登录的信息怎么保证线程安全的?

  • 我们聊聊 mysql 吧,说下索引结构,为什么使用 B+树?

  • Dubbo 的 RpcContext 是怎么传递的?主线程的 ThreadLocal 怎么传递到线程池?你说的内存泄漏具体是怎么产生的?

  • 线程池的线程是不是必须手动 remove 才可以回收 value?那你说的内存泄漏是指主线程还是线程池?

  • 什么是索引覆盖?

  • Java 为什么要设计双亲委派模型?

  • 什么时候需要自定义类加载器?

  • 做题:手写一个对象池

  • 有什么想问我的


一键三连+评论,然后添加我的 VX(tkzl6666)即可免费领取。





小结

头条的面试确实很专业,而且面试官最后给我了一点建议,就是研究技术的时候一定要结合技术的背景。

面试官都有一个特点,会抓住一个值得深入的点或者你没说清楚的点深入下去直到你把这个点讲清楚,不然面试官会觉得你并没有真正理解。


用户头像

微信:tkzl6666 添加获取你想要的Java资料 2019.01.29 加入

添加VX(tkzl6666 ) 获取大厂面试真题,面试复习资料,Java进阶资料,Java实战项目。

评论 (1 条评论)

发布
用户头像
详细!蚂蚁、字节、PDD 社招面经 Java 岗(分布式 + 线程安全 +MySQL+CAS)
2021 年 03 月 05 日 15:40
回复
没有更多了
详细!蚂蚁、字节、PDD社招面经Java岗(分布式+线程安全+MySQL+CAS)