首页 > 科技 > 准备了大半年,面试字节跳动居然挂在第三面(Java岗面试总结)

准备了大半年,面试字节跳动居然挂在第三面(Java岗面试总结)

写在开头

互联网时代,最明显的标志就是每一家互联网公司都有属于自己的“拥护者”,比如在程序员界内,大部分都拥有阿里梦,这也意味着不少程序员都是阿里系的铁杆粉丝,想进入阿里工作是他们的梦想。而我不同,90后的我对字节跳动却是情有独钟。2012年出生的字节跳动,凭借飞速的发展,靠着头条和抖音两大王牌产品,成为了内容领域的王者,也受到不少年轻工作的青睐,其中也包括了我自己。

今年10月份,我给字节跳动投了简历,很荣幸接到面试邀请。这次面试机会,我准备了大半年才拿到,一面二面还算顺利,但在三面时候心态没放好,所以给面试官印象不太好,结果跟想象一样,凉了,不过并未气馁,准备准备明年二战。下面分享一波这次的面试经历以及个人的总结。

注意注意:以下整理的字节跳动面试题(含答案),以及算法+JVM+Spring+Redis+MySQL数据库等五类面试答案、学习笔记、实战文档,私信我【成长】免费领取!

字节跳动三面凉经

字节跳动一面:

  1. 自我介绍
  2. 聊项目
  3. Redis熟悉么,了解哪些数据结构? zset底层怎么实现的?
  4. 红黑树了解么,时间复杂度?
  5. 既然两个数据结构时间复杂度都是O(logN),zset为什么不用红黑树
  6. 线程池的线程数怎么确定?
  7. 如果是IO操作为主怎么确定?
  8. 如果计算型操作又怎么确定?
  9. 跳表的查询过程是怎么样的,查询和插入的时间复杂度?
  10. 说下Dubbo的原理?
  11. CAS了解么?还了解其他同步机制么?
  12. 做题:数组A,2*n个元素,n个奇数、n个偶数,设计一个算法,使得数组奇数下标位置放置的都是奇数,偶数下标位置放置的都是偶数。先说下你的思路
  13. 你有什么想问我的?

字节跳动二面:

  1. 自我介绍
  2. 问项目
  3. 分布式追踪的上下文是怎么存储和传递的?
  4. SpringMVC不同用户登录的信息怎么保证线程安全的?
  5. 我们聊聊mysql吧,说下索引结构,为什么使用B+树?
  6. Dubbo的RpcContext是怎么传递的?主线程的ThreadLocal怎么传递到线程池?你说的内存泄漏具体是怎么产生的?
  7. 线程池的线程是不是必须手动remove才可以回收value?那你说的内存泄漏是指主线程还是线程池?
  8. 什么是索引覆盖?
  9. Java为什么要设计双亲委派模型?
  10. 什么时候需要自定义类加载器?
  11. 做题:手写一个对象池
  12. 有什么想问我的

字节跳动三面:

  1. 自我介绍
  2. 接下来就是全部问的项目,对自己的项目细节逐个盘问,最后问了下如何改进方案
  3. Dubbo踩过哪些坑,怎么解决的?
  4. 对线程安全的理解
  5. 乐观锁和悲观锁的区别?
  6. 这两种锁在Java和MySQL分别是怎么实现的?
  7. 说说Spring的生命周期吧
  8. 说说GC的过程
  9. 强制young gc会有什么问题?
  10. 知道G1么? 回收过程是怎么样的? 你提到的Remember Set底层是怎么实现的?
  11. CMS GC有什么问题?
  12. 怎么避免产生浮动垃圾?
  13. 有什么想问的么?

面试前,我如何刷题?

面试前如何刷题,是很多应届生或跳槽人士的难点,所以技术能力都有,但在面试中总是失利。实际上我的三面之所以被挂,也是自己的表达方式有问题,实际上技术题都尚未难到我,所以面试前刷题,非常重要!以下是我面试前的刷题资料。

01 算法(LeetCode+算法必备39题)

  1. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  2. 判断101-200之间有多少个素数,并输出所有素数。
  3. 打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方。
  4. 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  5. 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
  6. ......

算法必备39题

LeetCode中文版

02 Java虚拟机(JVM相关)

  1. 内存模型以及分区,需要详细到每个区放什么
  2. 说一下GC 的两种判定方法
  3. GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
  4. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
  5. Minor GC 与 Full GC 分别在什么时候发生?
  6. 类加载的几个过程
  7. JVM 内存分哪几个区,每个区的作用是什么?
  8. 如何判断一个对象是否存活?
  9. 类加载器双亲委派模型机制?
  10. 什么是类加载器,类加载器有哪些?
  11. ......

03 Spring相关

  1. 什么是 Spring 框架?Spring 框架有哪些主要模块?
  2. 使用 Spring 框架能带来哪些好处?
  3. 请解释下 Spring 框架中的 IoC?
  4. BeanFactory 和 ApplicationContext 有什么区别?
  5. 如何用基于 XML 配置的方式配置 Spring?
  6. Spring 有几种配置方式?
  7. 如何用基于 Java 配置的方式配置 Spring?
  8. 怎样用注解的方式配置 Spring?
  9. 请解释 Spring Bean 的生命周期?
  10. Spring Bean 的作用域之间有什么区别?
  11. Spring 框架中的单例 Beans 是线程安全的么?
  12. ......

04 Redis相关(分为上卷-易和下卷-难)

  1. 什么是 Redis?简述它的优缺点?
  2. Redis 与 memcached 相比有哪些优势?
  3. Redis 支持哪几种数据类型?
  4. Redis 主要消耗什么物理资源?
  5. 怎么理解 Redis 事务?
  6. redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?
  7. redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 key 是如何寻址的?
  8. 使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?
  9. 知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?
  10. ......

05 MySQL高频55题

  1. 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert一条记录,这条记录的 ID 是 18 还是 15 ?
  2. Mysql 的技术特点是什么?
  3. Heap 表是什么?
  4. Mysql 服务器默认端口是什么?
  5. 与 Oracle 相比,Mysql 有什么优势?
  6. 如何区分 FLOAT 和 DOUBLE?
  7. 区分 CHAR_LENGTH 和 LENGTH?
  8. 请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
  9. ......

我如何汲取经验,上手实战?

01 MySQL性能优化的21个最佳实践

  1. 为查询缓存优化你的查询
  2. EXPLAIN 你的 SELECT 查询
  3. 当只要一行数据时使用 LIMIT 1
  4. 为搜索字段建索引
  5. ......
  6. 选择正确的存储引擎
  7. 使用一个对象关系映射器(Object Relational Mapper)
  8. 小心“永久链接”

02 Spring Boot 实战(8个章节快速掌握SpringBoot实战)

  1. 入门
  2. 开发第一个应用程序
  3. 自定义配置
  4. 测试
  5. Groovy与Spring Boot CLI
  6. 在Spring Boot中使用Grails
  7. 深入Actuator
  8. 部署Spring Boot应用程序

03 Redis实战(3个部分,11个章节,从入门-核心-进阶,彻底掌握Redis)

  1. 初识Redis
  2. 使用Redis构建Web应用
  3. Redis命令
  4. 数据安全与性能保障
  5. 使用Redis构建支持程序
  6. 使用Redis构建应用程序组件
  7. 基于搜索的应用程序
  8. 构建简单的社交网站
  9. 降低内存占用
  10. 扩展Redis
  11. Redis的Lua脚本编程

总结

想强调的一点是,无论大厂小厂,面试所考察到的面试题都是不一样的,但是要考核的核心知识却是大同小异,所以在刷题的过程中,我们一定要学会举一反三,多思考目的和原因,这样碰到一些“变形”的问题时,才能应付得了。总而言之,多学习多刷题,多给自己增加知识储备是没有错的,最后祝愿小伙伴们都能够拿到心仪offer,跳槽的朋友也顺顺利利!

写在最后:福利时间

再分享一波我的JAVA架构专题面试真题+解析+我的JAVA学习文档,评论+转发,关注我,私信回复【成长】即可免费领取!

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1925739.html

setTimeout(function () { fetch('http://www.sosokankan.com/stat/article.html?articleId=' + MIP.getData('articleId')) .then(function () { }) }, 3 * 1000)