Java面试50问,女面试官最喜欢问的居然是它!

简介: Java面试50问,女面试官最喜欢问的居然是它!

[] 什么是Java的JSP?

JavaServer Pages(JSP)是一种用于生成动态网页的技术,它是Java EE规范的一部分。JSP允许开发者将Java代码嵌入HTML页面中,这些嵌入的Java代码在服务器端执行,生成动态内容,然后将生成的HTML发送给客户端浏览器。

JSP的主要特点包括:

1. 页面结构:JSP页面的结构是基于HTML的,可以包含标准的HTML标签和JavaScript代码。

2. Java代码嵌入:JSP允许在HTML页面中嵌入Java代码片段,这些代码片段在服务器端执行。

3. 模板元素:JSP提供了几种模板元素,如JSP注释、脚本元素(脚本片段、表达式和声明)。

4. 自定义标签:JSP允许开发者创建自定义标签库,以简化页面编码和提高重用性。

5. 自动处理请求:JSP页面通常映射到一个Servlet,当请求到达时,JSP引擎自动将JSP页面编译成Servlet,然后由Servlet处理请求。

6. 生命周期:JSP页面的生命周期从编译开始,到页面被卸载结束。在生命周期的不同阶段,可以执行初始化、处理请求和销毁等操作。

7. 模型-视图-控制器(MVC):JSP通常用于实现MVC架构中的视图层,负责生成用户界面。

JSP的基本语法元素包括:

- JSP指令:用于控制JSP页面的指令,如<%@ page %>、<%@ include %>等。

- 脚本元素:

 - 脚本片段(Scriptlet):<% ... %>,用于嵌入任何Java代码。

 - 表达式(Expression):<%= ... %>,用于输出Java变量的值。

 - 声明(Declaration):<%! ... %>,用于声明变量或方法。

- 注释:

 - JSP注释:<%-- ... --%>,用于添加JSP页面的注释,这些注释不会发送给客户端。

 - HTML注释:<!-- ... -->,用于添加HTML注释,这些注释会发送给客户端。

JSP的一个简单示例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

   <title>My JSP Page</title>

</head>

<body>

   <h1>Hello, JSP!</h1>

   <p><%= "Current time: " + new java.util.Date() %></p>

</body>

</html>

在上述示例中,JSP页面包含了HTML标签和一个JSP表达式,用于输出当前时间。

JSP为快速开发动态Web应用程序提供了一种简单而强大的方式,但它也有一些缺点,如性能问题、代码移植性差等。为了解决这些问题,许多开发者选择使用模板引擎(如Thymeleaf)或更现代的框架(如Spring MVC)。

JSP是一种在服务器端生成动态网页的技术,对于希望使用Java构建Web应用程序的开发者来说,了解JSP是非常重要的。然而,对于现代的Web开发,许多开发者也选择使用更高级的框架和库,以提高开发效率和应用程序的性能。

[] 什么是Java的EJB?

Java的EJB(Enterprise JavaBeans)是一个用于开发分布式应用程序的Java框架,它是Java EE(Java Enterprise Edition)规范的一部分。EJB提供了一种创建具有事务管理、安全性、远程访问和生命周期管理的业务逻辑组件的标准方法。

EJB的主要目标是简化企业级应用程序的开发,通过容器管理的组件(Container-Managed Components,CMC)模型,将业务逻辑与底层的基础设施和系统级服务分离。这样,开发者可以专注于实现业务逻辑,而不必处理底层的复杂性。

EJB的主要特点包括:

1. 容器管理:EJB容器负责管理EJB组件的生命周期,包括实例化、销毁、事务管理、安全性和持久性等。

2. 事务管理:EJB提供了声明式和编程式的事务管理,允许开发者在不编写复杂事务代码的情况下,控制事务的边界和行为。

3. 安全性:EJB容器提供了安全性支持,允许开发者通过声明式安全控制对EJB组件的访问。

4. 远程访问:EJB允许通过远程接口进行访问,使得客户端可以跨越网络与EJB组件交互。

5. 生命周期管理:EJB定义了明确的生命周期,包括创建、使用和销毁等阶段,容器负责管理这些生命周期事件。

6. 依赖注入:EJB 3.0及以后的版本支持依赖注入,使得组件之间的依赖关系可以自动装配。

7. 异构客户端访问:EJB组件可以通过多种方式被客户端访问,包括RMI-IIOP(CORBA)、RMI(Java)和Web服务等。

EJB有几种类型:

1. 会话Bean(Session Beans):表示业务逻辑的操作,可以是无状态(Stateless)或有状态(Stateful)。

2. 消息驱动Bean(Message Driven Beans):用于处理异步消息,通常用于消息队列。

3. 实体Bean(Entity Beans):代表数据库中的持久化数据,可以映射到数据库表。

EJB的一个简单示例:

import javax.ejb.Stateless;

@Stateless

public class MyBean {

   public void doBusinessLogic() {

       // 业务逻辑代码

   }

}

在上述示例中,MyBean是一个无状态的会话Bean。

EJB为构建企业级应用程序提供了强大的支持,但它也有一些缺点,如性能开销、复杂性等。随着Java EE的发展,EJB的使用逐渐减少,许多开发者选择使用更轻量级和更简单的技术,如Spring框架。

EJB是一种用于构建企业级Java应用程序的技术,对于希望使用Java构建复杂、可伸缩的应用程序的开发者来说,了解EJB是非常重要的。然而,对于现代的Java EE开发,许多开发者也选择使用更现代的框架和库,以提高开发效率和应用程序的性能。

相关文章
|
29天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
67 2
|
18天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
46 14
|
28天前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
23天前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
27 6
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
53 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
106 4
|
1月前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
18 0
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。