饿了么服务端开发现场面经

  1. 死锁有什么现象,数据库死锁如何解决?
  2. 简述分库与分表设计?分库分表带来的分布式困境与对应之策有哪些?
  3. MySQL索引失效的情况,多列索引之间的顺序如何摆放来达到优化
  4. mysql_fetch_row 和 mysql_fetch_array 之间有什么区别?
  5. POST和GET有什么区别?
  6. spring AOP IOC的原理
  7. concurenthashmap 1.8和1.7有什么区别
  8. Volatile 关键字,指令重排序有什么意义?
  9. 接口安全方面是怎么处理的?
  10. springboot 依赖注入的方式
  11. 添加索引,为什么可以减少io操作(磁盘页)
  12. 线程池,核心参数,扩容原理,使用注意点
  13. 说一下项目,遇到过什么问题是怎么解决的?如何防止sql注入的?
  14. 说说堆里面的垃圾回收算法?为什么新生代用复制算法,老年代用标记整理、标记压缩?
  15. 说一些Spring的事务传播机制。
  16. 将现有线性存储结构改成环形结构
  17. 数据库中存储密码是怎么存的(MD5加密),还知道其他加密方式吗
  18. 高并发场景下如何防止死锁,保证数据的一致性?
  19. 说一下Namenode中维护的元数据中都存储了哪些信息?
  20. CAS和原子类的AutomicInterger
  21. 那知道跳表吗,跳表有哪些应用吗? 跳表是巴拉巴拉,但是应用没有去了解过哦 刚刚查了下 在redis当中有用到....果然框架这块还得好好补补

编程题

给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。

然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。

你需要计算完成所有任务所需要的 最短时间 。

  • 示例 1:

    输入:tasks = ["A","A","A","B","B","B"], n = 2
    输出:8
    解释:A -> B -> (待命) -> A -> B -> (待命) -> A -> B
       在本示例中,两个相同类型任务之间必须间隔长度为 n = 2 的冷却时间,而执行一个任务只需要一个单位时间,所以中间出现了(待命)状态。 
    
  • 示例 2:

    输入:tasks = ["A","A","A","B","B","B"], n = 0
    输出:6
    解释:在这种情况下,任何大小为 6 的排列都可以满足要求,因为 n = 0
    ["A","A","A","B","B","B"]
    ["A","B","A","B","A","B"]
    ["B","B","B","A","A","A"]
    ...
    诸如此类
    
  • 示例 3:

    输入:tasks = ["A","A","A","A","A","A","B","C","D","E","F","G"], n = 2
    输出:16
    解释:一种可能的解决方案是:
       A -> B -> C -> A -> D -> E -> A -> F -> G -> A -> (待命) -> (待命) -> A -> (待命) -> (待命) -> A