面试笔试题总结javaWord文档下载推荐.docx
《面试笔试题总结javaWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面试笔试题总结javaWord文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
多态:
实例化对象,一个类可以new多次,构造方法的重载重写也体现多态;
3、面向对象的过程
面向对象分析、面向对象设计、面向对象编程
4、java的八个基本数据类型和对应的包装类和每一种类型的长度
Byte、short、int、long、double、float、char、boolean
5、异常和错误区别?
运行时异常和非运行时异常(编译时异常)区别,说出几个你用过的异常?
如何捕获异常?
Throws和throw区别?
异常:
程序运行过程中产生的某些错误,程序人员通过修改程序可以修复的,程序员可以预知的错误;
错误:
表示系统级别的错误,例如系统崩溃,jvm内存溢出等;
无法预知并且修改程序也无法避免的;
运行时异常:
表示程序运行过程中产生的异常,可以不强制trycatch捕获或者不强制的throws,程序可以编译通过;
非运行时异常:
表示程序编译过程中就捕获的异常,需要强制trycatch或者throws抛出,程序运行时,一旦产生非运行时异常,程序无法编译通过;
通过trycatchfinallytry{表示放可能产生异常的程序}catch(可能产生的异常){如果符合该异常,此时执行该语句段,表示这里要处理该异常}finally{不论是否有异常都执行该语句段}
Throws:
在方法声明时使用,表示该方法可能产生的异常,谁调用该方法,谁捕获处理;
当前方法不处理不捕获
Throw:
表示抛出一个具体异常,使用在方法体中;
例如:
thrownew Exception(“异常消息”);
6、String和StringBuffer区别?
为什么用StringBuffer拼字符串?
String表示不可长度字符串,finally不可被继承的类;
StringBuffer:
表示可变长度字符串,通过append方法追加字符串,默认有16位缓冲区,
时能new实例化赋值,不能=号赋值;
使用StringBuffer拼接字符串以为StringBuffer长度可变,并且通过append方法追加字符串,节省内存:
“a”+”b”+”c”此时字符串池中有:
abcababc几个字符串;
而通过StringBuffer:
则字符串池中有:
abc和abc
7、线程和进程区别?
如何理解锁?
线程:
一段可执行的代码段;
多个线程共同完成一个任务;
进程:
一个可执行的应用程序;
解决死锁可以通过:
synchronized关键词,实现多个线程中不同方法,在同一时间内,只能有一个线程在执行;
其他线程等待,直到该线程释放资源;
8、Wait和sleep方法区别?
Wait方法是object类中的,sleep是Thread类中的
9、如何定义一个线程?
重写Thread类中的Run方法,或者实现Runnable接口中Run方法
10、Collection和Collections区别
Collection是集合接口,Collections是封装了操作集合方法的类;
11、Set和List区别
Set无序,不可以重复;
List有序,可以重复;
12、LinkedList和vector以及ArrayList区别
LinkedList:
链表实现,对该集合新增修改删除数据速度快,效率高,线程不安全;
Arraylist:
数组实现,对该集合操作时,从该集合中查询数据速度快,效率高,线程不安全;
Vector:
数组实现,线程安全,效率低;
13、HashMap和HashTable区别:
HasMap:
键值对可以为空;
线程不安全;
HashTable:
键值对不可以为空;
线程安全;
14、PreparedStatement和Statement区别:
前者使用预编译sql,效率高,安全,后者未采用预编译sql,效率低;
15、名词解释:
jdbc、JNDI、BI、VO、DAO、IOC、AOP、OOP、DI(依赖注入)、MVC、ORM(关系映射模型)、盒子模型、
JDBC:
java数据库链接;
java提供操作数据库的东西;
JNDI:
java命名目录接口;
BI:
商业智能;
VO:
值对象;
DAO:
数据访问对象也就是:
java访问数据库的第一层接口;
IOC:
控制翻转;
(Spring时候讲)
AOP:
面向切面编程(Spring讲)
OOP:
面向对象编程;
DI:
MVC:
是一种开发模式,M:
model模型层,Vview视图层CController控制层;
控制层主要负责模型层以及视图层数据交互;
ORM:
关系映射模型;
(Hibernate,Mybatis等都是ORM框架)
盒子模型:
css中的一种模型;
将页面元素认为是现实中盒子,他们都具有border边框
Content内容,padding(补白)内边距margin外边距等特点,这就是盒子模型;
16、接口和抽象类区别?
为什么用接口(弥补java单继承特点)?
为什么用抽象类(提取公共部分内容,达到代码复用目的和多态)?
接口:
是Interface,是一种特殊的抽象类,为了弥补java单继承的特点,接口可以继承多个接口,也可以实现多个类,声明的变量为常量,方法默认public省略abstract关键词;
使用时必须通过类重写里面所有抽象方法;
抽象类:
是abstract声明的类,可以有抽象方法,也可以有非抽象方法;
不能被实例化,只能通过子类继承重写里面所有抽象方法,通过实例化子类使用;
用抽象类可以提取公共部分,然后子类重写相关方法或者抽象方法,实现多态以及程序的复用;
接口目的就是为了弥补单继承缺点;
因为接口可以弥补多继承;
17、Break(退出整个循环)、continue(退出当前循环,只能用于循环或者switch语句)和return(退出整个方法体表示该方法有返回值)区别
18、Finally(异常语句块中的,表示有无异常都执行该方法体)、final(声明变量为常量,声明类不可被继承)、finalize(垃圾回收机制中自动调用的方法)区别
19、如何获取随机小数?
如何获取随机整数?
Math.random()Random.类
20、io流的种类?
哪里用到了io流,?
什么时候用字节流,什么时候用字符流?
说一下你用过的流有哪些?
(1)字节流和字符流
(2)文件上传下载以及解析xml时加载文件等,还有某些框架底层用到了
(3)读取文件内容,即文本,使用字符流,其他情况都是用字节流
(4)字节流:
InputStram,OutputStreamFileInputStram、FileOutputStream
BufferedInputStream,。
BufferedOutputStream
字符流:
Reader、Writer、BufferedReader、BufferedWriter、FileReader、FileWriter、
InputStreamReader、OutputStreamWriter
21、内部类种类?
匿名内部类、非静态内部类、静态内部类、局部内部类
22、list、set如何重新排序?
如何让set有序?
重写Comparable以及Comparator中的comparaTo以及compare方法
23、重写以及重载区别?
重写发生在继承中,子类继承父类,要求子类方法与父类方法名,参数个数,返回值必须相同;
重载是发生在当前类中,方法名相同,参数个数不同,类型不同即可;
24、Static用法:
static表示声明的变量或者方法只能被实例化一次,并且被一个对象的不同实例共享,类名可直接打点调用;
25、super和this区别?
Super调用父类对象,使用时如果在子类构造方法中,必须写第一行,不能用在static中;
This表示当前类对象,不能用static中;
26、Jsp的两中包含:
<
jsp:
include>
动态包含,被包含页面不独立存在,先包含进来在编译;
%@include>
静态包含,被包含的页面独立存在,先编译完毕后再包含进来;
27、jsp的就个内置对象:
out、page、request、session、application、config、pageContext、exception、response
四个作用域:
page(最小)、request、session、application(最大)
28、过滤器用在哪儿?
即:
filter,可以实现权限控制以及转码,某些框架中也使用了(struts2)
29、监听器?
Session、request、application(ServletContex类型)
监听在线人数、通过application初始化时加载数据或者配置;
30、servlet的声明周期?
服务器加载后,servlet容器通过init方法初始化,然后客户端访问服务器时,经过servlet的指定的urlpattern,然后进入指定servlet类中的service方法处理业务逻辑,然后响应给客户端,服务器关闭通过destory方法销毁servlet容器;
31、Session和Cookie区别:
Session’表示一次会话,客户端访问服务器端,会有唯一session表示该客户端,有一个sesionid是唯一的;
浏览器关闭只能是断开会话,而session依然存在,直到过期或者手动销毁;
(web.xml中可以设置或者通过set...方法设置有效时间)
Session是保留在服务器端的;
过多使用给服务器端带来压力;
Cookie是键值对存储数据,保留在客户端不安全;
32、Jsp中的<
%%>
%!
%>
=%>
区别
可以声明变量也可以写操作;
<
只能用于声明变量,声明变量是全局的;
%=%>
表示输出,显示某个字段值,类似于out.print();
33、客户端跳转(重定向)或者服务器端跳转(转发)区别?
客户端跳转当页面刷新时,不会再次发送请求,以前的request中存放的变量全部失效,并进入一个新的request作用域。
服务器端跳转当刷新页面会再次提交请求,并且服务器端跳转时以前的request中存放的变量不会失效。
34、初始化快和静态初始化块区别:
类中写static{}永远只加载一次,单利的、比构造方法早
类中写{}每次加载类都执行,比构造方法早
35、为什么用构造方法?
(初始化成员变量使用的)
36、Js如何操作DOM?
什么是DOM(文本对象模型)?
(1)按照id获取对象、按照name属性获取、按照标签获取、按照form找
document.getElementById(“”)
document.getElementsByName(“”)
document.getElementsByTagName(“”)
Document.forms[0].id或者name属性
38、如何js创建一个节点?
如何用jquery创建一个节点?
Js:
document.createElement(“标签名”)
Jquery:
$(“<
table>
”)$(“<
div>
”)
39、Js是否有trim方法?
没有如何做?
没有trim方法;
正则表达式写去掉前后空格方法:
必须会写:
functiontrimStr(str){
returnstr.replace(/(^\s*)|(\s*$)/g,"
"
);
}
40、js如何判断某个字段数据类型?
(1)通过赋值,看赋值是什么类型的
(2)typeOf方法判断
41、js面向对象写法你懂么?
(只是了解,开发用过jquery框架,js面向对象不太了了解)
42、JSP指令有哪些?
(说出:
include和forword即可)
JSP中的动作元素包括:
include、forward、useBean、getProperty、setProperty、plugin、param。
1.include动作
标签用来包含一个静态或者动态的文件。
2.forward动作
forward>
标签用来重定向一个静态HTML文件、JSP文件或者是一个程序段。
3.useBean动作
useBean>
标签用来在JSP页面中创建一个Bean实例,并指定其名称和作用范围。
4.getProperty动作
getProperty>
标签用来获取Bean的属性值(在此之前必须用<
创建它),并将之转化为一个字符串,然后将其插入到输出的页面中。
5.setProperty动作
setProperty>
标签表示用来设置Bean中的属性值。
6.plugin动作
plugin>
标签用于在浏览器中播放或显示一个对象(典型为applet和Bean),这种显示需要在浏览器上安装Java插件。
当JSP文件被编译后送往浏览器时,<
元素将会根据浏览器的版本替换成<
object>
或者<
embed>
元素。
7.param动作
param>
标签用来传递参数,必须与forward、include及plugin动作配合使用
43、什么是js的闭包?
(类似函数嵌套函数的使用,描述一个例子即可)
functiona(){
vari=0;
functionb(){
alert(++i);
}
returnb;
使用时如下:
varc=a();
c();
44、Js继承用过么?
(回答:
没有,只用过jquery框架即可)
45、Jquery用过继承吗?
没有(只了解jquery中$.fn.extend函数,它用于重写jquery中封装的某些方法的,也可以写自定义的插件,相当于继承)
46、有一个iframe,当前页面如何选他页面中iframe里面的某个标签?
document.frames[0].getElementById(“iframe页面中元素id属性值”)
iframe如何获取外层页面对象?
在iframe所在页面中,写js代码:
window.parent.document.getElementById(“”)
47、开发中什么时候使用StringBuilder,什么时候使用StringBuffer?
StringBuilder线程安全,效率低;
(如果同一时间内,只允许一个线程使用字符串追加操作,此时考虑用StringBuilder因为该类中append方法加入了锁关键词)
StringBuffer线程不安全,效率高;
(如果同一时间内,允许多个线程共同访问并使用拼接字符串操作,此时可以考虑使用StringBuffer)
48、Iframe和frame区别?
Iframe是嵌套在某个页面中的,iframe包含的页面是独立的窗体;
Frameset是将页面拆分几个部分,每个页面不是独立的窗体;
49、HTTP的长连接和短连接?
长连接:
client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。
这种方式下由于通讯连接一直存在。
此种方式常用于P2P通信。
短连接:
Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。
此方式常用于一点对多点通讯。
C/S通信。
50、说出你用过jquery的那些属性?
那些方法(10-20个)?
事件?
属性和方法:
attr(“”)removeAttr(“”)val(“”)、get()、ready()、addClass(“”)、css()
Remove()、parent()/children()/find(“”)/removeClass(“”)/show()/hide()/next()/
First()last()append()html()text()/before()after()/bind()/toggle()/
Indexoffset().pageXoffset().pageY$.ajax()$.each()$.trim(“”)$.serialize()/foucs()/
事件:
click(function(){})
Mouseovermouseoutdbclickmousemovefocusblur
51、说一下jquery的选择器?
按照id找:
$(“#”)
按照class属性找:
$(“.”)
按照标签名找:
$(标签名)
表示过滤的:
:
parent:
selected:
checked:
hidden:
visible:
not:
first:
last:
eq:
lt:
gt:
even:
odd
text:
checkbox:
input:
radio
方法:
find(“”)parent(“”)get(下标)children(“”)next(“”)
52、什么是ajax?
为什么用ajax?
Jquery如何实现ajax?
Ajax
可以传输哪些数据格式的数据?
(1)ajax是利用js中XMLHttpRequest对象,实现客户端与服务器端无刷新页面,异步交互数据的技术;
可以实现局部刷新;
(2)使用ajax可以实现局部刷新,使用json格式传输数据实现异步效率高,并可以实现页面动画效果;
(3)$.ajax()$.post()$.get()$.load()$.getJson()
(4)xml/json/text/script/jsonp、html
53、$.ajax()方法参数有哪些?
url:
设置请求路径、type:
设置提交方式、data:
向后台服务器传输数据,格式为&
属性=值&
属性=值或者{属性:
值,属性:
值}
dataType:
指定客户端接收响应数据的格式,有xml/json/text/script/jsonp、html
Success:
回调函数,指定响应成功后指定的回调函数;
error:
指定服务器响应失败后指定的回调函数
54、$.ajax()如果实现发送同步请求?
async:
属性这只为false
55、说一下等你对Hibernate的了解/理解?
Hibernate是开源的持久层框架,也是ORM映射关系模型框架,通过对象操作表,
底层是封装了jdbc。
它使用了Session一级缓存和二级缓存SessionFactory来减轻对服务器压力,处理表关系时如果关系复杂,针对表关系负责的项目不考虑使用Hibernate,Hibernate有自带的HQL语句查询以及相关的QBE、QBC等查询方式,采用了预编译sql;
53、你说一下对Hibernate的缓存的理解?
一级缓存:
session缓存,针对对象查询起作用,默认的不可被卸载,
查询时先访问session缓存,然后如果没有数据在访问数据库,然后获取数据,session缓存也更新,对数据库数据进行增删改时session缓存同时被更新;
二级缓存:
sessionFactory需要配置,二级缓存中存放的是主键列,查询时如果配置二级缓存了,先访问二级缓存,如果有id,此时从一级缓存拿数据,如果没有,访问数据库,然后将id放入二级缓存,数据放入一级缓存,即缓存更新;
二级缓存被一级缓存共享,并且list查询针对query缓存(前提是配置二级缓存)起作用,iterate方法查询针对一级缓存起作用,前提是配置二级缓存才能开到效果,他发送n+1条sql;
54、Hibernate数据持久化时的有几种状态?
瞬时:
数据封装到对象中,在执行save或者delete或者update方法之前的状态;
持久化:
事务提交后,数据真正保存到数据库;
游离:
事务提交后,数据有session脱管;
55、Hibernate的表关系如何配置的?
(自己看看关联关系配置:
一对多,多对一,多对多,)56、Hibernate中inverse和cascade区别?
Inverse表示反转,配置双向关联关系时,某一方设置为true表示关联关系的控制由对方维护,自身放弃该权利,该权利被扭转了;
Cascade表示何时建立这种关联关系,有很多值,常用的是all、saveoOrupdate等
57、Hibernate中openSession和getCurrentSession区别?
openSession表示开启一个新的session,必须手动关闭
getCurrentSession方法获取session表示该session绑定当前线程,事务提交,session自动关闭;
58、Hibernate中load和get方法区别?
Load方法支持懒加载(延迟加载),查询无数据时,报异常为ObjectNotFoundException,返回代理对象
Get方法查询不支持懒加载,查询数据时无数据的话返回null。
59、Hibernate和mybatis区别?
Hibernate处理表关系时繁琐,数据量大时查询速度慢,他的缓存只是为了减少对服务器压力并非是为了查询速度;
因此银行项目不会使用Hibernate,表关系复杂的项目不会使用Hibernate;
My