二、抽象类和接口异同
相同点:
- 、都不能直接实例化对象;
- 、都可以包含抽象方法,其子类必须重写这些抽象方法。
区别:
- 、一个类只能继承一个直接父类,却可以实现多个接口。
- 、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
- 、抽象类有构造函数,接口没有构造函数。
- 、抽象类可以有抽象方法、非抽象方法,接口只能有抽象方法或者静态、默认方法。
三、String、StringBuilder、StringBuffer的区别
- 、String是只读字符串,内容不可改变;其余两个对象可以直接修改。
- 、StringBuilder适用于单线程,StringBuffer适用于多线程
- 、StringBuilder效率最高,String效率最低。
四、数组和ArrayList、LinkedList、HashMap集合的区别
(1)、ArrayList和LinkedList的区别 (Collection集合)
- ArrayList底层是数组,LinkedList底层是链表实现。
- ArrayList查询快,LinkedList增删改快
- ArrayList内存不足时需要动态扩容,每次是原来的1.5倍,LinkedList不需要动态扩容
(2)、数组和ArrayList的区别 (ArrayList底层就是数组)
- 、Array可以包含基本数据类型和对象类型;ArrayList只能包含对象类型。
- 、Array大小是固定的,ArrayList的大小是动态变化的。
- 、对于基本数据类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
- 、ArrayList作为Array的增强版,提供了更多的方法和特性。
(3)、HashMap的特点 (ArrayList或LinkedList和HashMap的区别)
相比较LinkedList和ArrayList集合而言,它是双列集合,包含键值对关系
- 底层实现是链表数组
- 允许空键和空值,且键不允许重复
- 元素是无序的
五、final、finally、finalize的区别
被final修饰的类,不能作为父类而被子类继承,将变量或方法声明为final,可以保证它们被使用的过程中不被修改。
finally是在异常处理时提供finally块来执行任何清除操作。
finalize方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
第二部分:JSP动态网站开发 2道题
六、九大内置(隐式)对象概述 (最低标准:写出九大内置对象名称)
out:用于页面输出
request:得到用户请求信息
response:服务器向客户端的回应消息
session:用来保存用户的信息
application:所有用户的共享信息
config:服务器配置,可以取得初始化参数
page:指当前页面转换后的Servlet类的实例
pageContext:JSP的页面容器
exception:表示JSP页面所发生的异常,在错误页中才起作用
- session、cookie与application的区别
session和application的区别 (作用域对象)
- 、session是基于用户的,application是基于全局的、跨用户的。
- 、session从会话连接开始,生命周期开始。application是在web工程启动,生命周期开始,直到web容器关闭。
session与cookie的区别
(1)、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
(2)、由于可以通过分析存放在本地的cookie 进行 cookie 欺骗,考虑到安全,应当使用 session。
(3)、session 会比较占用服务器内存,考虑到减轻服务器性能方面,应当使用 cookie。
(4)、cookie 中只能存储文本类型,session 中能存储 Object 类型。
八、Servlet页面跳转方式有哪些,并简述它们的区别(至少三点)
Servlet页面跳转方式有两种,分别是:重定向方式、请求转发方式。
区别:
- 、重定向方式页面的路径是相对路径,请求转发方式页面的路径是绝对路径;
- 、重定向方式不一定局限于web应用中,请求转发方式只能跳转到本web应用中的页面上;
- 、重定向方式跳转后浏览器地址发生变化,请求转发方式跳转后地址栏不会发生变化;
- 、重定向方式传值有两种方法:url中带参数,session;请求转发方式传值有三种方法:url中带参数,session,request.setAttribute()。
九、简述Servlet的生命周期
servlet的生命周期分为四个阶段:
(1)、实例化
(2)、初始化
(3)、处理请求服务
(4)、对象销毁
过滤器的生命周期
过滤器的生命周期分为四个阶段:
(1)、实例化
(2)、初始化
(3)、过滤
(4)、销毁
Bean的生命周期
Bean的生命周期分为四个阶段:
(1)、实例化
(2)、属性设置
(3)、初始化
(4)、销毁
第三部分:框架篇 2道题
十、Spring依赖注入的方式
(1)、构造器注入
(2)、setter方法注入
(3)、工厂注入
(4)、注解注入
十一、使用Spring框架的优缺点
优点:
(1)、所有框架几乎都可以和Spring整合在一起使用
(2)、避免关键字new造成的耦合问题
(3)、不需要进行明确的引用关系传递,直接通过配置完成
(4)、本身就是一个工厂,不需要再编写工厂类了
缺点:
(1)、Spring基于大量的xml配置文件,花费大量时间在配置;
(2)、Spring内容太庞大,打断点查看会出现十几二十层代码,阅览性不强
Spring MVC的优点★★★
(1)、它是基于组件技术的,并且和Spring 提供的其他基础结构紧密集成
(2)、不依赖于Servlet API
(3)、可以任意使用各种视图技术,而不仅仅局限于JSP
(4)、支持各种请求资源的映射策略
(5)、易于扩展
十二、Spring常用注解
命题点:
(1)、@Component, @Controller, @Repository, @Service 有何区别?
答:@Component, 就相当于bean标签,创建当前类对象存入spring的ioc容器
@Controller,作用于表现层(spring-mvc的注解)
@Service,作用于业务逻辑层
@Repository,作用于持久层
(2)、@Autowired 注解有什么作用?@Qualifier 注解有什么作用?
答:@Autowired作用是自动按照类型注入数据;@Qualifier 作用是在自动按照类型注入的基础之上,再按照bean的id注入数据
(3)、@Autowired和@Resource之间的区别
答:@Autowired作用是自动按照类型注入数据; @Resource作用是直接按照Bean的id注入数据
Spring MVC 常用注解
(1)、@SessionAttributes即将值放到session作用域中,写在类上面。
(2)、@PathVariable实现Restful的URL参数赋值
(3)、@RequestBody是获取请求参数的全部内容,包括key和value
(4)、@ResponseBody把响应结果转成json输出
(5)、@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上
Spring MVC注解中的@Controller和@RestController的区别
(1)、使用@Controller 注解
在对应的方法上,视图解析器可以解析返回jsp,html页面,并且跳转到相应页面。
若返回json等内容到页面,则需要加@ResponseBody注解
(2)、@RestController注解
相当于@Controller+@ResponseBody两个注解的结合;但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
十三、Spring数据库事务管理
Spring的事务机制包括声明式事务和编程式事务。
编程式事务管理:比较灵活,但是代码量大,存在重复的代码比较多,失去了AOP的意义。
声明式事务管理:
(1)、不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解这种方式,没有侵入性
(2)、声明式事务的最细粒度作用于方法上
十四、Spring MVC工作原理 、执行流程
(1)、客户端发送请求到前端控制器
(2)、前端控制器查询处理器映射,找到处理请求的Controller
(3)、Controller 调用业务逻辑后,返回ModelAndView
(4)、前端控制器查询ModelAndView,找到指定视图
(5)、视图将结果返回到客户端
十五、Spring MVC的主要组件
(1)、前端控制器
(2)、处理器映射器
(3)、处理器适配器
(4)、处理器
(5)、视图解析器
(6)、视图