秋招的一波社招面经:蚂蚁金服、拼多多、字节跳动

蚂蚁金服

一面


算法题,给了长度为 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 为什么要设计双亲委派模型?


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


做题:手写一个对象池


有什么想问我的

小结

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


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

#Java##后端##大厂##面试##阿里面试#
全部评论
这是社招吗?
点赞 回复 分享
发布于 2022-09-16 22:07 广东

相关推荐

03-31 17:50
已编辑
四川大学 Java
那段时间,我的求职失败率高得离谱2025年春招,我连续被拒了20次。不是没去面试,是去了,然后失败了。有的是在简历筛选环节,有的是笔试,有的是一面,有的甚至是终面——已经聊得那么好了,然后等了三天,一封“非常遗憾”的邮件出现在邮箱里。那段时间我陷入了一种很奇怪的状态:每天在备考,但心里有一个声音说“有用吗?你不是那块料”。然后有一天我朋友发给我一段话:你感受到的痛苦,80%来自你对失败的错误解读,而不是失败本身。我花了三天认真想了这句话,然后想通了三件事。这三件事不是鸡汤,是让我最后成功上岸的认知升级。👉🏻第一件事:你看到的成功者,都经过了选择性过滤你有没有注意到一个现象:你身边拿到大厂offer的同学,他们的故事永远是“我投了10家,拿到了3个offer”?但你很少听到有人说:我投了50家,只有3家给了我机会,其中有20次面试彻底失败。这就是统计学上著名的“幸存者偏差”——你看到的成功故事,都是经过选择性展示的结果。成功者展示了他们最终成功的部分,但隐去了所有的失败过程。真实情况是:你在牛客、知乎上看到的每一个“成功上岸”的帖子背后,都有3到5倍你看不到的拒信。当你意识到这一点,你对“被拒”这件事的解读会彻底改变。被拒不是异常,被拒是正常的。上岸才是小概率事件,需要积累足够多的尝试。所以,不要用单次失败来评价自己的能力,你需要的是足够多的尝试次数。✍🏻️第二件事:等待比被拒更有害被拒之后,很多人会陷入一种等待状态:等某家公司回复,然后暂停所有行动。“万一他们打电话来了怎么办”“等这家的结果出来再决定下一步吧”。这种等待是最消耗人的状态。原因有两个:第一,等待期里你什么都做不了,焦虑会无限放大,大脑开始反复演练失败场景;第二,求职是一个需要状态积累的过程,每一次面试都是在练习,越练越好,一旦中断了这个节奏,重新开始时状态会明显下滑。正确的心态是:把每一个应聘流程当作独立事件来处理,同时并行推进5到10个。当A轮次被拒的时候,你的B、C、D还在进行中。你不是在靠单次成功博运气,你是在让概率为你工作。✊🏻第三件事:有效复盘和无效复盘的区别很多人被拒之后会复盘,但大多数复盘是无效的。无效复盘长这样:这道题我没答上来,我真没用;我的学校不如他们,肯定就是这个原因。——这些找的是无法改变的原因,或者无法落实到具体行动的情绪解读。有效复盘是什么样的?有效复盘是找到可以在下次面试里改变的具体行为。“这道关于分布式一致性的题目,我当时只说到了CAP定理,没有展开讲Raft和Paxos的区别,下次要把这块补上。”“我在回答项目经历的时候逻辑不清晰,下次要先说背景和问题,再说我做了什么,最后说结果。”有效复盘的标准是:每次复盘结束,你能写下至少3条“下次我要做什么不同”的具体行动清单,而不是一堆情绪发泄。这种复盘,20次拒信之后你能积累60条改进清单,每一条都让你变得比上一次更强。关于心态,最后说一点不鸡汤的话我不想用“相信自己”这种话来结束这篇文章,因为这些话你已经听了一辈子了,它们不会让你好受,也不会让你变得更好。我想说的是:求职的本质是一场概率游戏,而你能控制的是两件事:第一,提高每次尝试的质量(认真备考、打磨简历、做好功课);第二,增加尝试的次数(不要因为某一次失败而停下来)。在这两件事上把精力用对,剩下的交给概率。被拒20次之后,我的第21次面试,我拿到了offer。不是因为我第21次突然变得很厉害,而是前20次积累的复盘和练习在第21次发挥了作用。你的拒信不是终点,是素材。
秋招,不懂就问
点赞 评论 收藏
分享
评论
14
111
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务