Java面试精华:多态、字符串操作、内存管理与并发详解

需积分: 9 1 下载量 18 浏览量 更新于2024-08-05 收藏 23KB DOCX 举报
1. **多态及其好处** - 多态是面向对象编程的核心特性,它允许不同类型的对象对相同的消息做出响应,提供了可替换性、可扩充性、接口性和灵活性,简化了代码结构。 - 实现多态的方式包括:接口实现、继承父类并重写方法、以及同一类内的方法重载。 2. **字符串相等性比较** - 在Java中,`s5 == s2`返回`false`。这是因为`s2`创建时,字符串连接操作会导致内部常量池中的"ab"被复用,而`s5`则是新建了一个新的String对象。 3. **final、finalize和finally的区别** - `final`修饰符限制变量或方法的修改,类被final修饰表示不可变性。 - `finalize`方法是对象在垃圾回收前的回调,但不保证何时会被调用。 - `finally`是异常处理的一部分,无论是否发生异常,finally块中的代码都会被执行。 4. **Java垃圾回收机制** - 基于分代理论,内存分为年轻代、年老代和永久代,新对象先放入年轻代,存活时间长的对象移动到年老代。垃圾回收器针对不同世代使用不同的策略,以高效管理内存。 5. **进程、线程和协程的差异** - 进程是独立的执行单元,有自己的内存空间;线程共享进程内存,提高并发性。 - 协程(Coroutine)是轻量级的线程,不涉及操作系统层面的切换,通常在用户态内调度,适合I/O密集型任务。 6. **ArrayList和LinkedList的区别** - ArrayList基于动态数组实现,随机访问快,插入和删除慢;LinkedList是链表结构,插入和删除快,随机访问慢。 7. **Spring IoC容器** - Spring IoC(Inversion of Control)容器负责对象的生命周期管理和依赖关系管理,实现了依赖注入,使得组件之间松耦合。 8. **Spring Bean生命周期** - Spring Bean经历初始化(构造函数或init-method)、配置(setProperties或autowire)、激活(pre-instantiation或lazy-init)、实际业务逻辑执行、销毁(post-destroy)等阶段。 9. **Spring通知类型(Advice)** - Spring AOP支持多种通知类型,如前置通知(Before)、后置通知(After)、环绕通知(Around)、异常通知(AfterThrowing)和最终通知(AfterReturn/AfterCompletion)。 10. **Spring Boot核心配置文件及其区别** - `application.properties`或`application.yml`:全局配置,一般包含基本环境设置和系统配置。 - `application-dev.properties`或`application-dev.yml`:开发环境专用,提供额外调试或开发特性的配置。 - `application-prod.properties`或`application-prod.yml`:生产环境配置,包含性能优化和安全相关的设置。 11. **Spring Boot集成MyBatis过程** - 配置数据源、MyBatisSessionFactory、扫描Mapper接口并自动装配成Bean、定义事务管理等步骤。 12. **Spring Cloud服务注册与发现** - Eureka或Consul等服务注册中心用于服务的自我注册和发现,便于微服务架构中的服务间通信。 以上内容涵盖了Java编程中的关键知识点,包括多态、字符串操作、内存管理和并发模型、Spring框架的核心概念以及微服务架构中的实践。