东软专业力考试--Java Web 开发基础
Servlet生命周期与工作原理(第1-6题)
- 关于Servlet生命周期中 - init()方法的描述,正确的是?- A. 对于每个到达的客户端请求,容器都会调用一次 - init()方法。- B. - init()方法的主要作用是为Servlet处理请求做准备,例如建立数据库连接。- C. 一个Servlet类的 - init()方法在其生命周期内可以被调用多次。- D. 如果web.xml中未配置 - <load-on-startup>,则- init()方法永远不会被调用。- 答案:B - 解析: - init()方法仅在Servlet实例化后调用一次,用于初始化配置或资源(如数据库连接)。选项A错误,因为- init()只调用一次;选项C错误,因为- init()仅执行一次;选项D错误,即使未配置- <load-on-startup>,首次请求时也会调用- init()。
- 在Servlet生命周期中,关于实例化与初始化,以下说法错误的是? - A. Servlet容器负责Servlet的实例化和初始化。 - B. 默认情况下,当容器启动时,会立即实例化并初始化所有Servlet。 - C. 可以通过 - <load-on-startup>配置让Servlet在容器启动时而非首次请求时进行初始化。- D. 初始化阶段,容器会调用 - init(ServletConfig config)方法。- 答案:B - 解析: 默认情况下,Servlet在首次请求时实例化和初始化,而非容器启动时立即初始化。配置 - <load-on-startup>可改变此行为。
- Servlet的 - service()方法的主要作用是?- A. 初始化Servlet配置信息。 - B. 根据HTTP请求方法的不同,将请求分发给对应的 - doGet()或- doPost()等方法。- C. 释放Servlet所占用的资源。 - D. 将Servlet实例从服务中移除。 - 答案:B - 解析: - service()方法是请求处理的核心,它根据请求类型(GET、POST等)调用相应的- doXxx()方法。选项A属于- init()的职责,选项C和D属于- destroy()的职责。
- 当Web容器决定卸载一个Servlet时(例如应用停止或容器关闭),它会调用Servlet的哪个方法? - A. - init()方法- B. - service()方法- C. - destroy()方法- D. - finalize()方法- 答案:C - 解析: - destroy()方法用于清理资源(如关闭数据库连接),在Servlet卸载前由容器调用。- init()和- service()与生命周期其他阶段相关,- finalize()是Java垃圾回收机制的一部分,并非Servlet生命周期方法。
- 关于Servlet的“单实例、多线程”特性,以下描述正确的是? - A. 容器会为每个并发请求创建一个新的Servlet实例。 - B. 容器会创建一个Servlet实例池,每个请求从中获取一个空闲实例进行处理。 - C. 容器通常只创建一个Servlet实例,并使用线程池来处理并发请求,因此需要开发者注意线程安全问题。 - D. Servlet本身就是线程安全的,开发者无需考虑共享数据的同步问题。 - 答案:C - 解析: Servlet容器采用单例多线程模式,一个Servlet实例处理所有请求,通过线程池实现并发。开发者需确保共享数据(如实例变量)的线程安全,避免竞态条件。 
- 从架构角度看,我们自定义的Servlet通常继承自? - A. - javax.servlet.Servlet接口- B. - javax.servlet.GenericServlet类- C. - javax.servlet.http.HttpServlet类- D. - javax.servlet.http.HttpServletRequest接口- 答案:C - 解析: - HttpServlet是专为HTTP协议设计的类,提供了对- doGet()、- doPost()等方法的默认实现。直接继承- Servlet接口或- GenericServlet需处理协议无关的细节,实际开发中较少使用。
Servlet请求和响应处理(第7-12题)
- 当客户端发起一个HTTP GET请求时,Servlet容器会? - A. 直接调用Servlet的 - doGet()方法。- B. 先调用Servlet的 - service()方法,再由该方法决定调用- doGet()方法。- C. 先调用Servlet的 - init()方法,然后直接调用- doGet()方法。- D. 先调用Servlet的 - service()方法,再由该方法决定调用- doPost()方法。- 答案:B - 解析: 容器先调用 - service()方法,该方法根据请求方法类型(如GET)分发到对应的- doGet()方法。- init()仅在初始化阶段调用,与单个请求无关。
- 在Servlet中,如何获取客户端在表单中通过POST方法提交的参数值? - A. 使用 - HttpServletRequest对象的- getAttribute(String name)方法。- B. 使用 - HttpServletResponse对象的- getParameter(String name)方法。- C. 使用 - HttpServletRequest对象的- getParameter(String name)方法。- D. 使用 - ServletContext对象的- getInitParameter(String name)方法。- 答案:C - 解析: - getParameter()方法用于获取请求参数(如表单数据),而- getAttribute()用于获取请求范围内设置的属性。- HttpServletResponse和- ServletContext的方法不用于直接获取参数。
- 在Servlet中,设置响应状态码为404(未找到)的正确方法是? - A. - response.setStatus(404);- B. - response.setError(404);- C. - response.sendStatus(404);- D. - response.setStatus(HttpServletResponse.SC_NOT_FOUND);- 答案:D - 解析: 使用常量 - HttpServletResponse.SC_NOT_FOUND可提高代码可读性,其值即为404。- setStatus()是正确方法,但直接使用数字降低可维护性;- setError()和- sendStatus()不是标准方法。
- 下列关于“请求转发”(Forward)和“请求重定向”(Redirect)的区别,描述错误的是? - A. 转发在服务器内部完成,客户端感知不到;重定向会通知客户端重新发送请求到新地址。 - B. 转发后浏览器地址栏的URL不变;重定向后浏览器地址栏的URL会变为新地址。 - C. 转发可以共享同一个 - request对象和- response对象;重定向是两个完全独立的请求。- D. 转发可以跳转到其他应用的资源;重定向只能跳转到同一应用内的资源。 - 答案:D - 解析: 转发仅限于同一应用内,而重定向可以跳转到其他应用或外部URL。其他选项正确描述了转发与重定向的核心区别。 
- 在Servlet中,用于设置响应内容类型(MIME类型)和字符编码的方法是? - A. - response.setHeader("Content-Type", "text/html;charset=UTF-8");- B. - response.setContentType("text/html;charset=UTF-8");- C. - response.setEncoding("UTF-8");- D. - response.setMimeType("text/html");- 答案:B - 解析: - setContentType()方法可同时设置MIME类型和字符编码。- setHeader()也可实现,但更繁琐;- setEncoding()和- setMimeType()不是标准方法。
- 在Servlet中,获取一个用于向客户端输出文本的 - PrintWriter对象的正确方法是?- A. - response.getPrintWriter();- B. - response.getWriter();- C. - response.getOutputStream();- D. - response.getOutputWriter();- 答案:B - 解析: - getWriter()返回- PrintWriter对象,用于输出文本数据;- getOutputStream()用于输出二进制数据。其他方法不存在。
JSP与Servlet的关系(第13-16题)
- 关于JSP和Servlet的关系,以下描述最准确的是? - A. JSP是Servlet的替代技术,有了JSP就不再需要使用Servlet。 - B. JSP最终会被Web容器编译成一个Servlet类来执行。 - C. Servlet是用于处理业务逻辑的,而JSP是用于连接数据库的。 - D. JSP和Servlet是两种完全无关的Web技术。 - 答案:B - 解析: JSP在运行时被容器编译为Servlet,两者本质相同。JSP侧重于视图展示,Servlet侧重于控制逻辑,二者在MVC中协作而非替代。 
- 在MVC设计模式中,JSP和Servlet通常分别扮演什么角色? - A. JSP作为控制器(Controller),Servlet作为模型(Model)。 - B. JSP作为模型(Model),Servlet作为视图(View)。 - C. JSP作为视图(View),Servlet作为控制器(Controller)。 - D. JSP作为控制器(Controller),Servlet作为视图(View)。 - 答案:C - 解析: 在经典MVC中,JSP负责视图渲染,Servlet作为控制器接收请求并调用模型。模型通常由JavaBean或EJB等组件承担。 
- JSP技术相对于在Servlet中直接输出HTML代码的优势主要在于? - A. JSP拥有更强大的计算性能。 - B. JSP更容易编写和呈现复杂的动态网页内容,实现了表示逻辑与业务逻辑的分离。 - C. JSP可以直接操作数据库,而Servlet不能。 - D. JSP不能使用Java代码,因此更安全。 - 答案:B - 解析: JSP通过标签和脚本简化了HTML混合动态内容的开发,使界面设计更直观。性能上JSP最终转化为Servlet,无本质差异;两者均可操作数据库,但非核心优势。 
- 在JSP页面中,通常使用哪个内置对象来访问由Servlet控制器设置并传递过来的属性? - A. - pageContext对象- B. - request对象- C. - session对象- D. - application对象- 答案:B - 解析: 控制器通过 - request.setAttribute()设置的属性,在JSP中通过- request.getAttribute()获取。- session和- application分别用于会话和应用全局数据,- pageContext限于当前页面。
MVC设计模式(第17-23题)
- MVC设计模式中的三个核心组件分别是? - A. Model, View, Controller - B. Main, Variable, Constant - C. Manager, Viewer, Coordinator - D. Module, Vision, Core - 答案:A - 解析: MVC即Model(模型)、View(视图)、Controller(控制器)的缩写,是软件设计的经典模式。 
- 在MVC模式中,模型(Model)的主要职责是? - A. 接收用户输入并控制请求流程。 - B. 封装应用程序的数据和业务逻辑。 - C. 将模型的数据以可视化的形式呈现给用户。 - D. 管理Web应用的配置信息。 - 答案:B - 解析: 模型负责数据持久化、业务规则和状态管理。视图负责展示(选项C),控制器负责流程控制(选项A)。 
- 在MVC模式中,控制器(Controller)的主要职责是? - A. 负责数据的持久化存储。 - B. 负责用户界面的渲染和展示。 - C. 作为模型和视图之间的桥梁,接收用户请求,调用模型处理,并选择视图进行响应。 - D. 定义网页的样式和布局。 - 答案:C - 解析: 控制器不直接处理数据或界面,而是协调模型和视图的交互。选项A是模型职责,选项B和D是视图职责。 
- 下列关于MVC模式优点的描述,哪一项是错误的? - A. 提高了代码的可维护性,修改界面不影响业务逻辑。 - B. 有利于组件重用,同一个模型可以被多个视图使用。 - C. 降低了代码的耦合度,使得模型、视图、控制器可以独立开发和测试。 - D. 减少了系统的文件数量,使得项目结构更简单,适合所有规模的应用程序。 - 答案:D - 解析: MVC通过分离关注点提高可维护性,但会增加文件数量和结构复杂度,因此可能不适合小型简单应用。 
- 在Java Web开发中,通常使用什么技术组合来实现经典的MVC模式? - A. JSP作为View,Servlet作为Controller,JavaBean或EJB等作为Model。 - B. HTML作为View,JavaScript作为Controller,JDBC作为Model。 - C. Servlet同时担任View和Controller,JSP作为Model。 - D. JSP同时担任View和Model,Filter作为Controller。 - 答案:A - 解析: 这是Java Web中MVC的典型实现:Servlet处理控制逻辑,JSP负责视图渲染,JavaBean或EJB封装业务模型。 
- MVC模式强调的“分离关注点”主要指的是? - A. 将前端开发和后端开发人员的工作地点分开。 - B. 将应用程序的数据存取、用户界面和控制逻辑分离到不同的组件中。 - C. 将测试环境和生产环境完全隔离。 - D. 将不同的功能模块部署在不同的服务器上。 - 答案:B - 解析: 分离关注点是MVC的核心思想,通过模型、视图、控制器的分离,使各组件职责清晰,降低耦合。 
- 在MVC架构中,当模型(Model)的数据发生变化时,如何通知视图(View)更新? - A. 模型直接调用视图的更新方法。 - B. 通过控制器(Controller)手动调用视图的更新方法。 - C. 通常使用观察者模式(Observer Pattern),模型维护一个观察者列表,数据变化时通知所有注册的视图。 - D. 视图需要定期轮询模型的数据状态。 - 答案:C - 解析: 观察者模式是MVC中模型通知视图的常见机制,模型作为被观察者,视图作为观察者,实现松耦合通信。 
MVVM模式与Spring框架(第24-30题)
- MVVM模式主要应用于以下哪种开发场景? - A. 后端服务接口设计 - B. 富客户端或单页面应用(SPA)的前端开发 - C. 数据库设计与优化 - D. 服务器端负载均衡配置 - 答案:B - 解析: MVVM(Model-View-ViewModel)常见于前端框架(如Angular、Vue.js),通过数据绑定简化UI逻辑,适合动态交互丰富的SPA(基于常识补充)。 
- 在MVVM模式中,ViewModel的核心作用是? - A. 直接操作DOM元素,更新页面样式。 - B. 封装视图的状态和行为,实现视图(View)与模型(Model)的松耦合,通过数据绑定与视图自动同步。 - C. 定义持久化数据模型,与数据库进行交互。 - D. 负责路由分配和请求转发。 - 答案:B - 解析: ViewModel是MVVM的桥梁,它持有模型数据并暴露视图所需的属性和命令,通过绑定机制自动同步视图,无需直接操作DOM(基于常识补充)。 
- MVVM模式中的“数据绑定”是指? - A. 将数据库表结构绑定到Java对象。 - B. 将视图(View)中的UI控件与ViewModel中的属性建立关联,当属性值改变时,UI自动更新,反之亦然。 - C. 将URL路径绑定到对应的控制器方法。 - D. 将JavaScript函数绑定到HTML元素的事件上。 - 答案:B - 解析: 数据绑定是MVVM的关键特性,实现视图与ViewModel的双向同步,减少手动更新UI的代码(基于常识补充)。 
- 与MVC模式相比,MVVM模式的一个显著优势是? - A. ViewModel替代了Controller,简化了层级结构。 - B. 通过数据绑定大大减少了视图和模型之间的胶水代码,使开发人员更专注于业务逻辑。 - C. MVVM模式只能用于后端开发,而MVC用于前端开发。 - D. MVVM模式完全不需要控制器概念。 - 答案:B - 解析: MVVM通过数据绑定自动化视图更新,降低了视图与模型的直接依赖,提高了开发效率。选项A和D不准确,ViewModel并非简单替代Controller;选项C错误,MVVM主要用于前端(基于常识补充)。 
- Spring框架最核心的两个概念是? - A. 依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP) - B. 模型(Model)和视图(View) - C. 控制反转(Inversion of Control, IoC)和模型-视图-视图模型(Model-View-ViewModel) - D. 服务(Service)和数据访问对象(DAO) - 答案:A - 解析: Spring的核心是IoC(通过DI实现)和AOP,前者管理对象依赖,后者解耦横切关注点(如日志、事务)(基于常识补充)。 
- 关于Spring框架中的控制反转(IoC)的理解,正确的是? - A. 程序员需要手动使用new关键字创建和管理对象之间的依赖关系。 - B. 将对象的创建和依赖关系的维护权从程序员手中转移到了Spring容器(IoC容器)。 - C. IoC容器会强制控制程序的执行流程。 - D. IoC是专门用于Web层开发的技术。 - 答案:B - 解析: IoC容器负责实例化对象并注入依赖,程序员只需定义依赖关系。选项A描述的是传统方式;选项C和D错误,IoC不控制执行流程且适用于全栈开发(基于常识补充)。 
- Spring Boot与Spring Framework的关系是? - A. Spring Boot是Spring Framework的替代品,未来将取代Spring Framework。 - B. Spring Boot是基于Spring Framework的一套快速开发脚手架,它简化了Spring应用的初始搭建和开发过程。 - C. Spring Framework是Spring Boot的一个模块。 - D. 两者没有直接关系,是不同公司开发的产品。 - 答案:B - 解析: Spring Boot通过自动配置、起步依赖等机制简化了Spring应用的开发,但其核心仍基于Spring Framework(基于常识补充)。 
