去哪儿网java工程师现场面经

  1. Redis Cluster 是如何进行扩容的?
  2. static类型、final类型
  3. 网络模型有哪些 分别有哪些协议?
  4. 抽象类和接口有什么区别?接口是用来做什么的?一组功能的集合
  5. 线程的程序计数器是干什么用的?
  6. 线程池参数,什么情况下会达到最大线程数
  7. 如何设计单点登录,单点登录的原理
  8. 快速排序和归并排序时间复杂度都一样,为什么要用快速排序
  9. 设计一个短链接生成系统?数据如何存储?高并发如何处理?
  10. 堆溢出?栈溢出?
  11. MySQL的索引,为什么是B+而不是平衡二叉树
  12. ArrayList和LinkedList区别,底层是怎么实现的;
  13. 怎么保证促销商品不会超卖?
  14. 同步IO和异步IO的区别?
  15. 主键索引和普通索引
  16. 在栈上为什么不能用变量做数组的长度,堆上可以吗?
  17. MySQL的ACID讲一下,延伸到隔离级别
  18. 假如你是技术组长? 如何提高团队效率?
  19. 简单说一下堆和栈的区别?

编程题

Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。

医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。

给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。

  • 示例 1:

    输入:candyType = [1,1,2,2,3,3]
    输出:3
    解释:Alice 只能吃 6 / 2 = 3 枚糖,由于只有 3 种糖,她可以每种吃一枚。
    
  • 示例 2:

    输入:candyType = [1,1,2,3]
    输出:2
    解释:Alice 只能吃 4 / 2 = 2 枚糖,不管她选择吃的种类是 [1,2]、[1,3] 还是 [2,3],她只能吃到两种不同类的糖。
    
  • 示例 3:

    输入:candyType = [6,6,6,6]
    输出:1
    解释:Alice 只能吃 4 / 2 = 2 枚糖,尽管她能吃 2 枚,但只能吃到 1 种糖。