【Java中级面试基础知识点】 1. **String、StringBuilder、StringBuffer的区别** - **运行速度**:StringBuilder比StringBuffer快,因为它们都是用于构建字符串,但StringBuilder无同步机制,适用于单线程环境,而StringBuffer是线程安全的,适用于多线程环境。 - **可变性**:String是不可变的,StringBuilder和StringBuffer是可变的。 - **应用场景**:少量字符串操作使用String,单线程大量操作使用StringBuilder,多线程大量操作使用StringBuffer。 2. **JVM内存结构** - **虚拟机栈**:线程私有,每个方法执行时创建一个线程帧,存储局部变量、操作数栈、动态链接和返回地址。 - **堆**:线程共享,用于存储对象实例。 - **方法区**:线程共享,存储类信息、常量、静态变量等。 - **程序计数器**:线程私有,记录当前线程执行的字节码行号。 - **本地方法栈**:为虚拟机的native方法服务。 3. **垃圾收集(GC)** - **垃圾检测**:引用计数器和可达性分析算法。 - **调优**:通过-XX:GCTimeRatio和-XX:MaxGCPauseRatio设置吞吐量优先或暂停时间优先。 - **常用算法**:标记清除、复制和分代收集算法(年轻代、年老代、持久代)。 4. **引用类型** - **强引用**:只要引用存在,对象不会被回收。 - **软引用**:内存不足时才回收,常用于缓存。 - **弱引用**:第二次垃圾回收时回收,可用于监控对象是否被标记为待回收。 5. **多态** - **重载**:同一类中,方法名相同但参数列表不同的方法。 - **重写**:子类对父类同名方法的覆盖,参数和返回值必须相同,实现不同。 6. **接口与抽象类** - **抽象类**:捕捉子类通用特性,不能实例化,只能作为子类超类。 - **接口**:抽象方法集合,实现接口的类必须实现接口的所有抽象方法,实现多继承。 7. **分布式环境下的Cookie和Session** - **Cookie**:数据存储在客户端,不安全,适用于存储非敏感信息。 - **Session**:数据存储在服务器,安全但会增加服务器负担。可以通过session复制或共享session机制(如Redis)来实现分布式环境下的会话同步。 8. **I/O模型** - **BIO**: Blocking I/O,同步阻塞,一个连接一个线程。 - **NIO**: Non-blocking I/O,同步非阻塞,多路复用,一个线程管理多个连接。 - **AIO**: Asynchronous I/O,异步非阻塞,事件驱动,服务器端处理完请求后通知客户端。 以上知识点涵盖了Java面试中常见的核心概念,包括字符串处理、JVM内存管理、垃圾收集、引用类型、多态、接口与抽象类的使用,以及分布式环境下的会话管理和I/O模型。理解和掌握这些知识点对于Java开发者来说至关重要,特别是在面试和解决实际问题时。
剩余63页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助