4.3 快手Java一面

快手 · 软件开发工程师 · 一面 · 江苏 · 2026-05

《面试题目》

  1. 项目里用到了MQTT物联网协议,它的发布订阅模式大概有哪些?
  2. 设备数据采集上来后,监控页面的数据从哪来?这么多设备接入,数据怎么存、存在哪,才能让监控页面快速访问到?
  3. 那假设以后表中数据达到300万,页面分页查询,比如每页100条,要查第9000页的数据,会遇到深分页问题,你怎么解决?
  4. 那有没有其他方式?我看你简历里写了覆盖索引,但你刚才没说,覆盖索引是怎么用的?
  5. MySQL的事务是如何实现的?
  6. 我问一些Java基础知识,JVM常见的垃圾回收算法有哪些?
  7. 线程池的核心参数
  8. TCP是如何保证有效传输的?
  9. 力扣 最长回文子串

《参考解析》

  1. 计算机网络:TCP(传输控制协议)是面向连接、可靠的传输协议,提供流量控制和拥塞控制;UDP(用户数据报协议)是无连接、不可靠但速度更快的协议。TCP通过三次握手建立连接(SYN→SYN+ACK→ACK),四次挥手断开(FIN→ACK→FIN→ACK)。

  2. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  3. JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。

  4. Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。