从安卓转到 Java 开发,再到 4 面斩获抖音 offer,盘点自己的晋升经历

63 阅读6分钟

抖音面试场景还原,最真实的面经


抖音第一面:

  1. 做一下自我介绍吧,简单说一下你的项目;

  2. 有遇到过内存泄漏吗?你们是怎么解决的?

  3. Java 的基本类型有哪几个?String 是不是 java 的基本类型?String 为什么要是 final 类型的?

  4. 反射机制的底层实现是什么?动态呢?动态的实现原理?

  5. HashMap 了解吗?说一下 hashmap 相关的一些东西?hashmap 是线程安全的吗?为什么是线程安全的?

  6. concureenthashmap 了解吗?他是如何实现线程安全的?

  7. 你刚才说 1.8 基于 cas?cas 的 ABA 问题怎么解决?

  8. 说一下 JVM 的线程模型?这些区域都分别是干啥用的?、

  9. 说一下 Java 类加载器的工作机制?类加载在哪个域进行的?

  10. 说一下 Java 的线程模型?

  11. violate 了解吗?它的原理是什么?violate 是线程安全的吗?

  12. 保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读

  13. 数据库的索引有哪几种?为什么要用 B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC 机制了解不?MVCC 机制有什么问题?怎么去解决这个问题?mysql 慢语句调优做过吗?说说你是怎么做的?

  14. redis 了解吗?你说说怎么用 redis 实现分布式锁?

  15. spring 中 Bean 的作用域,springMVC 的 controller 是线程安全的吗?怎么去保证线程安全呢?

  16. 消息队列有用过吗?说说你怎么用的?

  17. 计算机网络了解吗?说一说 TCP 三次握手和四次挥手吧

  18. time_wait 状态产生的原因是什么?,有什么危害?可以如何避免?

  19. 寻找旋转排序数组中的最小值

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

请找出其中最小的元素。

你可以假设数组中不存在重复元素。

示例 1:

输入: [3,4,5,1,2]

输出: 1

示例 2:

输入: [4,5,6,7,0,1,2]

输出: 0

抖音第二面:

  1. 首先还是问项目。

  2. String,StringBuffer,StringBuilder 的区别,为什么 String 是不可变的,StringBuffer 和 StringBuilder 哪个是线程安全的,他们分别适用于什么场景。

  3. java 类加载过程是怎么样的,说一下 volatile。

  4. 并发包了解吗?假如几个线程之间相互等待,可以用哪个并发类来实现,他的原理是什么?

  5. 数据库慢查询优化了解哪些?

  6. 说一下 spring 容器的启动过程?

  7. 讲一下分布式锁,基于 zookeeper 实现和 redis 实现在性能上有什么差异?

  8. kafka 如何保证不丢消息又不会重复消费。了解大数据相关的一些技术吗?

  9. 最后写了道题:跳跃游戏;

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

示例 1:

输入: [2,3,1,1,4]

输出: true

解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

示例 2

输入: [3,2,1,0,4]

输出: false

抖音第三面:

  1. 自我介绍

  2. 项目介绍

  3. 怎么管理项目成员

  4. 当意见不一致时,如何沟通并说服开发成员,并举个例子

  5. 怎么保证项目的进度

  6. 数据库的索引原理

  7. 非聚簇索引和聚簇索引

  8. 索引的使用注意事项

  9. 联合索引

  10. 从底层解释最左匹配原则

  11. Mysql 对联合索引有优化么?会自动调整顺序么?哪个版本开始优化?

  12. Redis 的应用

  13. Redis 的持久化的方式和原理

  14. 技术选型,一个新技术和一个稳定的旧技术,你会怎么选择,选择的考虑有哪些

  15. 说你印象最深的美团点评技术团队的三篇博客

  16. 最近在学什么新技术?

  17. 你是怎么去接触一门新技术的?

  18. 会看哪些书

  19. 怎么选择要看的书

  20. 为什么要转 Java?

抖音第四面:

  • 在原公司的哪一段时间是比较享受的?

  • 为什么现在出来看机会呢?看什么类型的机会?

  • 同事或者朋友之间如何评价你?

  • 平时如何学习呢?有没有什么技巧?

  • 你对我们的业务方向有了解吗?

  • 你的职业规划是什么?

  • 你的一些优点有哪些?

  • 目前还在看哪些机会呢?手里还有别的 Offer 吗?

  • 转 Java 之后有遇到哪些困难?怎么解决的?

抖音 4 面面试题完整答案(详细解析版):

从安卓转到 Java,我经历了哪些?如何才敢挑战美团?

(一)清楚自己要什么:调整心态,多给自己勇气,重新规划目标

安卓转 Java,这个想法是需要比较大的勇气的,前后我大概是纠结了一年多的时间才做出了决定,期间的心态是比较复杂和焦虑的,最主要的是“担心”,所以要想成功转到 Java,首先第一个难关就是自己的心态问题。这个过程中,我不断给自己加油打气,重新规划目标,才得以冷静且稳定下来,重新规划了自己的目标。

(二)清楚自己学什么:重新梳理知识结构,整理知识脉络

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的社区(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!