优酷9.8面试

阿辉 · 文章分享

面试题整理

一、线程池

  1. 你在项目中哪些场景使用了线程池?
  2. 线程池有哪些核心参数?
  3. corePoolSizemaximumPoolSize 分别是什么?
  4. 线程池的线程数一般怎么设置?
  5. 设置线程数时,需要考虑哪些因素?

二、ConcurrentHashMap

  1. 说一下 ConcurrentHashMap 的底层实现。
  2. ConcurrentHashMap 是如何保证线程安全的?
  3. ConcurrentHashMap 在 JDK 8 之后的数据结构是什么?
  4. ConcurrentHashMap 中 CAS 的作用是什么?

三、JVM 与 GC 调优

  1. 你简历中提到了 GC 优化,具体讲一下当时是什么场景。
  2. 为什么需要进行 GC 优化?
  3. 你是怎么发现 GC 存在问题的?
  4. 你使用了哪些工具或方式排查 GC 问题?
  5. 最终定位到的问题是什么?
  6. 你具体采取了哪些优化措施?
  7. 代码层面做了哪些改动?
  8. JVM 参数层面做了哪些调整?
  9. GC 优化的主要目标是什么?
  10. GC 优化主要减少什么?
  11. 你具体修改了哪些 JVM 参数?
  12. 你们使用的是什么垃圾收集器?
  13. 你是根据什么依据调整 JVM 参数的?

四、智能设备数据库设计

  1. 智能设备项目中,设备状态数据是怎么设计的?
  2. 设计了哪些数据库表?
  3. 为什么要这样拆分这些表?
  4. 设备基础信息表中存储哪些字段?
  5. 为什么要把设备基础信息、当前状态和历史状态分开存储?
  6. 设备历史状态表大概有多少行,或者是什么数据量级?
  7. 查询时主要查询历史状态还是当前状态?
  8. 当前状态表大概是什么数据量级?
  9. 为什么设备表和设备状态表要拆开?
  10. 设备表和状态表的数据职责有什么区别?
  11. 设备表和状态表分别有哪些典型查询场景?
  12. 设备表和状态表关联查询的 SQL 是怎么设计的?
  13. 查询时有哪些 WHERE 条件?
  14. 请分别举一个设备表和状态表的查询例子。
  15. 为什么在设备 ID 上建立索引?
  16. 为什么设备状态表中的设备 ID 可以设置唯一索引?
  17. 设备 ID 是数据库自增 ID 吗?
  18. 除了通过设备 ID 查询,还有哪些查询条件?
  19. 有没有条件查询或者范围查询的场景?

五、MySQL 索引

  1. 什么是覆盖索引?
  2. 覆盖索引是一种单独的索引类型吗?
  3. 覆盖索引为什么可以避免回表?
  4. 你在项目中有没有使用过覆盖索引?

六、智能设备 Agent 项目

  1. 简单介绍一下智能设备 Agent 平台的项目思路。
  2. Agent 平台主要解决什么业务问题?
  3. 项目中是如何结合本地大模型和现有文档进行分析的?
  4. 这个项目一共有多少人参与?
  5. 你在项目中担任什么角色?
  6. 这个项目是否由你一个人完成?
  7. 你是否负责了项目的设计、开发和完整流程?

七、算法题

  1. 请完成邮箱链接中的算法题。
  2. 写完后讲解一下你的解题思路。
  3. 为什么使用中心扩展法?
  4. 为什么需要使用 Set 去重?
  5. 这个算法的时间复杂度是多少?