Java 岗四面字节跳动成功之前,我都刷了那些面试题以及做了那些准备!
一面
一面面试老师是个小姑娘,人特别好(不仅仅指长相啊)。
问了 mysql 的索引
Redis 的 string 类型
为什么使用 rabbitmq
rabbitmq 有哪些部件,如何保证准确性跟一致性。
算法问了两道
快排
无序数组计算每个位置大于前面的多少个数字(归并排序)
二面
二面就开始偏向项目了,
如何进行 jvm 调优(然后我巴拉巴拉,老师说你写下具体的参数跟请求命令)
cpu 满了重启系统后好了,但是一会又满了,如何具体解决。(老师有点严格,一直说我不要听原理,你给我说具体的命令)
然后问了如何设置秒杀系统
如何设置银行系统,会碰到什么问题
为什么项目中使用了 mongodb
同样两个算法
一个文本距离计算
(用动态规划解决)
一个是无序数组可以存储多少雨水问题
三面
没有问技术
就是聊了聊怎么学习的
看了那些书
如何设置一个抢红包的功能
以及自己项目中碰到了哪些问题,如何解决的
项目的技术选型以及为什么要选择它
然后最手写一个算法
实现对 hashmap 增强,加上过期自动删除还有淘汰策略实现最短过期时间删除
HR 面
技术规划
还投了哪些公司
字节了解
为什么考研
项目中最大的收获
获取 Java 学习笔记,面试文档,电子书 PDF,面经资料,面试题目解析:麻烦一键三连+评论,然后添加 VX(tkzl6666)即可免费领取
Java 基础
JAVA 中的几种数据类型是什么,各自占用多少字节。
String 类能被继承吗,为什么。
两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
String 属于基础的数据类型吗?
Java 中操作字符串都有哪些类?它们之间有什么区别?
Java 中 IO 流分为几种?
BIO、NIO、AIO 有什么区别?
用过哪些 Map 类,都有什么区别,HashMap 时线程安全的吗,并发下使用的 Map 是什么,他们的内部原理分别是什么,比如存储方法,hashcode,扩容,默认容量等。
如何将字符串反转?
抽象类必须要有抽象方法吗?
普通类和抽象类有哪些区别?
抽象类能使用 final 修饰吗?
ArrayList 和 LinkedList 有什么区别?
ConcurrentHashMap 的数据结构(必考)
volatile 作用(必考)
Atomic 类如何保证原子性(CAS 操作)(必考)
为什么要使用线程池(必考)
Redis
Redis 的应用场景
Redis 支持的数据类型(必考)
zset 跳表的数据结构(必考)
Redis 的数据过期策略(必考)
Redis 的 LRU 过期策略的具体实现
如何解决 Redis 缓存雪崩,缓存穿透问题
Redis 的持久化机制(必考)
Redis 为什么是单线程的?
什么是缓存穿透?怎么解决?
Redis 持久化有几种方式?
Redis 为什么这么快?(必考)
Redis 怎么实现分布式锁?
Redis 如何做内存优化?
Redis 淘汰策略有哪些?
Redis 常见的性能问题有哪些?该如何解决?
Redis 的使用要注意什么?
ZooKeeper
Mysql
事务的基本要素
事务隔离级别(必考)
如何解决事务的并发问题(脏读,幻读)(必考)
MVCC 多版本并发控制(必考)
binlog,redolog,undolog 都是什么,起什么作用
InnoDB 的行锁/表锁
myisam 和 innodb 的区别,什么时候选择 myisam
为什么选择 B+树作为索引结构(必考)
索引 B+树的叶子节点都可以存哪些东西(必考)
查询在什么时候不走(预期中的)索引(必考)
sql 如何优化
explain 是如何解析 sql 的
order by 原理
JVM
运行时数据区域(内存模型)(必考)
垃圾回收机制(必考)
垃圾回收算法(必考)
Minor GC 和 Full GC 触发条件
GC 中 Stop the world(STW)
各垃圾回收器的特点及区别
双亲委派模型
JDBC 和双亲委派模型关系
JVM 中一次完整的 GC 流程是什么样子的,对象如何晋升到老年代,说说你知道的几种主要的 JVM 参数
Spring
Spring 的 IOC/AOP 的实现(必考)
动态代理的实现方式(必考)
Spring 如何解决循环依赖(三级缓存)(必考)
Spring 的后置处理器
Spring 的 @Transactional 如何实现的(必考)
Spring 的事务传播级别
BeanFactory 和 ApplicationContext 的联系和区别
其他
高并发系统的限流如何实现
高并发秒杀系统的设计
负载均衡如何设计
操作系统篇
进程和线程的区别
进程同步的几种方式
线程间同步的方式
什么是缓冲区溢出。有什么危害,其原因是什么
进程中有哪几种状态
分页和分段有什么区别
多线程篇
多线程的几种实现方式,什么是线程安全
volatile 的原理,作用,能代替锁吗?
sleep 和 wait 的区别
sleep(0)的意义
Lock 和 Synchronized 的区别
synchronized 的原理是什么,一般用在什么地方(比如加载静态方法和非静态方法的区别)
获取 Java 学习笔记,面试文档,电子书 PDF,面经资料,面试题目解析:麻烦一键三连+评论,然后添加 VX(tkzl6666)即可免费领取
补充
另外还会考一些计算机网络之类的。像消息队列,RPC 框架这种考的比较少。计算机网络就是分层啊,tcp/udp 啊,三次握手之类的。操作系统就是进程与线程啊,进程的数据结构以及如何通信之类的。
数据结构的排序算法也比较常考,考的话一定会让你手写个快排。剩下的算法题就靠 LeetCode 的积累了。其实非算法岗考的算法题都蛮简单的,很多题完全就是考察你智力是否正常,稍微难点的涉及到一些算法思想的按照 LeetCode 题目类型的分类,每种题做一两道基本就能完全应付面试了。
评论 (1 条评论)