java软件工程师最全面试题 下载本文

1. hibernate中离线查询去除重复项怎么加条件?

dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

2. http协议及端口,smtp协议及端口

http:超文本传输协议 端口 80 smtp:简单邮件传输协议 端口25

3. 编写程序,完成文件复制功能

4. Servlet创建过程及生命周期Servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制。

Servlet 的创建有两种方法。

1). 客户端请求对应的 Servlet 时,创建 Servlet 实例;大部分Servlet 都是这种 Servlet 。 2). 通过在web.xml 中设置load-on-startup来创建servlet实例,这种实例在Web 应用启动时,立即

创建Servlet 实例

Servlet 的运行都遵循如下生命周期: 1). 创建 Servlet 实例。

2). Web 容器调用 Servlet 的 init() 方法,对Servlet 进行初始化。 3). Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。根据客户端的请求方式通过Servlet

中service()方法去相应的doXXX()方法;

4). Web 容器销毁Servlet 时,调用 Servlet 的 destroy() 方法,通常在关闭Web容器之时销毁

Servlet。

5. 用sql语句分页: Mysql数据库:

SELECT TOP 页大小 * FROM table1 WHERE id NOT IN (

SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id

) ORDER BY id

Oracle数据库:

在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 截取ID的方法 select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between 5 and 7; 三层嵌套

SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;

6. list.map.set的存储特点?

List 以特定次序来持有元素,可有重复元素. Set 无法拥有重复元素,内部排序. Map 保存key-value值,value可多值

7. final,finally,finaliz的区别

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声 明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改 被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常 ,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 ;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

8. arraylist和vector的区别?

1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的 2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

9. 说出ArrayList,Vector, LinkedList的存储性能和特性?

1). ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是

插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始

2). ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加

和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢.

3). Vector使用了sychronized方法(线程安全),所以在性能上比ArrayList要差些. 4). LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以索引数据慢,是

插入数据时只需要记录前后项即可,所以插入的速度快.

10. HASHMAP,HASHTABLE区别

1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;

2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。

3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。

11. .描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session

中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择

Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性 session工作原理

(1)当有Session启动时,服务器生成一个唯一值,称为Session ID(好像是通过取进程ID的方式取得的)。 (2)然后,服务器开辟一块内存,对应于该Session ID。 (3)服务器再将该Session ID写入浏览器的cookie。

(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。

(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的Session ID。 (6)然后,服务检查该Session ID所对应的内存是否有效。 (7)如果有效,就读出内存中的值。 (8)如果无效,就建立新的Session。

12. String和stringbuffer进行字符串连接时的区别?

String对项内容是不可改变的,StringBuffer是可以改变的,且高效;

13. 什么叫项目?

用有限的资源、有限的时间为特定客户完成特定目标的一次性工作

14. .J2EE J是什么意思? 2是什么意思 EE是什么意思? Struts的拦截器你是怎么做的,是独立开发的,能

够独立开发的到。然后问有哪几种拦截? Java 2 Platform,Enterprise Edition

继承AbstractInterceptor类,覆盖intercept()方法

有struts自己的拦截器 如timer ,i18n,scop,servletconfig,token 还有自定义拦截器

15. 简单介绍下java?Spring的AOP,IOC的讲述 对struts2的了解,1,2的比较 xml的了解 J2ee的

webserviced的协议?

Spring AOP:代理机制 Spring提供的自动代理机制

Spring的IoC来实组件之间的依赖关系注入, 使控制层与业务实现分离,即客户通过 调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护

或升级困难。由Spring为DAO生成代理对象来为DAO添加事务服务,由IoC容器DAO的代理实例注入到业务组件中,业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类,使得持久层更换或修改不影响上层组件。

16. Collections,collection的区别 Collection是个java.util下的接口,它是各种集合结构的父接口。Collections是个java.util下的普通类,它包含有各种有关集合操作的静态方法。Collections是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作

17. 如何释放过度使用的undo表空间

1. 启动SQLPLUS,并用sys登陆到数据库。 2. 查找数据库的UNDO表空间名3. 确认UNDO表空间;SQL> select name from v$tablespace; 4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置; 5. 查

看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间 6. 检查UNDO Segment状态

18. 数据库里面游标,索引是怎么用的? 在oracle数据库中,用get 和load方法 这2个方法来查没有的数

据 那么分别会反馈什么样的结果? declare cur cursor keyset for

get返回null,load classnotfoundException

19. .在Oracle中数据库中的一个表中,这个表没有主键id也没有特定标示来查数据,怎么查?

rowid

20. 简述private、proteced、public、internal修饰符的访问权限

同一个类 同一个包 不同包的子类 不同包非子类

private *

default * *

protected * * *

public * * * *

21. 概述反射和序列化

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范Reflection APIs。

22. 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象

进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流

23. ORACLE中not和and和or优先级由高到低?

not and or

24. java 是如何进行异常处理的

Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理

25. struts2 必备包

commons-fileupload-1.2.1.jar freemarker-2.3.13.jar ognl-2.6.11.jar

struts2-core-2.1.6.jar