字节跳动面试题
历经4面,“跳进”字节跳动
字节跳动一面:
- 自我介绍
- tcp和udp区别,应用场景
- tcp三次握手,为什么有第三次?
- 讲一下get和post区别,其他命令
- 讲一下进程和线程区别,什么时候用多线程?怎么保证线程安全?
- synchronized的使用,是对什么加锁?
- 栈和队列,怎么用栈实现队列?
- 垃圾回收算法,复制算法中存活对象太多怎么办?
- 可达性分析,GC Root可以是哪些对象?
- hashmap底层实现,put get过程,扩容,为什么容量为2的倍数?
- java基本类型,基本类型间的转换(short+int得到int类型,不能直接把int型赋给short型)
- String类,字符串相加+的底层操作,StringBuilder和StringBuffer
- 算法:给一个数组,使数组奇数在前半段,偶数在后半段,在原数组上操作。
字节跳动二面: - 多个项目的技术架构,不是业务架构 MySQL,Redis,Nginx,Kafka这些技术架构
- 项目技术点,学到了哪些?也要具体知识点。
- MySQL中为什么是最左前缀?
- 有没有接触过一些自动熔断工具
- 502可能的原因有哪些?
- 线上问题怎么排查?Full GC频繁怎么办?
- 服务的QPS,数据库的架构和版本。
- SpringBoot的优缺点分析
- SpringBoot的启动源码分析
- 服务的部署方式?
- 算法题目:按照之字形分层遍历二叉树,要求bug free,并且构造二叉树进行测试。
字节跳动三面: - jdk8默认的垃圾回收器, 知道哪些垃圾回收器? G1详细说一下
- synchronized关键字的底层是什么?
- 线程之间哪些资源是共享的? 什么是独享的?
- 堆和栈有什么区别?
- linux查看资源的命令?怎么样查看哪些端口被占用了
- linux内存中swap是什么? 什么用?
- 用户态和内核态的区别? 为什么要有用户态内核态区别?
- 中断有哪些类型,区别?
- 死锁概念?条件?
- 算法题:奇数位递增偶数位递减的数组,排序
- get,post区别?
- get可以缓存?在INTP(?没听懂在哪)里是怎么实现的?
- 写sql,group by的查询?
- mySQL的搜索引擎?innodb和myISAM的区别
HRBP面: - 自我介绍
- 为什么在看机会呢?在看什么类型的机会呢?
- 为什么看头条的机会?
- 你觉得头条是一家什么样的公司?
- 朋友同事如何评价你?
- 平时都有哪些兴趣爱好呢?
- 在原公司最享受的阶段是什么时候?为什么
- 你对我们的业务方向了解吗?
- 你对我们的业务方向和技术感兴趣吗?
01 Zookeeper 部分
- CAP定理
- ZAB协议
- leader选举算法和流程
02 Redis 部分 - Redis的应用场景
- Redis支持的数据类型(必考)
- zset跳表的数据结构(必考)
- Redis的数据过期策略(必考)
- Redis的LRU过期策略的具体实现
- 如何解决Redis缓存雪崩,缓存穿透问题
- Redis的持久化机制(必考)
- Redis的管道pipeline
03 Mysql 部分 - 事务的基本要素
- 事务隔离级别
- 如何解决事务的并发问题(脏读,幻读)?
- MVCC多版本并发控制?
- binlog,redolog,undolog都是什么,起什么作用?
- InnoDB的行锁/表锁?
- myisam和innodb的区别,什么时候选择myisam?
- 为什么选择B+树作为索引结构?
- 索引B+树的叶子节点都可以存哪些东西?
- 查询在什么时候不走(预期中的)索引?
- sql如何优化?
- explain是如何解析sql的?
- order by原理
04 JVM 部分 - 运行时数据区域(内存模型)
- 垃圾回收机制
- 垃圾回收算法
- Minor GC和Full GC触发条件
- GC中Stop the world
- 各垃圾回收器的特点及区别
- 双亲委派模型
- JDBC和双亲委派模型关系
05 Java 基础部分 - HashMap和ConcurrentHashMap区别
- ConcurrentHashMap的数据结构
- 高并发HashMap的环是如何产生的?
- volatile作用
- Atomic类如何保证原子性(CAS操作)
- synchronized和Lock的区别
- 为什么要使用线程池?
- 核心线程池ThreadPoolExecutor的参数
- ThreadPoolExecutor的工作流程
- 如何控制线程池线程的优先级
- 线程之间如何通信
- Boolean占几个字节
- jdk1.8/jdk1.7都分别新增了哪些特性?
- Exception和Error
06 Spring 部分 - Spring的IOC/AOP的实现
- 动态代理的实现方式
- Spring如何解决循环依赖(三级缓存)
- Spring的后置处理器
- Spring的@Transactional如何实现的?
- Spring的事务传播级别
- BeanFactory和ApplicationContext的联系和区别
07 其他部分 - 高并发系统的限流如何实现?
- 高并发秒杀系统的设计
- 负载均衡如何设计?