PDD秋招客户端1、2面 面经

服务端2面挂转岗客户端

一面
算法题
LeetCode 75:颜色分类(Sort Colors)。
2. 当前指针与右侧指针交换后,为什么当前指针不能立即向后移动?
3. 这段算法的时间复杂度和空间复杂度分别是多少?
死锁与并发

  1. 两个线程以相反顺序获取两把锁,可能发生什么?为什么?
  2. 程序直接运行一定会死锁吗?去掉中间的等待后,结论会变化吗?
  3. 死锁的四个必要条件是什么?分别如何对应到这段代码?
  4. 有哪些办法可以消除或规避死锁?
  5. 多个 goroutine 并发写同一个 map 会发生什么?
  6. 写操作和查询操作分别应该怎样加锁?为什么考虑使用读写锁?
    网络与 HTTPS
  7. 客户端请求一个 HTTPS 接口并把数据展示到页面,中间经历了哪些步骤?
  8. HTTPS 相比 HTTP 多了什么?主要解决哪些安全问题?
  9. TLS 如何保证数据不被篡改?数字签名的验证过程是什么?
    客户端缓存
  10. 客户端只允许缓存固定数量的图片,如何优先保留最近使用的数据?
  11. 为什么不能只用数组实现?不同数据结构的复杂度有什么差别?
    项目追问
  12. 这个项目做过哪些性能或成本优化?如何证明优化有效?
  13. 当多个系统对同一业务概念的定义不一致时,你会如何统一数据口径?
  14. 统一口径上线时,如何处理存量数据、兼容旧逻辑、校验结果和回滚?
    二面
    记不太清楚了,总之基本全是操作系统八股,客户端真的太看中操作系统了,也可能是lz不会java和c++面试官没其他东西问
参考来源:https://www.nowcoder.com/feed/main/detail/d401d03bff77486aa9da366a96a77d76