java工程师面试题大全公司笔试题你都能碰到几个Word文件下载.doc
- 文档编号:1451177
- 上传时间:2023-04-30
- 格式:DOC
- 页数:72
- 大小:556.50KB
java工程师面试题大全公司笔试题你都能碰到几个Word文件下载.doc
《java工程师面试题大全公司笔试题你都能碰到几个Word文件下载.doc》由会员分享,可在线阅读,更多相关《java工程师面试题大全公司笔试题你都能碰到几个Word文件下载.doc(72页珍藏版)》请在冰点文库上搜索。
table1WHERE
id
NOT
IN(
SELECT
页大小*(页数-1)
FROM
table1
ORDER
BY
id
)ORDER
Oracle数据库:
在ORACLE大数据量下的分页解决方法。
一般用截取ID方法,还有是三层嵌套方法。
截取ID的方法
select*fromempa,(selectempno,rownumasnumfromemp)bwherea.empno=b.empnoandb.numbetween5and7;
三层嵌套
SELECT*FROM(SELECTA.*,rownumrFROM(SELECT*FROMemp)AWHERErownum<
=7)BWHEREr>
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(SessionID).她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性
session工作原理
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。
(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。
12.String和stringbuffer进行字符串连接时的区别?
String对项内容是不可改变的,StringBuffer是可以改变的,且高效;
13.什么叫项目?
用有限的资源、有限的时间为特定客户完成特定目标的一次性工作
14..J2EEJ是什么意思?
2是什么意思EE是什么意思?
Struts的拦截器你是怎么做的,是独立开发的,能够独立开发的到。
然后问有哪几种拦截?
Java2Platform,EnterpriseEdition
继承AbstractInterceptor类,覆盖intercept()方法
有struts自己的拦截器如timer,i18n,scop,servletconfig,token
还有自定义拦截器
15.简单介绍下java?
Spring的AOP,IOC的讲述对struts2的了解,1,2的比较xml的了解J2ee的webserviced的协议?
SpringAOP:
代理机制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>
selectnamefromv$tablespace;
4.检查数据库UNDO表空间占用空间情况以及数据文件存放位置;
5.查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间6.检查UNDOSegment状态
18.数据库里面游标,索引是怎么用的?
在oracle数据库中,用get和load方法这2个方法来查没有的数据那么分别会反馈什么样的结果?
declarecurcursorkeysetfor
get返回null,loadclassnotfoundException
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优先级由高到低?
notandor
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
xwork-2.1.2.jar
26.dao是什么及作用
dao是数据访问对象DAO负责管理与数据源的连接来获取和储存其中的数据
27.ibatis中的#与$的区别
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select*fromtablewhereid=#id#,其中如果字段id为字符型,那么#id#表示的就是'
id'
类型,如果id为整型,那么#id#就是id类型。
select*fromtablewhereid=$id$,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成select*fromtablewhereid='
$id$'
28.struts2的实现原理
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:
SiteMeshPlugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2框架中继承的标签。
在这个过程中需要涉及到ActionMapper
29.简述spring的事务传播行为和隔离级别
spring的事务传播行为:
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
PROPAGATION_REQUIRED:
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。
这是最常见的选择。
PROPAGATION_SUPPORTS:
支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY:
使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW:
新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED:
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER:
以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED:
如果当前存在事务,则在嵌套事务内执行。
如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
Spring的隔离级别
1、Serializable:
最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLEREAD:
保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。
避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READCOMMITTED:
大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。
该级别适用于大多数系统。
4、ReadUncommitted:
保证了读取过程中不会读取到非法数据。
30.写一段把本地文件formfile拷贝到本地文件tofile的程序
publicclassChangeJtdToJava{
publicstaticvoidmain(String[]args){
Filedir=newFile("
f:
/jtd"
);
//得到d:
/jtd下的所有文件对象
File[]files=dir.listFiles();
for(Filefile:
files){
StringfileName=file.getName();
//得到文件名
intindex=fileName.indexOf("
."
//.的索引位置
StringfileName2=fileName.substring(0,index);
//不带后缀名的文件名
StringhouZui=fileName.substrinxg(index);
if(houZui.equals("
.jtd"
)){
//"
/java/"
+fileName2+"
.java"
//要移到的地方
file.renameTo(newFile("
));
}
}
}
}
31.写出删除表中重复记录的语句oracle
deletefrompeople
wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>
1)androwidnotin(selectmin(rowid)frompeoplegroupby
32.java类实现序列化的方法(二种)?
如在collection框架中,要实现什么样的接口
java.io.Serializable接口
Collection框架中实现比较要实现Comparable接口和Comparator接口
33.Struts2实现拦截器的原理?
实现原理:
Struts2拦截器是在访问某个Action或Action的某个方法、字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。
当请求struts2的action时,Struts2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
34.sleep()和wait()区别
sleep()方法:
线程主动放弃CPU,使得线程在指定的时间内进入阻塞状态,不能得到CPU时间,指定的时间一过,线程重新进入可执行状态。
典型地,sleep()被用在等待某个资源就绪的情形:
测试发现条件不满足后,让线程阻塞一段时间后重新测试,直到条件满足为止。
wait():
与notify()配套使用,wait()使得线程进入阻塞状态,它有两种形式,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,当指定时间参数时对应的notify()被调用或者超出指定时间时线程重新进入可执行状态,后者则必须对应的notify()被调用
35.Servlet的生命周期分为3个阶段:
?
和CGI的区别?
Servlet的生命周期主要由3个过程组成。
(1)init()方法:
服务器初始化servlet。
(2)service()方法:
初始化完毕,servlet对象调用该方法响应客户的请求。
(3)destroy()方法:
调用该方法消灭servlet对象。
其中,init()方法只在servlet第一次被请求加载的时候被调用一次,当有客户再请求servlet服务时,web服务器将启动一个新的线程,在该线程中,调用service方法响应客户的请求。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
36.forward与redirect的区别?
有哪些方式实现
1).<
jsp:
forward>
重定向后url地址栏地址不变还是原来的地址;
而response.sendRedirect()重定向后url地址栏地址显示的请求后的新地址。
2).<
重定向的时候可以保存回话信息,因此可以使用request来进行参数传递,在新页面可以使用request.getAttribute()来得到参数。
而response.sendRedirect()不支持此通过request进行参数传递。
它唯一的传值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 工程师 试题 大全 公司 笔试 碰到 几个