Java面试深度解析:基础到进阶,涵盖并发与中间件

需积分: 5 0 下载量 72 浏览量 更新于2024-08-04 收藏 20KB DOCX 举报
"Java中级面试题整理,涵盖了Java基础、进阶、算法、并发和中间件等内容,适合准备Java面试者学习。" Java基础: 1. Java的数据类型分为两大类:基本类型(如int, double, char等)和引用类型(如类、接口和数组)。 2. `final`关键字用于声明变量、方法或类为不可变,常用于常量的定义和防止类被继承。 3. `static`关键字用来声明静态成员,静态变量属于类而不属于对象,静态方法可以直接通过类名调用,不依赖于实例化对象。 4. `==`比较的是对象的引用,而`equals()`方法通常用于比较对象的内容是否相等,对于非null对象,`equals()`默认行为也是比较引用,但可以被覆盖以比较对象属性。 5. Error表示系统级错误,无法恢复,而Exception是程序运行时可以捕获和处理的异常。 6. Java程序的初始化顺序:静态块 -> 构造器 -> 非静态块,按照它们在类中的顺序执行。 7. IO流分为字节流和字符流,字节流处理二进制数据,字符流处理文本数据。它们之间可以分为输入流和输出流,分别用于读写操作。 8. `String`使用`final`修饰,确保其不可变性,保证线程安全,提高字符串池的效率。 9. ArrayList和LinkedList分别是动态数组和链表实现的集合,ArrayList适合随机访问,插入删除慢;LinkedList适合插入删除,随机访问慢。 10. BIO( Blocking I/O,同步阻塞I/O),NIO(Non-blocking I/O,同步非阻塞I/O),AIO(Asynchronous I/O,异步非阻塞I/O),分别代表了不同的I/O模型。 Java进阶: 1. 重载是在一个类中创建多个同名方法,但方法的参数列表不同;重写是子类对父类已有的方法进行重新实现。 2. 抽象类可以包含抽象方法和非抽象方法,不能实例化;接口只有抽象方法,是完全抽象的,用作多继承。 3. 设计模式是软件开发中解决问题的通用解决方案,如单例模式、工厂模式、装饰器模式等。 4. SpringBean的生命周期包括实例化、初始化、使用和销毁四个阶段,可以通过各种回调接口定制。 5. 类的加载过程涉及加载、验证、准备、解析和初始化五个步骤。 算法: 1. HashMap在JDK8中引入了红黑树优化,使得在高负载因子下性能更优。 2. 冒泡排序是简单的交换排序,通过不断比较相邻元素并交换来排序。 3. 快速排序是一种高效的分治算法,选取基准值进行划分,然后递归地对划分后的子序列进行排序。 MyBatis: 1. MyBatis是一个优秀的持久层框架,提供SQL映射功能,实现Java与数据库的简单交互。 2. ORM(Object-Relational Mapping)是对象关系映射,将数据库操作转换为对象操作,简化开发。 3. MyBatis是半自动ORM,需要手动编写SQL,比全自动ORM如Hibernate更灵活,但需要更多手动工作。 4. 传统JDBC存在SQL拼接繁琐、易出错,以及资源管理麻烦等问题,MyBatis通过XML或注解方式配置SQL,简化了这些工作。 5. MyBatis的Executor执行器有SimpleExecutor、ReuseExecutor和BatchExecutor,分别对应简单的执行、复用Statement和批处理操作。 6. MyBatis的延迟加载机制是在需要时才加载关联数据,基于代理和CGLIB实现。 7. `#{}`用于预编译处理,防止SQL注入;`${}`用于字符串替换,易导致SQL注入。 8. MyBatis支持多种方式传递参数,如Map、注解、传入对象等。 9. MyBatis的XML映射文件定义SQL和结果映射,内部数据结构如BoundSql和ParameterHandler用于执行和解析SQL。 Spring/SpringBoot: 1. SpringBoot的核心配置文件有application.properties和application.yml,后者用YAML语法,两者功能相同,只是格式不同。 2. SpringBoot的核心注解是@SpringBootApplication,由@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三个注解组成。 3. SpringBoot自动配置是通过条件注解和元数据配置,自动为应用添加必要的Bean。 4. SpringBoot配置加载顺序:默认配置、应用配置、用户自定义配置,优先级依次升高。 5. 跨域问题可通过CORS(Cross-Origin Resource Sharing)机制解决,SpringBoot可使用`@CrossOrigin`注解或配置CORS过滤器。 6. 全局异常处理可以使用@ControllerAdvice和@ExceptionHandler注解,统一处理异常。 7. SpringBoot微服务中实现Session共享,通常采用Redis或分布式Session方案。 8. Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,提供事务管理、依赖注入等功能。 9. Spring的优点包括简化Java企业级应用开发、IoC和AOP等,缺点可能包括配置相对复杂,学习曲线较陡峭。 10. 依赖注入(DI)允许将对象间的依赖关系交给框架管理,降低了组件之间的耦合。 11. AOP(Aspect-Oriented Programming,面向切面编程)是处理系统关注点分离的方式,常用于日志、事务、权限控制等,Spring通过动态代理实现AOP。