快手 · 创新增长

后端开发工程师一面面经

完整信息

83 条问法 · 37 道题

本篇目录
  1. 做一下自我介绍。
  2. 实习时间大概可以多久?
  3. 你这个智能知识库 / 模拟面试平台,本来想做什么?
  4. 想解决什么样的问题?
  5. 这个系统你自己真的有使用过吗?
  6. 你简历上重点写了“多子问题 Collection 向量同步计算”,这个能展开讲讲吗?
  7. 它原来到底存在什么问题?
  8. 你是不是把数据提前 Embedding 之后存到向量数据库,再直接通过向量数据库检索?
  9. 除了性能问题之外,做 Embedding 前置和没有前置有什么差异?
  10. 从准确率、召回率来说会有什么区别?
  11. 一个问题可能命中很多知识块,如果 Top-K 比较小,召回内容不完整;Top-K 太大又容易比较模糊、引入很多无关信息,这种问题怎么解决?
  12. 你实际有没有遇到过这种问题?
  13. 面试官再次收窄问题:一个问题本身涉及多个 Chunk,但 Top-K 又不能设置特别大,在相关信息比较多、问题范围比较广时怎么处理?
  14. 这里面试官还明确反馈了一句:
    “我觉得你这个答得有点远了。”
    说明这一题他希望你直接回答“多 Chunk + Top-K 限制”本身,而不是扩展到整个 RAG 优化体系。
  15. 你前面提到通过结构化方式进行文本切分,比固定大小 + overlap 好。那么如果实际拿到的数据源结构并没有这么理想,怎么办?
  16. 如果真要采用你这套结构感知方案,非结构化数据应该怎么实现结构化处理?
  17. 举例:公司收到大量不同格式的简历,希望建成知识库,根据经验检索候选人,不同用户简历格式完全不同,这种场景你怎么处理?
  18. 如果分块 / 结构化很依赖大模型理解和关键词抽取,怎么保证模型处理结果足够稳定?
  19. 如果这个工作交给你来做,方案可以试,但怎么评估你的方案效果到底好不好?
  20. 怎么评估分块后的效果?
  21. RAG 虽然重点在检索,但生成阶段仍然可能产生幻觉,怎么控制生成阶段的幻觉?
  22. 你实际有没有遇到过这种幻觉问题?
  23. 你在自己的项目里是怎么处理的?
  24. 你刚才说了降低温度、Prompt 约束,还有什么方法?
  25. 你说强制模型标注引用来源,这个方式你实际遇到过问题吗?
  26. 实际效果好吗?
  27. 有没有看过业界 RAG 在幻觉控制方面的新方案 / 其他方案?
  28. RAG 已经发展了一段时间,有没有研究过别人现在怎么解决这个问题?
  29. 如果模型出现“虚空引用”——声称引用了某段 Context,但实际上那个 Context 根本不能支撑答案——这种方式是不是也控制得不够好?该怎么办?
  30. 如果 Chunk 切得太小,会丢失整体语义;切得太大,又会降低检索精度,这个问题你有没有遇到过? 这种 Chunk 粒度问题怎么处理?
  31. 你简历上写了向量化耗时降低,这个能展开讲讲吗?
  32. 面试官确认:你指的是提前 Embedding,然后存到向量数据库里吗?
  33. 你这里写 P50 降低 17.6%,P95 降低 48.6%,那么优化之后 P95 差距和P50大吗?
  34. 有没有观察过为什么 P50 和 P95 差距这么大?
  35. 平均值 / P50 不算特别高,但是 P95 / P99 比较高,原因是什么?
  36. 评测集阶段可以自己构造数据测试,但真正上线以后不可能每次人工看答案,上线以后怎么知道系统效果好不好?
  37. 有没有什么办法去看上线之后的检索效果?回答效果应该怎么评估?
  38. 如果暂时不考虑耗时,主要看“检索内容对不对、生成答案好不好”,应该怎么看这些质量?
  39. 现在已经有很多线上 RAG 系统,业界一般怎么做 RAG 效果评估?
  40. 你自己会怎么评估?
  41. 你的上下文膨胀问题是怎么解决的?
  42. 多轮对话越来越长,上下文一定会膨胀,你用了摘要,摘要具体怎么做?
  43. 摘要会不会损失很多关键细节?
  44. 如果摘要丢失了用户以前的重要信息,你的方案怎么补救?
  45. 讲一下 Redisson 锁的原理。
  46. 你项目里经常用 Redisson,为什么选择它?
  47. 它底层大概是什么原理?
  48. 两个线程竞争同一个 Key,线程 A 已经拿到锁,但 A 的 WatchDog 续期失败了怎么办?
  49. A 的锁到期释放后,线程 B 拿到了锁,但 A 不知道自己的锁已经失效,还继续执行业务,这种场景怎么处理?Redisson 本身有没有处理这种情况? (你打算怎么处理)
  50. MySQL 是如何实现事务的?
  51. 事务有哪些特点?
  52. 也就是 ACID 四个特性,MySQL 分别是怎么实现这些特性的?
  53. MySQL 有几个事务隔离级别?
  54. 每个事务隔离级别分别是什么?
  55. 不同隔离级别解决了什么问题?
  56. 是不是事务隔离级别越高越好?
  57. 为什么不是越高越好?
  58. Read Committed 和 Repeatable Read 之间应该怎么选?
  59. RC 和 RR 这两个隔离级别,哪个“更好”还是要看业务场景?
  60. 简单讲一下 MVCC 的实现原理。
  61. 讲一下 CAS 是什么逻辑 / 原理。
  62. CAS 有什么问题?
  63. 并发控制既可以用 CAS,也可以用 Semaphore / mutex 等锁,既然都能实现,实际应该怎么选?
  64. CAS 和互斥锁之间的选择依据是什么?
  65. 你说优惠券要求一致性更高,所以使用锁,但 CAS 不是同样也能保证强一致吗? CAS 和互斥锁之间,并不存在“一致性高低”的区别,对吧? 你说 CAS 适合“读多写少”,但 读操作本身涉及并发更新吗?
  66. 如果 CAS 更轻量,为什么还要保留 synchronized / mutex 这种阻塞锁?
  67. 什么时候应该用 CAS,什么时候应该使用互斥锁?
  68. 讲一下线程池的原理。
  69. 线程池接收任务以后,整体执行流程是什么?
  70. 线程池源码看过吗?
  71. 非核心线程最终会被回收,它具体是怎么回收的?
  72. 非核心线程的超时时间到底是怎么计时的?
  73. 为什么能够判断一个线程已经空闲到了 keepAliveTime?
  74. 核心线程已经满了以后,再向线程池提交任务,会发生什么?
  75. 队列满了以后呢?
  76. 如果非核心线程也满了,接下来怎么办?
  77. 平时学习这些类的时候,有没有看源码的习惯?
  78. 哪些源码你看过?
  79. ThreadLocal 源码看过吗?
  80. ThreadLocal 和 HashMap 都有类似 Map 的结构,它们的 put / get 实现有什么不同?
  81. ThreadLocalMap 和 HashMap 的底层实现有什么明显区别?
  82. 仅仅一个 Key 是弱引用,为什么会导致整个 Map 结构都不一样?
  83. 如果看源码只看 put / get,ThreadLocalMap 的 put/get 到底怎么实现?
  84. 算法题(电话号码的字母组合)
本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
    一个问题可能命中很多知识块,如果 Top-K 比较小,召回内容不完整;Top-K 太大又容易比较模糊、引入很多无关信息,这种问题怎么解决?
  12. 12
  13. 13
    追问
    面试官再次收窄问题:一个问题本身涉及多个 Chunk,但 Top-K 又不能设置特别大,在相关信息比较多、问题范围比较广时怎么处理?
  14. 14
    你前面提到通过结构化方式进行文本切分,比固定大小 + overlap 好。那么如果实际拿到的数据源结构并没有这么理想,怎么办?
  15. 15
  16. 16
    举例:公司收到大量不同格式的简历,希望建成知识库,根据经验检索候选人,不同用户简历格式完全不同,这种场景你怎么处理?
  17. 17
  18. 18
    如果这个工作交给你来做,方案可以试,但怎么评估你的方案效果到底好不好?
  19. 19
  20. 20
    RAG 虽然重点在检索,但生成阶段仍然可能产生幻觉,怎么控制生成阶段的幻觉?
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
    追问
    RAG 已经发展了一段时间,有没有研究过别人现在怎么解决这个问题?
  28. 28
    如果模型出现“虚空引用”——声称引用了某段 Context,但实际上那个 Context 根本不能支撑答案——这种方式是不是也控制得不够好?该怎么办?
  29. 29
    如果 Chunk 切得太小,会丢失整体语义;切得太大,又会降低检索精度,这个问题你有没有遇到过? 这种 Chunk 粒度问题怎么处理?
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
    评测集阶段可以自己构造数据测试,但真正上线以后不可能每次人工看答案,上线以后怎么知道系统效果好不好?
  36. 36
  37. 37
    追问
    如果暂时不考虑耗时,主要看“检索内容对不对、生成答案好不好”,应该怎么看这些质量?
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
    追问
    A 的锁到期释放后,线程 B 拿到了锁,但 A 不知道自己的锁已经失效,还继续执行业务,这种场景怎么处理?Redisson 本身有没有处理这种情况? (你打算怎么处理)
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
    并发控制既可以用 CAS,也可以用 Semaphore / mutex 等锁,既然都能实现,实际应该怎么选?
  63. 63
  64. 64
    追问
    你说优惠券要求一致性更高,所以使用锁,但 CAS 不是同样也能保证强一致吗? CAS 和互斥锁之间,并不存在“一致性高低”的区别,对吧? 你说 CAS 适合“读多写少”,但 读操作本身涉及并发更新吗?
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83

同作者面经

展开其余 1 篇收起其余 1 篇

相关公司