javaee期末复习选择题

第1单元

一、单选题
1.如下选项中不可以作为Java项目的Web服务器的是( )
A. Apache Tomcat
B. Nginx
C. Zeus
D.Maven

答案:D

2.为了在任何一个路径下都可以使用java及javac命令我们需要配置以下的哪一个环境变量( )
A.CLASSPATH
B.PATH
C.JAVA_HOME
D.TOMCAT_HOME
答案:B

3.在Maven的安装与配置过程中,我们必须需要配置以下的哪一个环境变量( )
A.MAVEN_HOME
B.CATALINA_HOME
C.JAVA_HOME
D.CLASSPATH
答案:C

4.以下的哪一个命令不可以作为Maven的运行测试命令( )
A.mvn -v
B. mvn help:system
C.mvn compile
D.maven javac
答案:D

5.以下哪一个不可以作为Java EE项目的开发工具( )
A.Eclipse
B.STS
C.IDEA
D.Redis
答案:D

二、讨论题:
1.如何使用Eclipse(STS)和IDEA工具来创建一个普通的Maven项目和Maven Web项目。
2.大家课后都能登录JDK、Eclipse、STS、IEAD、Tomcat、Maven、Spring的官网去看一看,学会通过官网来下载并查看相关的配置与说明文档。

第2单元

一、单选题
1.以下不是Spring框架的优点的是( )
A.非侵入式设计和方便程序的测试
B.支持AOP、IOC和DI
C.支持声明式事务管理和方便提高解耦、简化开发
D.方便集成各种优秀框架,同时也降低了使用难度

答案:C

2.在Spring框架的体系结构中,不属于核心容器部分功能内容的是( )
A.Spring-Beans
B.Spring-Core
C.Spring-Context
D.Spring-WebMVC
E.Spring-SpEL
答案:D

3.以下说法错误的是( )
A.Spring-core提供了Spring框架的基本组成部分,包括IoC、DI和AOP功能
B.Spring-beans提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象成为Bean
C.Spring-context建立在Core和Beans模块的基础之上,提供了一个框架式的对象访问方式
D.Spring-SpEL是Spring3.0后新增的模块,它提供了强大的表达式语言去支持运行时查询和操作对象图功能
答案:A
难易程度:难
4.以下的哪一个不是Spring框架常用的下载方式( )
A.官网下载
B. Gradle方式下载
C.Maven方式下载
D.Tomcat方式下载
答案:D

5.关于、标签中的属性介绍错误的是( )
A.id属性用来标识自定义类的一个唯一名称
B.class属性用来标识自定义类的完整路径(包名+类名)
C.property标签中的name属性的值必须和自定义类中的某个属性名称一致
D.property标签中的value属性是用来给对应的name属性赋值的
答案:C
难易程度:难
二、讨论题:
1.介绍Spring框架的体系结构及各模块的核心组成。
2.动手实践搭建开发Spring的入门应用(分别采用导包和Maven两种方式实现)。

第3单元

一、单选题
1.Sprig框架采用Java的( )机制进行依赖注入的
A.反射
B.多态
C.事件
D.继承
答案:A

2.不可以作为Spring DI的注入方式的是( )
A.基于属性的setter方法注入
B.基于构造方法的方式注入
C.基于XML配置或注解方式的注入
D.基于属性的getter方法注入
答案:D
难易程度:难

3.以下关于Spring IoC功能描述错误的是( )
A.Spring的IoC表示控制反转,是Spring框架提供的核心组件与功能之一
B.Spring的IoC功能是把对象的创建和生命周期的维护交给Spring容器来完成
C.对应Spring的IoC功能可以通过在applicationContext.xml配置文件中的< bean >标签配置来实现
D. 对应Spring的IoC功能可以通过在applicationContext.xml配置文件中的< property >标签配置来实现
答案:D
难易程度:难
4. 以下关于Spring DI功能描述错误的是( )
A.Spring的DI表示依赖注入,是Spring框架提供的核心组件与功能之一
B. Spring的DI功能可以通过在applicationContext.xml配置文件中的< bean >标签配置来实现
C. Spring的DI功能可以通过在applicationContext.xml配置文件中的< property >标签配置来实现
D. Spring的DI功能可以通过在属性前加入@Autowired或@Resource注解来实现依赖注入
答案:B
难易程度:中
二、填空题:
1.BeanFactory接口的实现类可以通过new ____________类和new________________类来实现。
答案:ClassPathXmlApplicationContext;FileSystemXmlApplicationContext

三、讨论题:
1.简述BeanFactory和ApplicationContext之间的关系。
2.简述ClassPathXmlApplicationContext和FileSystemXmlApplicationContext之间的关系及区别。

第4单元

一、单选题
1.Bean的默认作用域( )
A.singleton
B.prototype
C.request
D.session
E.application
答案:A

2.在下面代码片段中使用@Repository注解装配了Bean,则在Spring容器中 该Bean的id是( )
@Repository
public class UserDaoImpl implements UserDao{

}
A.UserDaoImpl
B.userDaoImpl
C.userDao
D.UserDao
答案:B
难易程度:中

3.下列哪一个选项不可以作为标签中的scope属性值( )
A.response
B.request
C.applicaion
D.session
答案:A
难易程度:中
4. 在< property>标签中哪一个属性是用来引用某个标签中的id属性值的( )
A.value
B. ref
C. class
D. name
答案:B
难易程度:中
5. 用来封装实体类中List或数组类型属性的依赖注入标签为( )
A.< collection>
B.< list>
C.< set>
D.< entry>
E.< map>
答案:B
6. 下列选项中哪一个不可以作为Bean的实例化( )
A.构造方法实例化
B.静态工厂实例化
C.实例工厂实例化
D.@Resource注解实例化
答案:D

二、填空题:
1.Bean的装配方式有两种,分别是________________和基于注解方式的装配。
答案:基于XML配置的装配
2.在基于注解的装配方式中,被标注在控制器类上的注解为_________,被标注在服务层类上的注解为_____________,被标注在持久层类上的注解为_____________。
答案:@Controller ;@Service ;@Repository
三、讨论题:
1.简述4个标注在类上的注解和两个标注在属性上的依赖注入注解的特点与使用规则。

第5单元

一、单选题

  1. 下列对于Spring AOP的增强方式(通知)描述错误的是( )
    A.Around:是环绕增强,在目标方法执行前后都会进行增强;
    B.After-throwing:是异常通知,有异常发生时增强;
    C.After-returing:是后置通知,在目标方法被执行后会被增强,如果目标方法在执行过程中抛出异常,则该增强也会被执行;
    D.After:是最终通知,类似于finally代码块,无论目标方法执行是否出现异常,该增强都会被执行
    答案: C
    难易程度:难

  2. 下列对于Spring AOP中的术语描述错误的是( )。
    A.切面(Aspect)是指封装横切到系统功能(例如事务处理)的类;
    B.代理(Proxy)是通知应用到目标对象之后被动态创建的对象;
    C.连接点(Joinpoint)是指程序运行中的一些时间点,例如方法的调用或异常抛出;
    D.通知(Advice)是由连接点到特定的切面的一段程序代码;

答案:D
难易程度:难

3.以下选项中关于动态代理的描述错误的是( )
A.JDK的动态代理要求目标业务类必须要实现接口
B.CGLIB的动态代理对目标业务类是否实现接口没有要求
C.AspectJ是一个基于Java语言的AOP框架,作为Spring AOP的代理实现
D.JDK的动态代理通过java.lang.reflect包下的ASM类来实现的
答案:D
难易程度:难
4. 以下注解中哪一个后置通知的注解( )
A.@AfterReturning
B. @AfterThrowing
C. @After
D. @Aspect
答案:C
难易程度:中

二、填空题:

  1. 使用Spring框架中的AOP编程实现,源文件SubwayStation.java代码如下:
    package cn.sjxy.spring_aop.xml.domain;
    /* * 火车站类*/
    public class RailStation {
    private String stationName;//站点名称
    //提供对应的getXXX/setXXX方法
    ……
    }
    package cn.sjxy.spring_aop.xml.exception;
    /自定义异常类/
    public class MyException extends RuntimeException {
    ……….
    }
    package cn.sjxy.spring_aop.xml.service;
    import cn.sjxy.spring_aop.xml.domain. RailStation ;
    import cn.sjxy.spring_aop.xml.exception.MyException;
    /高铁服务类/
    public class HighSpeedRailService {
    /
    • 功能:乘坐高铁
    • @param fromStation:表示起始站
    • @param toStation:表示终止站 /
      public void takeHighSpeedRail(RailStation fromStation , RailStation toStation){
      System.out.println(“---------------欢迎乘坐和谐号高铁-------------------”);
      try{
      System.out.println(“|从[”+fromStation.getStationName()+“]站上车,”);
      int n=10/2;
      }catch(Exception e){
      throw new MyException(“疑似烟雾报警器导致高铁暂时停运”);
      }
      System.out.println(“到[”+toStation.getStationName()+“]站下车|”);
      System.out.println(“-------------------------------------------”);
      }
      }
      package cn.sjxy.spring_aop.xml.aspect;
      import org.aspectj.lang.JoinPoint;
      import org.aspectj.lang.ProceedingJoinPoint;
      /
      * 定义安全检查的切面类,并在切面类中定义各类通知*/
      public class SecurityCheckAspect {
      //前置通知
      public void beforeAdvice(){
      System.out.println(“前置通知:1.大包小包一律过安检!!!”);
      }
      //环绕通知
      public void roundAdvice(ProceedingJoinPoint pjp) throws Throwable{
      System.out.println(“环绕通知:2.进站请刷身份证或高铁票”);
      //调用目标方法乘坐高铁
      pjp.proceed();
      System.out.println(“环绕通知:3.出站请刷身份证或高铁票”);
      }
      //异常通知
      public void afterThrowingAdvice(JoinPoint jp,Exception ex){
      System.out.println(“由于[”+ex.getMessage()+“]原因,导致高铁行程受到影响!”);
      }
      //后置通知
      public void afterReturningAdvice(){
      System.out.println(“后置通知:行程结束,欢迎下次再次动车组高铁列车!”);
      }
      //最终通知
      public void afterAdvice(){
      System.out.println(“最终通知:您的行程都被记录到高铁日志系统中了”);
      }
      }
      在applicationContext.xml的配置如下:



      < !-- 配置切面类 -->

      < !-- 配置切入点 -->

      < !-- 配置前置通知, -->

      < !-- 配置环绕通知 -->

      < !-- 配置后置通知 -->

      < !-- 配置异常通知 -->

      < /aop: ______________ >
      < /aop: ______________ >
      < /beans>
      答案:config ;aspect ;checkAspect ;pointcut ;execution(* cn.sjxy.spring.aop.xml.service.**(…)) ;myPointcut;before ;beforeAdvice ;around ;after-returning ;afterReturingAdvice ;after-throwing ;ex;aspect ;config

第6单元

一、单选题
1.Spring JdbcTemplate中用来执行create创建表或创建库的方法是( )
A.execute()
B.create()
C.update()
D.query()
答案:A

  1. Spring JdbcTemplate中用来执行表中记录删除的方法是( )
    A.drop()
    B.update()
    C.delete()
    D.alter()
    答案:B
    难易程度:中

  2. Spring JdbcTemplate中用来执行ALTER修改表结构的方法是( )
    A.alter()
    B.execute()
    C.update()
    D.drop()
    答案:B
    难易程度:中

  3. Spring JdbcTemplate中用来执行查询某一个对象的方法是( )
    A.queryForObject()
    B. queryForBean()
    C. queryForList()
    D. findForBean()
    答案:A
    难易程度:中

  4. Spring JdbcTemplate中用来执行查询多个实体对象的方法是( )
    A.queryForSet()
    B. queryForList()
    C. query()
    D. queryForMap()
    答案:C

  5. Spring JdbcTemplate中用来执行查询某一条记录中的某些列的方法是( )
    A.queryForObject()
    B. queryForList()
    C. query()
    D. queryForMap()
    答案:B

  6. Spring JdbcTemplate中用来执行查询多条记录中的某些列的方法是( )
    A.queryForSet()
    B. queryForList()
    C. query()
    D. queryForMap()
    答案:D

  7. Spring JdbcTemplate中用来执行表中记录修改的方法是( )
    A.set()
    B.update()
    C.alter()
    D.execute()
    答案:B

第7单元

一、单选题
1.以下选项中哪一个不可以作为事务的传播特性的值( )
A.REQUIRED
B.SUPPORTS
C.REQUIRED_NEW
D.NOT_REQUIRED
答案:D

  1. 以下选项中哪一个不属于事务的隔离级别( )
    A.read_uncommited
    B.read_commited
    C.repeatable
    D.serializable
    答案:C
    难易程度:中

  2. 在< tx:method>标签中哪一个属性是用来设置事务的隔离级别属性的( )
    A.isolation
    B.propagation
    C.read-only
    D.rollback-for
    答案:A
    难易程度:中

  3. 以下选项中哪一个不属于@Transactional注解中的属性( )
    A.rollbackFor
    B. propagation
    C. isolation
    D. only-read
    答案:D
    难易程度:中

  4. 以下选项中不属于事务特性的是( )
    A.原子性
    B.隔离性
    C.一致性
    D. 序列化
    答案:D

  5. 以下说法错误的是( )
    A.事务的隔离级别越高越好
    B. 脏读是由于读未提交的隔离级别导致的
    C.事务的隔离级别设置为read_commited不可以避免幻读情况
    D. @Transactional注解既可以被加在类上也可以被加在属性上
    答案:A

第8单元

一、单选题
1.以下选项中哪一个不属于MVC框架( )
A.Spring MVC
B.Struts2.x
C.MyBatis
D.Spring WebFlux
答案:C

  1. 关于SpringMVC框架中的控制器描述错误的是( )
    A.控制器类默认是单实例的
    B.控制器类默认是多实例的
    C.可以用@Controller来标注一个控制器类
    D.@RequestMapping注解也可以被标注在控制器类上
    答案:B
    难易程度:中

  2. 关于DispatcherServlet类的描述正确的是( )
    A.需要在web.xml文件中通过< servlet>标签来注册DispatcherServlet
    B.需要在applicationContext.xml文件中通过< servlet>标签来注册DispatcherServlet
    C.需要在applicationContext.xml文件中通过< bean>标签来注册DispatcherServlet
    D.需要在web.xml文件中通过< listener>标签来注册DispatcherServlet
    答案:A
    难易程度:中

  3. 关于视图解析器的描述错误的是( )
    A.需要在applicationContext.xml配置文件中通过< bean>标签来配置视图解析器
    B. 使用prefix配置物理视图所在的路径前缀
    C. 使用suffix配置物理视图的后缀
    D. 视图解析器InternalResourceViewResolver类在spring-context.jar包中
    答案:D
    难易程度:中

  4. 在基于SpringMVC框架开发配置中如果想要把所有的请求都交给前端控制来处理我们需要配置的映射路径为( )
    A.< url-pattern>/< /url-pattern>
    B. < url-pattern>/< /url-pattern>
    C. < url-pattern>/**< /url-pattern>
    D. < url-pattern>/
    .do< /url-pattern>
    答案:A

  5. 在web.xml配置文件中想让前端控制器类来显式的价值自定义的SpringMVC框架的核心配置文件我们需要配置以下哪一个初始化参数的名称变量( )
    A.config
    B.contextConfigLocation
    C.context
    D. locations
    答案:B
    二、填空题
    1.DispatcherServlet前端控制器类在_______________包中。
    答案:spring-webmvc.jar
    2.在context:component-scan标签中通过_____________属性来配置对自定义类所在的包进行扫描。
    答案:base-package

3.在springmvc.xml文件中使用_____________________标签来开启基于注解的处理器映射器和处理器适配器的解析器。
答案:< mvc:annotation-driven/>
4.在SpringMVC框架中用来映射控制器类对外访问路径的注解是_______________。
答案: @RequestMapping

8.9 MyBatis中 #{}和KaTeX parse error: Expected 'EOF', got '#' at position 12: {}的区别是什么? #̲{}是预编译处理,{}是字符串替换;
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理 时,就是把 {}时,就是把 时,就是把{}替换成变量的值;
使用#{}可以有效的防止SQL注入,提高系统安全性。

8.11简述MyBatis的单个参数、多个参数如何传递及如何取值。
MyBatis传递单个参数,如果是普通类型(String+8个基本)的,取值时在#{}中可以任意指定,如果是对象类型的,则在#{}中使用对象的属性名来取值
MyBatis传递多个参数,默认情况下,MyBatis会对多个参数进行封装Map,取值时在#{}可以使用0 1 2 … 或者是param1 param2…
MyBatis传递多个参数,建议使用命名参数,在Mapper接口的方法的形参前面使用
@Param() 来指定封装Map时用的key. 取值时在#{}中使用@Param指定的key

第9单元

一、单选题
1.在Spring MVC中如果想让一个自定义类成为一个控制类的话,应该使用以下的哪一个注解来进行标注( )
A.@WebServlet
B.@Controller
C.@WebController
D.@RequestMapping
答案:B

  1. 以下哪一个注解可以被标注在控制器类上用来映射对外的访问路径( )
    A.@RequestMapping
    B.@GetMapping
    C.@PostMapping
    D.@WebServlet
    答案:A
    难易程度:中

  2. 以下哪一个注解既可以被标注在类上也可以被标注在方法上( )
    A.@Autowired
    B.@RequestMapping
    C.@Controller
    D.@GetMapping
    答案:B
    难易程度:中

  3. 想要接收/delete/{id}请求路径中的id参数的值需要使用以下哪一个注解( )
    A.@RequestParam
    B. @RequestMapping
    C. @PathVariable
    D. @ModeAttribute
    答案:C
    难易程度:中

  4. 以下选项中哪一种类型不可以作为控制类中某个方法的返回值( )
    A.String
    B. Model
    C. ModelAndView
    D. ModelAttribute
    答案:D
    二、填空题
    1.在SpringMVC中,想让某个控制器类中的方法返回的是一个重定向请求,需要在返回的字符串中添加_______________前缀。
    答案:redirect:
    2.在SpringMVC中,想让某个控制器类中的方法返回的是一个请求转发请求,需要在返回的字符串中添加_______________前缀。
    答案:forward:

3.在基于Restful风格开发中用来映射修改操作请求路径映射的注解是___________。
答案:@PutMapping
4.在基于Restful风格开发中用来映射删除操作请求路径映射的注解是_______________。
答案: @DeleteMapping
5.在基于Restful风格开发中用来接收URL中的请求参数,如/user/10001,想要获取10001值的请求注解是_______________。
答案: @PathVariable

第16单元

一、单选题
1.以下哪一个选项不属于ORM框架技术( )
A.MyBatis
B.Redis
C.Hibernate
D.JPA
答案:B

  1. 下面关于MyBatis框架的描述错误的是( )
    A.MyBatis是一个基于Java的持久化框架,其3.0版本之前的名称为Ibatis;
    B.MyBatis是一个强大、方便、高效、全自动化的持久层映射的框架;
    C.MyBatis需要手动匹配POJO、SQL和映射关系;
    D.MyBatis是主流的Java持久化框架之一,它与Hibernate一样,是一种ORM框架;
    答案:B
    难易程度:中

  2. MyBatis有两种事务管理器类型,以下选项中正确的是( )
    A.JDBC和MANAGED
    B.JDBC和POOLED
    C.JDBC和UNPOOLED
    D.JDBC和JNDI
    答案:A
    难易程度:中

  3. 在XxxMapper.xml映射文件中,其根元素< mapper >标签中使用以下哪一个属性来指定所要映射接口类的完整路径( )
    A.class
    B. name
    C. namespace
    D. resource
    答案:C
    难易程度:中

  4. 在接口类UserMapper中,有一个抽象方法用来通过用户姓名和性别来模糊查询用户的信息,其方法声明为public List< User> findByNameAndGender(String name,Boolean gender),通常我们可以使用以下哪一个注解来精确的指定多个参数的名称。
    A.@Param
    B. @RequestParam
    C. @PathVariable
    D. @Value
    答案:A
    二、填空题
    1.在MyBatis基于注解方式的接口映射中如果需要做查询操作,则需要在接口对应的查询方法前使用_______________注解。
    答案:@Select
    2.在MyBatis基于注解方式的接口映射中如果需要做插入操作,则需要在接口对应的方法前使用_______________注解。
    答案:@Insert

3.在MyBatis基于注解方式的接口映射中如果需要做修改操作,则需要在接口对应的方法前使用_______________注解。
答案:@Update
4.在MyBatis基于注解方式的接口映射中如果需要做删除操作,则需要在接口对应的查询方法前使用_______________注解。
答案: @Delete
5.接口类中的抽象方法为 User findById(Stirng id),在在对应的UserMapper.xml的映射文件中,我们需要使用
< select id=”findById” resultType=”cn.sjxy.beans.User”>
Select * from tb_user where id=__________
< /select>
答案: #{id}

你可能感兴趣的:(javaee,java-ee)