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

  1. HashMap和concurrentHashMap的区别从currentHashMap底层是用什么锁实现的(可重入锁)
  2. 项目用到的jvm是什么版本,java8的新特性比如Stream项目用到了吗?
  3. mysql底层数据结构
  4. 讲一讲TCP和UDP的区别,为什么是TCP三次握手,四次挥手?为什么是三次?
  5. 设计题,一个图书馆管理系统,数据库怎么设计,需求自己定
  6. 除了垃圾回收,还有那些工作会造成CPU负载过高(其实这里给出的是一个场景,就是让描述一下除了垃圾回收之外,还有那些工作会让线上CPU占用到百分之90-100,并且给出排查过程)。
  7. ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好?什么情况下用HashMap,什么情况用ConcurrentHashMap?
  8. 实践中如何优化 MySQL:SQL 语句及索引的优化、数据库表结构的优化、系统配置的优化、硬件的优化
  9. 数据库端的常用优化策略?
  10. Java怎么挖取回收器相关原理
  11. 复合索引是如何实现的?
  12. 进程和线程的区别?线程死了进程会死吗?进程的三个状态?iso五层协议?tcp和udp区别?一个tcp可以有多少http?三次握手四次挥手?
  13. n个整数,找出连续的m个数加和是最大
  14. 说一下Namenode中维护的元数据中都存储了哪些信息?
  15. 节点个数是多少的时候,红黑树会退回链表。
  16. 如果Redis有1亿个key,使用keys命令是否会影响线上服务?
  17. CAS原理,ABA是什么,ABA如何解决(没答上来,应该是version)
  18. 写一个函数,尽可能高效的,从一个标准url里取出文件的扩展名?
  19. springboot 依赖注入的方式

编程题

  • 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列:

序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。

  • 给你两个单词 beginWord 和 endWord 和一个字典 wordList ,找到从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列,返回 0。

示例 1:

输入:beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
输出:5
解释:一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。

示例 2:

输入:beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
输出:0
解释:endWord "cog" 不在字典中,所以无法进行转换。