字节飞书邮箱后端实习 2024-02-22

一面

  • 要英文自我介绍,直接手足无措
  • 算法:k 个有序数组合并,不能用库的优先队列(怀疑是搞错以为我是直接用优先队列一次全部输入来排序),最后暴力 O(n3) 解的,用 deque 从后往前删输入元素来保证内存操作的时间复杂度,最后讲了优先队列的优化
  • 提问,还是要专门看八股,挺多没答出来的,答出来也答不到点:
    • git rebase/merge 区别,什么时候用哪个
    • mysql
      • mvcc
      • index
      • undo redo bin log 顺序
      • CAP
      • 悲观乐观锁,实现,CAS
      • ACID
      • 隔离级别
      • 两阶段提交
      • 优化 SQL 性能,慢查询
      • LIMIT 深度分页
      • 多个字段数什么是哪个列放前面,用哪个做索引?
        • 不只是这种,我们会考虑一些,就是你一个使用频率经常用的,第二是它选择性,这个列的选择性高的我们会放前面。第三也是看那个教你说 ID 音还是小宽度,小的会放前面这多种联合起来,但最终你是要从整个业务出发,你这个业务里面,比如这个表有多少条 circle 场景,每个四个场景用的属性是什么?然后用了联合索引,用一些相似度,有一些冗余的联合索引把它干掉,然后并且看每个字段它那个选择性以及整个的 SQL 的使用频率,最终做个决策。然后最终结果是我们期望是这个表里面它的索引应该是尽量少,不要太多,同时它的所有 SQL 都能走索引,以这个作为衡量指标。这个,嗯,那覆盖索引了解过吗?

      • 覆盖索引
    • 并发并行,硬件底层依赖,携程为什么方便
    • 孤儿进程,僵尸进程
    • thread safe, async signal safe
    • 还有什么想聊的,聊了一下 C++ 新特性,但是感觉他也不懂我也不懂聊不来。聊了 OOP 多态和 OOP 特点,讲了多态实现