Java面试必备:hibernate查询、http/smtp协议、Servlet生命周期、SQL分页与集合特性

需积分: 0 2 下载量 87 浏览量 更新于2024-07-27 收藏 887KB DOC 举报
"Java程序员面试题搜集" 面试是评估Java程序员技能的重要环节,涵盖的知识面广泛,包括但不限于ORM框架、网络协议、文件操作、Servlet、SQL查询以及集合框架的使用。以下是对这些知识点的详细解释: 1. **Hibernate离线查询去除重复项**: Hibernate中的Criteria API提供了一个解决方案来去除查询结果中的重复项,即使用`Criteria.DISTINCT_ROOT_ENTITY`作为`ResultTransformer`。这样设置后,查询会返回唯一根实体,从而消除重复数据。 2. **HTTP和SMTP协议及端口**: - **HTTP(超文本传输协议)**:默认工作在端口80,用于传输网页内容。它是客户端和服务器之间通信的基础,支持GET、POST等多种请求方法。 - **SMTP(简单邮件传输协议)**:运行在端口25,主要用于发送电子邮件。当用户通过电子邮件客户端发送邮件时,SMTP服务处理邮件的传输。 3. **文件复制程序**: 文件复制通常涉及使用I/O流在源文件和目标文件之间读写数据。例如,可以使用Java的`FileInputStream`和`FileOutputStream`来实现这个功能,确保正确处理缓冲区和异常。 4. **Servlet生命周期**: Servlet是在Web容器中管理的Java类,其生命周期包括: - **创建**:根据配置,可能是首次请求时或Web应用启动时创建。 - **初始化**:容器调用`init()`方法进行初始化。 - **服务**:通过`service()`方法处理客户端请求,并调用适当的`doGet()`或`doPost()`等方法。 - **销毁**:Web容器关闭时调用`destroy()`方法,释放资源。 5. **SQL语句分页**: - **MySQL**:可以使用`LIMIT`和`OFFSET`来实现分页,或者如示例所示,通过子查询避免重复数据。 - **Oracle**:大容量数据时,通常使用`ROWNUM`结合子查询进行分页,或者使用“三层嵌套”方法,先获取总行数,然后计算分页范围。 6. **Java集合框架**: - **List**:有序集合,允许重复元素,如ArrayList和LinkedList,提供了索引来访问元素。 - **Set**:不允许重复元素,如HashSet和TreeSet,维护元素的唯一性,并可能提供排序。 - **Map**:键值对的集合,如HashMap和TreeMap,每个键对应一个值,键必须唯一,不保证值的顺序。 了解这些知识点对于Java程序员来说至关重要,不仅能够帮助应对面试,也是日常开发中不可或缺的基础技能。