"JAVA面试题集,包含基础题122道和代码题19道,涵盖面向对象特征、Servlet生命周期、Servlet与CGI的区别、EJB相关技术及Bean类型的区别。"
Java作为一门广泛使用的编程语言,在面试中常常会考察开发者对语言特性的理解和应用。以下是针对提供的部分内容的详细解释:
1. **面向对象的特征**:面向对象编程(OOP)的核心特征包括抽象、继承、封装和多态性。
- **抽象**:抽象是将复杂问题简化,关注关键特征,忽略不重要的细节。在Java中,这通常通过接口或抽象类来实现。
- **继承**:继承允许子类继承父类的属性和方法,减少了代码重复,提高了代码复用性。Java中的`extends`关键字用于实现类的继承。
- **封装**:封装是将数据和方法捆绑在一起,对外只提供有限的公共接口,隐藏内部实现细节。Java通过访问修饰符(public, private, protected)来实现封装。
- **多态性**:多态性意味着同一种消息可以由不同的对象来响应。Java中的方法重写和接口实现是多态性的体现。
2. **Servlet的生命周期**:Servlet的生命周期包括初始化(init)、服务(service)、销毁(destroy)三个阶段。当服务器加载Servlet时,会调用`init()`方法进行初始化;每次请求到来,通过`service()`方法分发到`doGet()`或`doPost()`等方法处理;服务器关闭或Servlet不再需要时,调用`destroy()`方法释放资源。
3. **Servlet与CGI的区别**:Servlet是在服务器内存中持久存在,使用多线程处理请求,性能高效;而CGI对每个请求创建新的进程,处理完后销毁,导致资源消耗大,效率较低。
4. **EJB(Enterprise JavaBeans)**:EJB是Java EE的一部分,用于构建可部署的分布式企业级应用。EJB主要包括Session Bean、Entity Bean和Message-Driven Bean。
- **Session Bean**:分为Stateful Session Bean(有状态会话Bean)和Stateless Session Bean(无状态会话Bean)。Stateful Bean跟踪用户会话状态,而Stateless Bean不存储会话信息,适合处理无状态的业务逻辑。
- **Entity Bean**:主要处理持久化数据,对应数据库中的实体。Entity Bean分为两种:Container-managed Persistence (CMP) 和Bean-managed Persistence (BMP),前者由容器管理数据持久化,后者由开发者自己管理。
EJB利用JNDI(Java Naming and Directory Interface)进行查找,RMI(Remote Method Invocation)进行远程方法调用,JTA(Java Transaction API)处理事务,这些技术共同支持了EJB的运行。
在准备Java面试时,除了掌握这些基础知识,还需要理解并发编程、集合框架、异常处理、设计模式、JVM内存模型以及Spring、Hibernate等相关框架的应用。熟悉这些内容将有助于在面试中表现出色。