汽车之家服务端开发工程师线上面试

  1. linux的内存分配和多线程原理
  2. Redis 加锁方案?Zookeeper 加锁方案?各有什么优缺点?
  3. 为什么会出现僵死进程(孤儿进程)?怎样查看僵死进程?如何解决僵死进程问题?
  4. dubbo的实现原理,说说RPC的要点
  5. Volatile 关键字,指令重排序有什么意义?
  6. 锁,死锁的形成条件,锁的底层实现,AQS的实现,如何实现公平锁和非公平锁,CAS的实现
  7. 简述zookeeper。
  8. 反爬虫的机制,有哪些方式
  9. linux中进程信号有哪些?
  10. HashMap 的结构?ConcurrentHashMap 读写加锁吗?
  11. 看你项目用过dubbo,dubbo底层是怎么通讯的呢?
  12. 哈希是什么?hash冲突后,数据怎么存?
  13. 如何创建单例模式?说了双重检查,他说不是线程安全的。如何高效的创建一个线程安全的单例?
  14. 并发修改数据库并回写Redis 如何保证数据一致性?
  15. 数据库的组合索引
  16. Java线程池ThreadPoolEcecutor参数,基本参数,使用场景
  17. 死锁形成的条件,该怎么解决
  18. ApplicationContext 的初始化过程?初始化过程中发现循环依赖 Spring 是如何处理的。
  19. 反射可以调用私有对象吗?
  20. Redis的持久化?有哪些方式,原理是什么?
  21. HTTP2.0、thrift。
  22. 数据库分库分表需要怎样来实现?
  23. 在向HDFS中写数据的时候,当某写某一个副本的时候出错怎么处理?
  24. 说说NIO?Selector上都能注册一些什么事件?知道Channel读、写数据是怎么实现的吗?
  25. socket通信做过吗? 你项目中用的什么协议通信的?tcp协议通信中io有几种方式,之间有什么区别?
  26. 假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只将学号参与计算,会出现什么情况?

编程题

  • 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。

  • 设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。

  • 编码的字符串应尽可能紧凑。

示例 1:

输入:root = [2,1,3]
输出:[2,1,3]

示例 2:

输入:root = []
输出:[]