【华为问答面试题】涉及到的是IT行业的面试常见问题,涵盖了多个Java相关技术和概念。下面将对这些知识点进行详细的解释:
1. **ArrayList 和 Vector的区别**:
- **同步性**:ArrayList是非同步的,线程不安全,适合单线程环境;而Vector是同步的,线程安全,适合多线程环境。
- **扩容策略**:ArrayList在扩容时,新容量通常是原容量的1.5倍;Vector则是原容量的2倍。
2. **HashMap 和 Hashtable的区别**:
- **历史背景**:Hashtable更早,基于Dictionary类;HashMap是Java 1.2后新增的,实现了Map接口。
- **同步性**:Hashtable是线程安全的,HashMap不是。
- **值的处理**:HashMap允许null键和值,而Hashtable不允许。
3. **char型变量存储中文**:
- **Unicode编码**:Java中char使用Unicode编码,每个char占16位,因此可以存储中文字符。
4. **多线程实现方式**:
- **继承Thread类**:创建新的线程类,直接继承Thread类并重写run()方法。
- **实现Runnable接口**:创建新的类实现Runnable接口,实现run()方法,然后通过Thread类实例化线程。
5. **同步实现方法**:
- **synchronized**:用于方法或代码块,确保同一时间只有一个线程执行特定代码。
- **wait()与notify()**:用于线程间的通信,让当前线程等待或唤醒其他线程。
6. **JSP动作**:
- **jsp:include**:动态包含,每次请求都会检查包含文件的变化。
- **jsp:useBean**:查找或实例化JavaBean。
- **jsp:setProperty和jsp:getProperty**:设置和获取JavaBean的属性。
- **jsp:forward**:将请求转发到另一个页面。
- **jsp:plugin**:根据浏览器类型生成Java插件的标签。
7. **Servlet生命周期**:
- **加载和实例化**:容器(如Tomcat)加载Servlet类并创建实例。
- **初始化**:调用init()方法进行初始化。
- **处理请求**:每次请求时调用service()方法。
- **销毁**:容器关闭时调用destroy()方法,释放资源。
8. **MVC模式**:
- **Model**:业务逻辑,通常由JavaBean或EJB实现。
- **View**:用户界面,通常由JSP页面生成。
- **Controller**:控制器(Servlet),协调Model和View。
9. **J2EE**:
- **多层架构**:客户端、Web层、业务逻辑层、企业信息系统层。
- **分布式**:支持分布在不同计算机上的组件。
- **组件化**:采用EJB等组件技术构建应用程序。
10. **CORBA**:
- **定义**:Common Object Request Broker Architecture,一种跨平台的面向对象中间件标准。
- **用途**:使不同语言、操作系统和网络环境下的对象能够相互通信和协作。
以上就是面试中可能遇到的Java、JSP、Servlet、MVC、J2EE以及CORBA相关知识点的详细解释,这些知识对于理解和解答IT公司的面试题至关重要。