【Java面试知识点详解】
在Java面试中,面试官常常会关注候选人的基础知识、框架应用以及实战经验。以下是一些常见的Java面试知识点:
1. **Hibernate中的离线查询去除重复项**:
Hibernate 提供了一个方便的方法来去除查询结果中的重复实体,即 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这行代码会确保返回的实体结果是唯一的,避免了由于关联查询导致的重复数据。
2. **HTTP和SMTP协议及其端口**:
- HTTP(超文本传输协议)用于传输超文本信息,其默认端口是80。
- SMTP(简单邮件传输协议)用于发送电子邮件,其默认端口是25。
3. **文件复制功能的实现**:
在Java中,可以使用 `java.io` 包中的 `InputStream` 和 `OutputStream` 类来实现文件复制。基本步骤包括打开源文件和目标文件的输入输出流,然后读取源文件并写入目标文件,最后关闭流。
4. **Servlet的创建过程和生命周期**:
- Servlet的创建有两种方式:按需创建(客户端请求时创建)和预加载(通过`<load-on-startup>`标签在Web应用启动时创建)。
- 生命周期包括:初始化(调用`init()`方法),服务(调用`service()`方法,进而调用`doGet()`或`doPost()`),以及销毁(调用`destroy()`方法)。
5. **SQL分页查询**:
- MySQL中,可以使用子查询和`LIMIT`来实现分页,例如:
```sql
SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table1 ORDER BY id LIMIT 页大小*(页数-1), 页大小) ORDER BY id;
```
- Oracle中,常见的分页方法有ID截取法和三层嵌套查询。
6. **集合框架的特点**:
- List:有序且允许重复元素,如ArrayList和LinkedList,ArrayList适用于随机访问,LinkedList适用于插入和删除。
- Set:不允许重复元素,如HashSet和TreeSet,保证元素唯一性。
- Map:存储键值对,如HashMap和TreeMap,Key通常是唯一的,Value可以有多个。
7. **final, finally, finalize的区别**:
- final:用于声明不可变类、变量和方法,防止被继承、修改或重写。
- finally:在异常处理中确保一段代码总是被执行,无论是否发生异常。
- finalize:对象被垃圾收集器回收前的清理方法,但不保证一定会调用,不应依赖此方法进行资源释放。
8. **ArrayList和Vector的区别**:
- 同步性:Vector是线程安全的,ArrayList不是。
- 扩容策略:Vector默认扩容为原容量的两倍,ArrayList则是原来的一半。
9. **ArrayList, Vector, LinkedList的存储性能和特性**:
- ArrayList基于动态数组,适合随机访问,插入和删除效率较低。
- Vector与ArrayList类似,但同步,效率略低。
- LinkedList基于链表,插入和删除效率高,但随机访问性能较差。
以上知识点涵盖了Java基础、框架应用、网络协议、集合操作和异常处理等多个方面,是Java面试中常见的题目。了解并掌握这些内容对于提升面试表现至关重要。