社招 Java 面经:蚂蚁金服、拼多多、字节跳动(现已入职蚂蚁)

蚂蚁金服

一面

算法题,给了长度为 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,MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL.Spring.Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈

需要获取得话麻烦一键三连+评论,然后添加 小助理:java910 即可获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字节跳动是一家知名的互联网公司,提供多样化的在线服务和产品。在字节跳动的go实习面经中,通常会包含以下几个方面的内容: 1. 基础知识测试:字节跳动会对应聘者的基础知识进行测试,例如数据结构、算法、计算机网络等方面的知识。这一部分的问题可以是选择题、填空题、编程题等形式,用于评估候选人的基础水平。 2. 项目经历和实践能力评估:字节跳动也会关注应聘者的项目经历和实践能力,询问候选人在实习或学校项目中担任的角色、面临的挑战、解决方案以及取得的成果。通常会以开放性问题形式出现,侧重考察候选人的思维能力和解决问题的能力。 3. 技术深度面试:在技术深度面试环节,字节跳动会聚焦于候选人在Go语言相关技术方面的掌握情况。例如对候选人对Go语言的理解、熟练程度以及应用经验进行详细的询问和讨论。 4. 沟通与团队合作:字节跳动非常注重候选人的沟通能力和团队合作能力。所以在面试过程中,他们可能会提问候选人在团队合作中的角色、如何和其他成员协作以及如何解决团队遇到的问题等。 5. 自我介绍和问题回答:面试的最后要求候选人进行自我介绍,这是一次展示个人的机会。同时,面试官还可能询问一些与实习相关的问题,了解候选人对实习的期望、目标以及对字节跳动的了解程度。 综上所述,字节跳动的go实习面经主要包括基础知识测试、项目经历和实践能力评估、技术深度面试、沟通与团队合作以及自我介绍和问题回答等环节。应聘者需要准备充分,熟悉Go语言相关知识,并能够展示自己的技术能力、项目经历以及团队合作等方面的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值