java概念面试突击Word文档下载推荐.docx
《java概念面试突击Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java概念面试突击Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
floatMax:
floatMin”是什么含义
三元运算符,当?
前条件为真时返回?
后内容,当条件为假时返回:
后内容
上述表达式如果floatMax大于floatMin则返回floatMax的值,反之,返回floatMin的值
10、请说明在哪些地方可以使用break语句
循环中和switch中
11、请说明下列static块的含义
static{
courses=newSWCCourse[7];
courses[0]=newSWCCourse();
courses[1]=newSWCCourse();
courses[2]=newSWCCourse();
courses[3]=newSWCCourse();
courses[4]=newSWCCourse();
courses[5]=newSWCCourse();
courses[6]=newSWCCourse();
}
当类加载后即创建一个包含7个元素的对象数组,并为数组的每一个对象都实例化了
12、请解释try-catch-finally语法结构的执行逻辑
先执行try块,如果try块没有问题,则执行finally块;
如果try中引发异常,则执行catch块,再执行finally块;
finally块执行完毕后程序继续向下运行
13、请解释进程与线程的差别是什么
每启动一个程序,操作系统都会为其单独分配一个地址空间,即开启一个进程;
每一个进程由n多个线程组成的,多个线程共享同一个进程,没有独立的地址空间
14、请解释下列代码的执行逻辑是什么
switch(con){
case1:
System.out.println(“ONE”);
break;
case2:
case3:
System.out.println(“TWO”);
case10:
System.out.println(“THREE”);
return;
default:
System.out.println(“OUT”);
输入1,则输出ONE;
输入2或3,都输出TWO和THREE;
输入10,输出THREE;
输入其他数字,则输出OUT
15、Struts中需要继承哪个类处理客户请求,需要继承哪个类来接收用户输入的数据,并写出这两个类中需要实现的方法
Struts1Action类处理客户请求,ActionForm类接收用户输入
Action实现execute方法,ActionForm实现reset和validate方法
16、根据自己的理解,简述Hibernate的执行原理
加载hibernate.cfx.xml文件;
得到SessionFactory;
打开Session;
开启事务;
执行增删改查操作;
提交或回滚事务;
关闭Session和SessionFactory
17、分析Hibernate中,HQL和通用SQL的区别
HQL操作的类、SQL操作的是表
18、根据自己的理解,分别介绍一个SpringIoc和SpringAop
SpringIoc控制反转,只当一个依赖与另一个类时,依赖关系不由代码实现,而是通过配置文件在运行时注入
SpringAOP面向切面编程,将业务逻辑和公共代码分来编写,在配置文件中通过代理将公共代码切入到业务逻辑中区
19、以前使用过什么版本管理工具/配置工具
SVN
20、执行Checkin(VSS/ClearCase)commit(CVS)命令的目的
Checkin/Commit是将编写的客户端代码提交到服务器的版本管理器上
Checkout/update是将版本管理服务器的代码更新到本地客户端中
web开发
(1)请简要阐述servlet生命周期中的几个重要方法
答:
(1)加载和实例化
(2)初始化(3)请求处理(4)服务终止
(2)如何实现servlet的单线程模式
答:
<
%@pageisThreadSafe=”false”%>
(3)XML文档定义有几种形式,它们有何本质区别,解析XML文档有哪几种方式
①两种形式dtdschema;
②本质区别:
schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)
③解析XML文档有DOM,SAX,STAX等方式
2、java基础
(4)请说明hashMap和hashTable的区别,如何将hashMap变为线程同步
①HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
②.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
③.HashTable有一个contains(Objectvalue),功能和containsValue(Objectvalue)功能一样
④.HashTable使用Enumeration,HashMap使用Iterator。
⑤HashTable中hash数组默认大小是11,增加的方式是old*2+1。
HashMap中hash数组的默认大小是16,而且一定是2的指数。
⑥哈希值的使用不同,HashTable直接使用对象的hashCode
(5)请说明反射机制,反射机制的包以及核心类是什么?
反射机制的包是java.lang.reflect
核心类:
Constructor提供关于类的单个构造方法的信息以及对它的访问权限。
Field提供有关类或接口的单个字段的信息,以及对它的动态访问权限。
Method提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。
Modifier类提供了static方法和常量,对类和成员访问修饰符进行解码。
Proxy提供用于创建动态代理类和实例的静态方法,它还是由这些方法创建的所有动态代理类的超类。
(6)public、portected、private以及不写时的区别
如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。
当前类
同一package
子孙类
其他包
public
√
protected
×
friendly
private
3、开源框架
(7)阐述SSH2基本流程
客户端请求-->
web.xml的filter(applicationContext.xml实例化sping容器)-->
struts.xml-->
对应的action(由sping实例action)-->
调用service层(spring注入)-->
调用dao层(spring注入)---与数据库进行交互---->
返回dao层--->
返回service层--->
返回action--->
得到result---->
客户端接收
(8)描述spring的事务机制,如果知道可以说明实现原理
Spring的事务管理机制实现的原理,就是通过这样一个动态代理对所有需要事务管理的Bean进行加载,并根据配置在invoke方法中对当前调用的方法名进行判定,并在method.invoke方法前后为其加上合适的事务管理代码,这样就实现了Spring式的事务管理
(9)myBatis与Hibernate区别
mybatis是把sql语句与java代码分离了...sql语句在xml文件配置的...
hibernate是ORM框架,它对jdbc进行了封装,在分层结构中处于持久化层,它能建立面向对象的域模型和关系数据模型之间的映射.它大大简化了dao层的编码工作
(10)使用struts完成一个login处理;
参数如何接受?
view层的校验如何做?
业务检验如何做?
阐述处理流程(面试口述)
在action类中提供私有属性,并提供get,set方法(自己杜撰的)
DB数据库
(11)说说你对索引的认识对索引的认识、
索引是对数据库表中一列或多列的值进行排序的一种结构
(12)有一个数据库people,表有字段name,age,address三个属性一个数据库people,表有字段name,age,address三个属性(注:
没有主键,现在如果表中有重复的数据,请删除重复只留下其中的一条,重复的定义就是两条记录的name,age,address值都一样)
1.CREATETEMPORARYTABLEtmp_tableselect*frompeoplegroupbyname,age,addresshavingCOUNT(DISTINCTname)=1;
deletefrompeople;
insertintopeopleselect*fromtmp_table;
T表:
(字段:
ID,NAME,ADDRESS,PHONE,LOGDATE)
E表:
NAME,ADDRESS,PHONE)
(13)将表T中的字段LOGDATE中为2001-02-11的数据更新为2003-01-01,请写出应的SQL语句、(该字段类型为日期类型)
updateTsetlogdate=to_date('
2003-01-01'
'
YYYY-MM-DD'
)
WHERELOGDATE=TO_DATE('
2001-02-11'
);
(14)请写出将T表中第3~5行数据列出来的SQL语句
SELECT*
FROM(SELECTROWNUMASNO,T1.*FROMTT1)
WHERENOBETWEEN3AND5;
(15)请写出将表T中name存在重复的记录都列出来的SQL语句(按name排序)
SELECTT1.*FROMTT1WHERE1=1AND1<
(SELECTCOUNT(*)FROMTT2WHERET2.ID=T1.ID)ORDERBYT1.NAME;
1.oracle数据库的数据类型有哪些?
答:
Integer,varchar2,double,date,varchar,number,char,clob,blob
2.publicclassA{
inti=1;
intj=i++;
if(i>
++j&
&
i++==j){
i+=j;
System.out.println(i);
}
}
答:
不满足条件不会进入if循环,i不输出任何东西
3.Stringb="
asdfgh"
lastIndexOf("
df"
返回2
4.abstract和Inteface的区别:
(1)inteface需要实现,要用implements,而abstract需要继承,要用extends.
(2)一个类可以实现多个Inteface,但一个类只能继承一个abstract。
(3)Interface中的每一个方法都是抽象方法,都只是声明的没有方法体,实现类
必须要实现。
而abstract的子类可以有选择地实现。
5.override和overload的区别:
override(重写)
7、方法名、参数、返回值相同。
8、子类方法不能缩小父类方法的访问权限
9、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
10、存在于父类和子类之间
11、方法被定义为final不能被重写
Overload(重载)
3.参数类型、个数、顺序至少有一个不相同。
4.不能重载只有返回值不同的方法名。
5.存在于父类和子类、同类中
6.可以作用在switch()上的数据类型有哪些?
intString
7.StringBuffer与String的区别:
String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
String是final类,即不能被继承。
8.StringBuffer与StringBuilder的区别:
(1)在值运行速度方面的比较:
StringBuilder>
StringBuffer
(2)StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的的,不像String一样创建一些对象进行操作,所有速度就快了。
(3)StringBuilder:
线程非安全的
SringBuffer:
线程是安全的
1.11.finalfinallyfinalize的区别:
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供finally块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
finalize—方法名。
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在Object类中定义的,因此所有的类都继承了它。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
2.error和exception的区别是什么?
error表示恢复不是不可能但很困难的情况下的一种严重问题。
比如说内存溢出。
不可能指望程序能处理这样的情况。
exception表示一种设计或实现问题。
也就是说,它表示如果程序运行正常,从不会发生的情况。
11.启动一个线程的方法是run()还是start()?
启动线程肯定要用start()方法
3.ArrayList和Vector的区别:
Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间
ArrayList和Vector在从指定位置取得元素,从容器的末尾增加和删除元素都非常的有效,所有的这些操作都能在一个常数级的时间(O
(1))内完成。
但是从一个其他的位置增加和删除一个元素就显得颇为费时,差不多需要的时间为O(n-i),这里的n代表元素个数,i代表要增加和删除的元素所在的位置。
这些操作需花费更多的时间,因为你需要挨个移动i和更高位置的元素。
那么,以上这些到底说明了什么呢?
13.HashMap和HashTable的区别:
hastmap是一个接口是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。
HashMap允许nullkey和nullvalue,而hashtable不允许。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
14.垃圾回收器的基本原理是什么?
垃圾回收器可以马上回收内存吗?
有什么办法主动通知虚拟机进行垃圾回收?
基本原理就是虚拟机每隔一段时间就会运行一次垃圾回收或是在虚拟机认为需要的时候。
主动调用是System.gc()。
垃圾回收器运行了当然会收回内在。
但悲剧的是,垃圾回收是任何程序员都无法自己控制的,也就是说即使调用了System.gc(),也只是通知虚拟机要回收垃圾,至于虚拟机什么时候运行回收器就不知道了。
15.写一个Singleton出来。
答:
publicclassSingleTon{
privateSingleTon(){
}
//实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间
privatefinalstaticSingleToninstance=newSingleTon();
publicstaticSingleTongetInstance(){
returninstance;
6.servlet的生命周期是:
3个阶段:
初始化阶段、运行阶段、销毁阶段。
17.forward和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,
然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,
一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
18.jsp有哪些内置对象?
作用分别是什么?
分别有什么方法?
JSP共有以下9个内置的对象:
request用户端请求,此请求会包含来自GET/POST请求的参数
response网页传回用户端的回应
pageContext网页的属性是在这里管理
session与请求有关的会话期
applicationservlet正在执行的内容
out用来传送回应的输出
configservlet的构架部件
pageJSP网页本身
exception针对错误网页,未捕捉的例外
19.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
JSP编译后是"
类servlet"
。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
20.UML是什么?
用来干什么?
UnifiedModelingLanguage
统一建模语言
程序设计的时候用来画类图,时序图,等等
21.Struts2SpringHibernate理解或是工作原理这方面的知识
struts2侧重于控制器功能,当客户端发送一个地址请求,Struts(通过配置文件)根据请求代码做出反映,并进行页面调用或转发。
hibernate框架主要是负责连接数据库,把每个数据表转化为一个类,表中的每行数据相当于类的一个对象,hibernate通过对象的方式进行读取操作。
spring是由“控制反转”和”切面编程”这些设计模式开发出来的。
spring包有许多类和方法,有像hibernate那样操作底层数据库功能的方法,有可以操作复杂的业务操作,这要看调用它什么样的接口和方法。
由于它特殊的设计模式,使得它可以灵活地与其它框架整合,主要是通过配置文件的方式来完成。
spring和hibernate整合在实际上替代了hibernate,因为它对hibernate的方法进行了包装。
22.设计模式有多少种说出你了解的设计模式和你知道的实际模式
ABSTRACTFACTORY抽象工厂
BUILDER生成器
FACTORYMETHOD工厂方法
ROTOTYPE原型
SINGLETON单件
ADAPTER适配器
BRIDGE桥接
COMPOSITE组成
DECORATOR装饰
FACADE外观
FLYWEIGHT享元
PROXY代理
CHAINOFRESPONSIBILITY职责链
COMMAND命令
23.Hibernate对象的三大状态
(1)瞬时
(2)持久
(3)游离
24.IsIteratoraclassorIntefacewhatisitsuse?
(迭代器是一个类还是一个接口?
它是如何使用的?
是一个类
对已集合类中的任何一个实现类,都可以返回这样一个Iterator对象