6.22 小红书 Product Engineer-产品工程师(AI与全栈方向)一面

小红书 · Product Engineer · 一面 · 2026-07

《面试题目》

  1. 线程和进程之间是什么关系?
  2. 它们在内存和资源管理上有什么区别?
  3. 假设线程 A 依赖某个共享资源,线程 B 只依赖线程 A,并不存在交叉资源依赖,这种情况下会发生死锁吗?
  4. 上述情况下,是否可能导致线程运行缓慢?
  5. 是否可能出现某个后来的线程长期拿不到资源,也就是线程饥饿?
  6. 你在项目中有没有遇到过接口突然变慢、请求耗时增加之类的问题?
  7. 如果让你排查接口变慢的问题,你有哪些排查思路?
  8. 你熟悉 TCP 和 UDP 吗?
  9. 它们之间有什么区别?
  10. TCP 建立连接为什么需要三次握手,为什么不能只进行两次握手?
  11. 在弱网环境下进行通信,你认为应该使用 TCP 还是 UDP?
  12. 为什么?
  13. 如果选择 UDP,可能会遇到哪些问题?
  14. 应该如何解决?
  15. TCP 的队头阻塞是什么?
  16. HTTP 中常见的状态码分别表示什么?
  17. 例如 200、4xx 和 5xx。
  18. 客户端请求服务端接口时,如果频繁收到 5xx 状态码或者经常发生超时,客户端或调用方应该如何处理?
  19. 大营销抽奖平台中的高并发库存扣减是如何实现和优化的?
  20. 抽奖概率是如何转换成查找表的?
  21. 使用概率查找表后,系统具体如何完成一次随机抽奖?
  22. 系统如何支持根据用户积分档位配置不同的权重奖池?
  23. 不同积分档位对应的奖池和奖品权重是如何存储、装配和使用的?
  24. 在责任链执行过程中,如果某个节点失败,例如库存扣减失败,前面已经执行的节点是否需要回滚?
  25. 如果需要回滚,应该采用什么方式实现?
  26. 如果不回滚,如何保证数据一致性?
  27. 现在有一个客户端稳定性监控场景,会收集客户端上报的崩溃和卡顿堆栈。如果由你设计,你会如何实现问题定位、负责人分配和修复建议生成?
  28. 如何根据崩溃或卡顿堆栈判断问题是由哪个模块、业务或负责人引发的?
  29. 如何建立代码、模块、业务和负责人之间的映射关系?
  30. 当一个堆栈涉及多个模块或多个负责人时,应该如何确定主要负责人?
  31. 如何根据堆栈信息生成一个简短、基本可用的修复方案?
  32. 如何保证生成的修复建议具有针对性,而不是向业务方提供无效或泛化的建议?

《参考解析》

  1. AI产品与 Agent 项目:回答这类问题要先讲清目标用户和业务场景,再说明模型、数据、工作流、评测指标和上线后的真实使用效果。面试官通常更看重你能否把 AI 能力转成可落地的产品闭环,而不是只罗列模型名。
  2. 进程与线程:进程是资源分配单位,线程是 CPU 调度单位。同一进程内线程共享地址空间和文件句柄,但各自拥有栈和执行上下文;回答时可结合通信方式、上下文切换成本和故障隔离展开。
  3. TCP/UDP 与 HTTP:TCP 强调可靠、有序和拥塞控制,UDP 强调低延迟和应用层自定义可靠性。弱网场景选择协议时要结合业务是否允许丢包、是否需要重传、延迟预算和客户端降级策略。
  4. 高并发库存扣减:高并发扣减要避免超卖,常见方案是 Redis 原子扣减、数据库乐观锁或消息队列削峰。抽奖和库存链路必须保证幂等,并对失败节点设计补偿或最终一致性处理。
  5. 用户研究:用研回答要覆盖样本选择、访谈或问卷方法、洞察提炼和需求转化。面试官会追问研究结论是否真正影响产品决策,因此最好用指标或后续迭代结果闭环。
  6. 项目深挖:项目深挖的核心是讲清背景、目标、你的职责、关键决策、难点和结果。遇到追问时优先用数据、取舍理由和复盘说明自己的判断,而不是只描述流程。