尚品网站建设建设公司的网站制作
Java基础
- Java 中的几种基本数据类型了解么?
 - 基本类型和包装类型的区别?
 - 包装类型的缓存机制了解么?
 - 成员变量与局部变量的区别?
 - 静态变量有什么作用?
 - 静态方法为什么不能调用非静态成员?
 - 重载和重写有什么区别?
 - 面向对象和面向过程的区别
 - 面向对象三大特征
 - 接口和抽象类有什么共同点和区别?
 - 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
 - == 和 equals() 的区别
 - String、StringBuffer、StringBuilder 的区别?
 - Exception 和 Error 有什么区别?
 - 什么是序列化和反序列化?
 - 序列化协议对应于 TCP/IP 4 层模型的哪一层?
 - 谈谈反射机制的优缺点
 - JDK 动态代理和 CGLIB 动态代理对比
 - 静态代理和动态代理的对比
 
集合
- ArrayList 与 LinkedList 区别?
 - 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
 - HashMap 和 Hashtable 的区别
 - HashMap 和 TreeMap 区别
 - HashMap 的长度为什么是 2 的幂次方
 - ConcurrentHashMap 和 Hashtable 的区别
 - JDK 1.7 和 JDK 1.8 的 ConcurrentHashMap 实现有什么不同?
 - ConcurrentHashMap 能保证复合操作的原子性吗?
 
并发/线程
- Java 线程和操作系统的线程有啥区别?
 - 程序计数器为什么是私有的?
 - 虚拟机栈和本地方法栈为什么是私有的?
 - 如何创建线程?
 - 说说线程的生命周期和状态?
 - 什么是线程上下文切换?
 - Thread#sleep() 方法和 Object#wait() 方法对比
 - 可以直接调用 Thread 类的 run 方法吗?
 - 并发与并行的区别
 - volatile如何保证变量的可见性?/防止 JVM 的指令重排序/不能保证对变量的操作是原子性的
 - 乐观锁(实现使用版本号机制或 CAS 算法)和悲观锁
 - CAS 算法存在哪些问题?/ ABA 问题/循环时间长开销大/只能保证一个共享变量的原子操作
 - synchronized 底层原理了解吗?/ synchronized 同步语句块的实现使用的是 monitorenter 和
monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit
指令则指明同步代码块的结束位置。synchronized 修饰的方法并没有 monitorenter 指令和 monitorexit
指令,取而代之的是 ACC_SYNCHRONIZED 标识,该标识指明了该方法是一个同步方法。不过两者的本质都是对对象监视器
monitor 的获取。 - 公平锁和非公平锁有什么区别?
 - 可中断锁和不可中断锁有什么区别?
 - 共享锁和独占锁有什么区别?
 - ThreadLocal 原理了解吗?
 - ThreadLocal 内存泄露问题是怎么导致的?
 - 如何创建线程池?
 - 线程池常见参数有哪些?如何解释?
 - 为什么不推荐使用内置线程池?/ Executors 返回线程池对象的弊端
 - 线程池处理任务的流程了解吗?
 - AQS 是什么?/抽象队列同步器AbstractQueuedSynchronizer
 - AQS 的原理是什么?
 - Semaphore 的原理是什么?
 - CountDownLatch 的原理是什么?
 
IO
- 字节流InputStream(字节输入流)/ OutputStream(字节输出流)
 - 字符流Reader(字符输入流)/ Writer(字符输出流)
 - 字节缓冲流BufferedInputStream(字节缓冲输入流)/ BufferedOutputStream(字节缓冲输出流)
 - 字符缓冲流BufferedReader (字符缓冲输入流)/BufferedWriter(字符缓冲输出流)
 - Java IO 设计模式总结/装饰器模式/适配器模式/工厂模式/观察者模式
 - Java 中 3 种常见 IO 模型/ BIO (Blocking I/O)/ NIO (同步非阻塞 IO/ I/O 多路复用)/
AIO (Asynchronous I/O) - NIO 核心组件/ Buffer(缓冲区)/ Channel(通道)/ Selector(选择器)
 - NIO 零拷贝
 
JVM
- 线程私有的:程序计数器/虚拟机栈(栈帧:局部变量表、操作数栈、动态链接、方法返回地址)/本地方法栈
 - 线程共享的:堆(新生代内存(Young Generation: Eden 区、两个 Survivor 区 S0 和
S1)/老生代(Old Generation)/永久代(Permanent Generation)
Metaspace(元空间))/方法区/直接内存 (非运行时数据区的一部分) - 对象的创建过程
 - 对象的内存布局(对象头(Header)、实例数据(Instance Data)和对齐填充(Padding))
 - 对象的访问定位(使用句柄、直接指针)
 - 死亡对象判断方法(引用计数法/可达性分析算法)
 - 引用类型总结(强引用/软引用/弱引用/虚引用)
 - 垃圾收集算法(标记-清除算法/复制算法/标记-整理算法/分代收集算法)
 - 垃圾收集器(Serial 收集器/ ParNew 收集器/ Parallel Scavenge 收集器/ Serial Old 收集器/
Parallel Old 收集器/ CMS 收集器/ G1 收集器/ ZGC 收集器) - 类的生命周期(加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading))
 - 双亲委派模型
 - JVM参数
 
网络
- OSI 七层模型是什么?每一层的作用是什么?
 - TCP/IP 四层模型是什么?每一层的作用是什么?
 - 应用层有哪些常见的协议?
 - 传输层有哪些常见的协议?
 - 网络层有哪些常见的协议?
 - 从输入 URL 到页面展示到底发生了什么?
 - HTTP 和 HTTPS 有什么区别?
 - HTTP 是不保存状态的协议, 如何保存用户状态?
 - Cookie 和 Session 有什么区别?
 - WebSocket 和 HTTP 有什么区别?
 - WebSocket 的工作过程是什么样的?
 - TCP 与 UDP 的区别
 - TCP 三次握手和四次挥手
 
操作系统
- 什么是用户态和内核态?
 - 为什么要有用户态和内核态?只有一个内核态不行么?
 - 用户态切换到内核态的 3 种方式/系统调用/中断/异常
 - 系统调用的过程了解吗?
 - 什么是进程和线程?
 - 进程和线程的区别是什么?
 - 线程间的同步的方式有哪些?
 - PCB 是什么?包含哪些信息?
 - 进程有哪几种状态?
 - 进程间的通信方式有哪些?
 - 进程的调度算法有哪些?
 - 什么是僵尸进程和孤儿进程?
 - 什么是死锁?
 - 产生死锁的四个必要条件是什么?
 - 解决死锁的方法
 - 内存管理主要做了什么?
 - 什么是内存碎片?
 - 常见的内存管理方式有哪些?
 - 什么是虚拟内存?有什么用?
 - 什么是虚拟地址和物理地址?
 - 虚拟地址与物理内存地址是如何映射的?
 - 文件系统主要做了什么?
 - 常见的磁盘调度算法有哪些?
 
