1. 为什么要当心字符串连接性能?应如何处理?
(1)字符串连接操作符是把多个字符串合并为一个字符串的便利途径。但它不适合运用在大规模的场景中。为连接n个字符串而重复地使用连接操作符,需要n平方级的时间。这是由于字符串不可变而导致的结果。
(2)处理原则:不要使用字符串连接操作符来合并多个字符串,除非性能无关紧要。
具体方法有以下几种:
l 使用StringBuilder的append方法。
l 使用字符数组。
l 每次只处理一个字符串。
2. 什么是数据源(数据连接池)?为什么要使用它?目前常用的连接池有哪些?
(1)数据源会维护一个数据连接池。当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些连接保存在连接池中。当程序需要进行数据库访问时,无须重新获得数据库连接,而是从连接池中取出一个空闲的连接。当程序使用连接后,也无须关闭连接,而是将连接归还回连接池中。
(2)数据源可以提高数据库连接性能。
(3)C3P0、Proxool
3. 轻量级JavaEE架构一般分为哪几层、每层的作用各是什么?为什么要这么分?
(1)
l 领域对象层(Domain Object):此层由POJO(Plain Old Java Object)组成,是系统的领域对象,包含了各自所需实现的业务逻辑方法。
l 数据访问对象层(DAO):实现了对数据库的创建、查询、更新、删除(CRUD)等原子操作。
l 业务逻辑层:实现了系统所需的业务逻辑方法。
l 控制器层:用于拦截并处理用户请求,并调用业务逻辑层的方法,最后根据处理结果转发到不同的表现层组件。
l 表现层:负责收集用户请求,并显示处理结果。
(2)各层之间以松耦合的方式耦合在一起,而不是硬编码,这种分层方式是考虑到系统后期的维护和扩展。
4. Web服务器的运行机制是什么?(请分步描述)
l 启动单独线程。
l 使用I/O流读取用户请求数据。
l 从请求数据中解析参数。
l 处理用户请求。
l 生成响应数据。
l 使用I/O流向客户端发送请求数据。
5. servlet中的转发(forward)与重定向(redirect)的有什么不同?
转发(forward)
| 重定向(redirect)
|
执行forward后,依然是上一次请求。 | 执行redirect后,生成第二次请求。 |
forward的目标页面,可以访问原请求的请求参数。 | redirect的目标页面不能访问原请求的请求参数。 |
地址栏的请求URL地址不会改变。 | 地址栏中的请求URL改变。 |
6. 说出ArrayList,Vector, LinkedList 的存储性能和特性
ArrayList 和Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的
数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉
及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了
synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用
双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时
只需要记录本项的前后项即可,所以插入速度较快。
7. 运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常
操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛
出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
8. 什么是MVC?MVC的特点有哪些?
(1)Model(模型)、View(视图)、Controller(控制器)
(2)
l 多个视图可以对应一个模型。
l 模型返回的数据与显示逻辑分离。
l 应用被分割为三层,降低了各层之间的耦合,提供了应用的可扩展性。
l 控制层把不同的模型和不同的视图组合在一起,完成不同的请求。
9. Struts2的Action可通过哪些方式访问servlet API?
l 通过ActionContext类来访问。
l 通过实现ServletContextAware、ServletRequestAware、ServletResponseAware接口来访问。
l 使用ServletActionContext工具类来访问。
10. 什么是ORM?使用ORM的优势有哪些?
(1)ORM全称是Object/Relation Mapping,对象/关系数据库映射。
(2)
l 面向对象建模、操作。
l 多态、继承。
l 摒弃难以理解的过程。
l 简单易用,易理解。
11. 说说Hibernate中load方法与get方法的区别?save方法和persist方法之间的区别?
(1)
l save方法:
保存持久化对象时,该方法返回该持久化对象的标识属性值(即主键)。
该方法会立即将持久化对象的对应数据插入数据库。
该方法没有返回任何值。
保证当它在一个事务外部被调用时,并不立即转换为insert语句。
适用于长会话流程。
(2)
主要区别在于是否延迟加载。
l load方法:
不会立即访问数据库,当试图加载的记录不存在时,load方法返回一个未初始化的代理对象。
l get方法:
总是立即访问数据库。当试图加载的记录不存在时,直接返回null
12. Spring框架有哪些优点?
l 低侵入式设计,代码的污染极低。
l 独立于各种应用服务器。
l DI容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
l AOP支持将一些通用任务如安全、事务、日志进行集中式处理,从而提供了更好的复用。
l ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
l 高度开放性,开发者可以选用框架的部分或全部。
13. 什么是AJAX?它的优点有哪些?它的缺点有哪些?该如何应对?
(1)AJAX为“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。
(2)优点:
l 能在不更新整个页面的前提下维护数据。
l 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
(3)缺点及其应对方法(括号内为应对方法):
l 可能破坏浏览器的后退功能。(在用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。)
l 由于存在网络延迟,如果不给予用户明确的回应,没有恰当的预读数据,都会使用户感到厌烦。(使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。)
14. jQuery框架有哪些特点?
l 动态特效
l AJAX
l 通过插件来扩展
l 方便的工具(例如浏览器判断)
l 渐进增强
l 链式调用
l 多浏览器支持。