优酷9.8面试
阿辉 · 文章分享
面试题整理
一、线程池
- 你在项目中哪些场景使用了线程池?
- 线程池有哪些核心参数?
corePoolSize和maximumPoolSize分别是什么?- 线程池的线程数一般怎么设置?
- 设置线程数时,需要考虑哪些因素?
二、ConcurrentHashMap
- 说一下
ConcurrentHashMap的底层实现。 ConcurrentHashMap是如何保证线程安全的?ConcurrentHashMap在 JDK 8 之后的数据结构是什么?ConcurrentHashMap中 CAS 的作用是什么?
三、JVM 与 GC 调优
- 你简历中提到了 GC 优化,具体讲一下当时是什么场景。
- 为什么需要进行 GC 优化?
- 你是怎么发现 GC 存在问题的?
- 你使用了哪些工具或方式排查 GC 问题?
- 最终定位到的问题是什么?
- 你具体采取了哪些优化措施?
- 代码层面做了哪些改动?
- JVM 参数层面做了哪些调整?
- GC 优化的主要目标是什么?
- GC 优化主要减少什么?
- 你具体修改了哪些 JVM 参数?
- 你们使用的是什么垃圾收集器?
- 你是根据什么依据调整 JVM 参数的?
四、智能设备数据库设计
- 智能设备项目中,设备状态数据是怎么设计的?
- 设计了哪些数据库表?
- 为什么要这样拆分这些表?
- 设备基础信息表中存储哪些字段?
- 为什么要把设备基础信息、当前状态和历史状态分开存储?
- 设备历史状态表大概有多少行,或者是什么数据量级?
- 查询时主要查询历史状态还是当前状态?
- 当前状态表大概是什么数据量级?
- 为什么设备表和设备状态表要拆开?
- 设备表和状态表的数据职责有什么区别?
- 设备表和状态表分别有哪些典型查询场景?
- 设备表和状态表关联查询的 SQL 是怎么设计的?
- 查询时有哪些
WHERE条件? - 请分别举一个设备表和状态表的查询例子。
- 为什么在设备 ID 上建立索引?
- 为什么设备状态表中的设备 ID 可以设置唯一索引?
- 设备 ID 是数据库自增 ID 吗?
- 除了通过设备 ID 查询,还有哪些查询条件?
- 有没有条件查询或者范围查询的场景?
五、MySQL 索引
- 什么是覆盖索引?
- 覆盖索引是一种单独的索引类型吗?
- 覆盖索引为什么可以避免回表?
- 你在项目中有没有使用过覆盖索引?
六、智能设备 Agent 项目
- 简单介绍一下智能设备 Agent 平台的项目思路。
- Agent 平台主要解决什么业务问题?
- 项目中是如何结合本地大模型和现有文档进行分析的?
- 这个项目一共有多少人参与?
- 你在项目中担任什么角色?
- 这个项目是否由你一个人完成?
- 你是否负责了项目的设计、开发和完整流程?
七、算法题
- 请完成邮箱链接中的算法题。
- 写完后讲解一下你的解题思路。
- 为什么使用中心扩展法?
- 为什么需要使用
Set去重? - 这个算法的时间复杂度是多少?