快手一面
1. 先做个自我介绍吧。
2. 聊聊你的实习经历,如果面试官没啥兴趣,就准备聊点别的。
3. Java 里的接口和抽象类有什么区别?能举个实际例子吗?什么时候该用接口,什么时候该用抽象类?
4. MySQL 的 InnoDB 引擎是怎么保证事务回滚的?
5. `synchronized` 和 `ReentrantLock` 有什么区别?条件变量是做什么用的?
6. 线程之间有哪些通信方式?
7. 讲讲 Java 的类加载过程。
8. 创建线程池有哪几种方式?
9. 一个任务提交到线程池后,它的处理流程是怎样的?为什么核心线程和队列都满了之后,要创建非核心线程,而不是直接放队列里?任务在队列里等待的时候,是在等什么线程来处理?
10. Java 对象存储在哪里?堆内存是怎么构成的?
11. 详细讲讲 Minor GC 和 Major GC 的过程,以及常见的垃圾回收算法。
12. 给你一个 SQL 查询场景,`select age from user where name='小明'`,假设 `name` 字段有索引,`id` 是自增主键,讲讲这条 SQL 的执行计划。
13. 手撕:全排列。