"这是一份Java面试题集合,包含了作者在面试过程中遇到的公司真实问题,部分题目附有答案,涵盖了Java、Web开发、Java工程师面试的常见知识点,如SSH MVC框架、Session管理、Cookie与URL重写、Spring的AOP和IOC、数据库完整性约束、Struts版本比较、过滤器和监听器以及事务管理等。"
本文将针对这些面试题中的关键知识点进行详细解读:
1. **SSH MVC框架**:SSH是Spring、Struts和Hibernate三个开源框架的首字母缩写,常用于构建Java Web应用程序。Struts处理控制器逻辑,Spring负责依赖注入(DI)和面向切面编程(AOP),Hibernate则作为持久层框架,简化对象关系映射(ORM)。
2. **Session管理**:
- `clearsession`:清除session中的所有数据。
- `session注销`:结束一个特定的session。
- `timeout`:session超时设置,超过该时间未活动的session会被自动清理。
- `注销session`:用户主动或系统强制结束session。
- session和cookie的区别:session存储在服务器端,数据安全但消耗服务器资源;cookie存储在客户端,不安全但减轻服务器负担。
3. **实例化与作用域**:
- `final`关键字:用于声明不可变对象、常量和方法,防止被重新赋值或重写。
- `abstract`关键字:创建抽象类和抽象方法,不包含具体实现。
- `static`关键字:用于创建类级别的变量和方法,无需实例化对象即可访问。
- `newInstance()`和`new`操作符:前者是反射API的一部分,动态创建对象;后者直接实例化类。
4. **数据库完整性约束**:
- 实体完整性(Entity Integrity):主键唯一标识表中的每一行,确保数据完整。
- 域完整性(Domain Integrity):列的值必须满足特定的约束条件,如数据类型、范围等。
- 引用完整性(Referential Integrity):外键约束确保引用关系的合法性,避免悬挂引用。
- 用户定义的完整性(User-defined Integrity):自定义的业务规则,如年龄必须大于0等。
5. **过滤器和监听器**:
- `webfilterlistener`:过滤器用于拦截请求和响应,可以进行权限控制、字符编码转换等。监听器可以监听Web应用中的特定事件,如初始化、销毁等。
6. **事务管理**(Transaction):
- ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。事务确保了数据的一致性和完整性。
- 持久化操作:将内存中的数据保存到数据库,如通过JDBC执行SQL或使用ORM框架如Hibernate。
7. **存储过程**:
- 存储过程是预编译的SQL语句集合,可提高数据库性能,减少网络传输。
- 优点包括减少网络流量、增强安全性、可重复使用等。
这份面试题集覆盖了Java开发的多个核心领域,对准备面试的Java工程师来说,是宝贵的复习资料。理解和掌握这些知识点,将有助于在面试中表现出色。