手撕面试官系列(六):并发+Netty+JVM+Linux面试专题
并发面试专题
(面试题+答案领取方式见侧边栏)
- 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
- 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 实现阻塞队列。
- 用 Java 写代码来解决生产者——消费者问题。
- 用 Java 编程一个会导致死锁的程序,你将怎么解决?
- 什么是原子操作,Java 中的原子操作是什么?
- Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
- 什么是竞争条件?你怎样发现和解决竞争?
- 你将如何使用 threaddump?你将如何分析 Thread dump?
- 为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- Java 中你怎样唤醒一个阻塞的线程?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
- 什么是不可变对象,它对写并发应用有什么帮助?
- 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
Netty面试专题
- BIO、NIO 和 AIO 的区别?
- NIO 的组成?
- .Netty 的特点?
- Netty 的线程模型?
- TCP 粘包/拆包的原因及解决方法?
- 了解哪几种序列化协议?
- 如何选择序列化协议?
- Netty 的零拷贝实现?
- Netty 的高性能表现在哪些方面?
- NIOEventLoopGroup 源码?
JVM面试专题
- 内存模型以及分区,需要详细到每个区放什么?
- 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
- 对象创建方法,对象的内存分配,对象的访问定位。
- GC 的两种判定方法
- SafePoint 是什么
- GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
- GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
- Minor GC 与 Full GC 分别在什么时候发生?
- 几种常用的内存调试工具
- 类加载的几个过程
- JVM 内存分哪几个区,每个区的作用是什么?
- 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
- 简述 java 垃圾回收机制?
- java 中垃圾收集的方法有哪些?
- java 内存模型
- java 类加载过程?
- 简述 java 类加载机制?
- 类加载器双亲委派模型机制?
- 什么是类加载器,类加载器有哪些?
20.简述 java 内存分配与回收策率以及 Minor GC 和Major GC
Linux面试专题
- Linux 中主要有哪几种内核锁?
- Linux 中的用户模式和内核模式是什么含意?
- 怎样申请大块内核内存?
- 用户进程间通信主要哪几种方式?
- 通过伙伴系统申请内核内存的函数有哪些?
- Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
- 对文件或设备的操作函数保存在那个数据结构中?
- Linux 中的文件包括哪些?
- 创建进程的系统调用有那些?
- 调用 schedule()进行进程切换的方式有几种?
- Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
- 进程调度的核心数据结构是哪个?
- 如何加载、卸载一个模块?
- 模块和应用程序分别运行在什么空间?
- Linux 中的浮点运算由应用程序实现还是内核实现?
- 模块程序能否使用可链接的库函数?
- TLB 中缓存的是什么内容?
- Linux 中有哪几种设备?
- 字符设备驱动程序的关键数据结构是哪个?
- 设备驱动程序包括哪些功能函数?
- 如何唯一标识一个设备?
- Linux 通过什么方式实现系统调用?
- Linux 软中断和工作队列的作用是什么?