阅读 9

手撕面试官系列(六):并发+Netty+JVM+Linux

并发面试专题

(面试题+答案领取方式见主页)

  1. 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
  2. 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
  3. 在 java 中 wait 和 sleep 方法的不同?
  4. 用 Java 实现阻塞队列。
  5. 用 Java 写代码来解决生产者——消费者问题。
  6. 用 Java 编程一个会导致死锁的程序,你将怎么解决?
  7. 什么是原子操作,Java 中的原子操作是什么?
  8. Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
  9. 什么是竞争条件?你怎样发现和解决竞争?
  10. 你将如何使用 threaddump?你将如何分析 Thread dump?
  11. 为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
  12. Java 中你怎样唤醒一个阻塞的线程?
  13. 在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
  14. 什么是不可变对象,它对写并发应用有什么帮助?
  15. 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?

Netty面试专题

  1. BIO、NIO 和 AIO 的区别?
  2. NIO 的组成?
  3. .Netty 的特点?
  4. Netty 的线程模型?
  5. TCP 粘包/拆包的原因及解决方法?
  6. 了解哪几种序列化协议?
  7. 如何选择序列化协议?
  8. Netty 的零拷贝实现?
  9. Netty 的高性能表现在哪些方面?
  10. NIOEventLoopGroup 源码?

JVM面试专题

  1. 内存模型以及分区,需要详细到每个区放什么?
  2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
  3. 对象创建方法,对象的内存分配,对象的访问定位。
  4. GC 的两种判定方法
  5. SafePoint 是什么
  6. GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
  7. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
  8. Minor GC 与 Full GC 分别在什么时候发生?
  9. 几种常用的内存调试工具
  10. 类加载的几个过程
  11. JVM 内存分哪几个区,每个区的作用是什么?
  12. 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
  13. 简述 java 垃圾回收机制?
  14. java 中垃圾收集的方法有哪些?
  15. java 内存模型
  16. java 类加载过程?
  17. 简述 java 类加载机制?
  18. 类加载器双亲委派模型机制?
  19. 什么是类加载器,类加载器有哪些? 20.简述 java 内存分配与回收策率以及 Minor GC 和Major GC

Linux面试专题

  1. Linux 中主要有哪几种内核锁?
  2. Linux 中的用户模式和内核模式是什么含意?
  3. 怎样申请大块内核内存?
  4. 用户进程间通信主要哪几种方式?
  5. 通过伙伴系统申请内核内存的函数有哪些?
  6. Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
  7. 对文件或设备的操作函数保存在那个数据结构中?
  8. Linux 中的文件包括哪些?
  9. 创建进程的系统调用有那些?
  10. 调用 schedule()进行进程切换的方式有几种?
  11. Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
  12. 进程调度的核心数据结构是哪个?
  13. 如何加载、卸载一个模块?
  14. 模块和应用程序分别运行在什么空间?
  15. Linux 中的浮点运算由应用程序实现还是内核实现?
  16. 模块程序能否使用可链接的库函数?
  17. TLB 中缓存的是什么内容?
  18. Linux 中有哪几种设备?
  19. 字符设备驱动程序的关键数据结构是哪个?
  20. 设备驱动程序包括哪些功能函数?
  21. 如何唯一标识一个设备?
  22. Linux 通过什么方式实现系统调用?
  23. Linux 软中断和工作队列的作用是什么?