本文共 1428 字,大约阅读时间需要 4 分钟。
Java 面试总结
1. 计算机基础
TCP/IP
TCP/IP 是一对协议,分别负责数据的可靠传输和无连接性。TCP 层通过三次握手建立连接,确保数据可靠传输,而 IP 层负责数据的路由和分发。
HTTPS
HTTPS 是基于 SSL/TLS 的协议,采用了以下加密方式:
- 哈希算法:MD5、SHA
- 对称加密:AES、DES
- 非对称加密:RSA其握手过程包括:
客户端发送协议版本和随机数。 服务器确认加密方式并发送数字证书。 客户端解密随机数并生成对话秘钥。 2. 对象
类
- 抽象类与接口:抽象类可以有实现方法,接口只能声明方法。
- 内部类:包括静态类、成员类、局部类、匿名类。
- 类关系:包括继承、实现、组合、聚合、依赖、关联。
方法
- 方法签名:包含方法名称和参数列表,是 JVM 的唯一标识。
- 参数传递:基本类型和引用类型都采用值复制。
- 静态代码块:只在类初始化时执行一次。
- @Override:一大两小两同。
- @Override 的限制:不能是静态、final、构造方法。
重载
@Overridepublic void method() {}@Overridepublic int compute() {} 重载通过方法名和参数列表区分。
3. 数据类型
引用类型
- 强引用:不会被回收,需手动释放。
- 软引用:内存不足时会被回收。
- 弱引用:无论内存是否足够都会被回收。
- 虚引用:无法通过虚引用获取对象,仅用于跟踪回收。
String
- StringBuffer:线程安全,允许修改。
- StringBuilder:非线程安全,性能更高。
- String:不可变,常量池优化。
4. 异常与日志
异常分类
- Error:严重问题,不可恢复。
- Exception:非致命异常,分为 checked 和 unchecked。
- UncheckedException:RuntimeException 及其子类。
JVM
- 字节码:通过 JVM 执行,JVM 提供跨平台支持。
- 类加载过程:包括加载、链接、初始化、使用、卸载。
- 内存布局:包括程序计数器、虚拟机栈、本地方法栈、堆、方法区。
5. 数据结构与集合
数据结构
- 线性结构:数组、链表、队列、栈。
- 树结构:二叉树、红黑树、平衡树。
- 图结构:网格、图链、无向图。
集合框架
- List:ArrayList(数组实现,插入删除慢)、LinkedList(链表实现,插入删除快)。
- Map:HashMap(哈希表)、TreeMap(有序 Map)。
- Set:HashSet(哈希集合)、TreeSet(有序集合)。
6. 并发与多线程
线程安全
- 互斥性:通过锁机制实现。
- 不可见性:锁只能被持有线程访问。
- 线程本地存储:ThreadLocal 提供线程私有变量。
线程池
- 线程管理:复用线程,控制最大并发数。
- 任务队列:缓存策略和拒绝机制。
ThreadLocal
- 内存泄漏:由于 ThreadLocalMap 的弱引用机制,需谨慎使用。
- 使用方法:通过 get、set、remove 方法管理线程变量。
7. 其他
Red-Black Tree
- 定义:节点颜色交替,根节点黑色,叶节点黑色。
- 性质:红节点的子节点黑色,路径黑色节点数相同。
- 操作:旋转保证树高。
ConcurrentHashMap
- 分段锁:基于 Segment 实现。
- 优化:将链表转换为红黑树,提升性能和效率。
欢迎关注我的公众号,获取更多技术内容!
转载地址:http://cuny.baihongyu.com/