java面试题及答案.docx
- 文档编号:23827915
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:18
- 大小:265.78KB
java面试题及答案.docx
《java面试题及答案.docx》由会员分享,可在线阅读,更多相关《java面试题及答案.docx(18页珍藏版)》请在冰豆网上搜索。
java面试题及答案
java基础
1.用代码示例一个多态的例子
2.java的基本数据类型包括哪些,String是基本的数据类型吗?
3.int和Integer有什么区别
4.String和StringBuffer的区别
5.Collection和Collections的区别。
6.&和&&的区别。
7.Overload和Override的区别,试用java代码举例。
8.error和exception有什么区别?
9.abstractclass和interface有什么区别?
10.final,finally,finalize的区别,试用java代码示例。
11.什么时候用assert。
试给出例子
12.forward和redirect的区别
13.GC是什么?
为什么要有GC?
14.shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
15.Math.round(11.5)等於多少?
Math.round(-11.5)等於多少?
16.Strings=newString("xyz");创建了几个StringObject?
17.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
写出程序。
18.Java有没有goto?
19.启动一个线程是用run()还是start()?
20.应用服务器有那些,列出你所知道的例子?
21.接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可继承实体类
22.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
是用==还是equals()?
23.它们有何区别?
24.构造器Constructor是否可被override?
25.是否可以继承String类?
26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
27.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会
28.编程题:
用最有效率的方法算出2乘以8等於几?
29.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
30.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
31.编程题:
写一个Singleton的示例。
32.数组有没有length()这个方法?
String有没有length()这个方法?
33、排除错误
interfacePlayable{
voidplay();
}
interfaceBounceable{
voidplay();
}
interfaceRollableextendsPlayable,Bounceable{
Ballball=newBall("PingPang");
}
classBallimplementsRollable{
//…
}
SQL部分
1.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
------------------------------------------
Student表有三列,分别是姓名、课程、成绩
NameCurriculaMark
张三语文70
李四数学80
王朝英语59
城南马哲70
王朝语文90
...
...
2.查询每门学科成绩及格(Mark>60)的学生的名字?
指定学科查询:
selectNamefromStudent
whereCurricula='指定学科'
andmark>60
不指定学科,按照学科排序
3.查询出总分排名前三的学员名字?
总分排名前三的学员名字:
答案:
1.用代码示例一个多态的例子
子类Wind和Brass重写了父类Instrument中的play方法,是多态的一种表现。
packagejavaBasic;
classInstrument{
publicInstrument(){
System.out.println("defaultconstructorInstrument()");
}
publicvoidplay(){
System.out.println("Playinstrument()");
}
}
classWindextendsInstrument{
publicWind(){
System.out.println("defaultconstructorWind()");
}
publicvoidplay(inti){
System.out.println("PlayWind()"+i);
}
}
classBrassextendsInstrument{
publicBrass(){
System.out.println("defaultconstructorBrass()");
}
publicvoidplay(Strings){
System.out.println("PlayBrass()"+s);
}
}
publicclasse1{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Instrumenti1=newWind();
Instrumenti2=newBrass();
i1.play();
i2.play();
newWind().play();
newWind().play(25);
newBrass().play();
newBrass().play("Helloworld");
}
}
2.java的基本数据类型包括哪些,String是基本的数据类型吗?
java的基本数据类型包括:
布尔型boolean,整型,字符型char和浮点型,
其中整型包括:
字节型byte,短整型short,整型int,长整型long
其中浮点型包括:
单精度float,双精度double
String不是基本数据类型,是java中的类,是对象数据类型
3.int和Integer有什么区别
int是基本数据类型,而Integer是int的包装类,它里面定义了很多转换方法。
4.String和StringBuffer的区别
String是用于处理不可变的字符串,而String是处理可变字符串的。
不可变字符串一旦创建,其内容就不可以改变,既不能插入新字符也不能改变字符串长度,而可变字符串则可以进行此类操作。
5.Collection和Collections的区别。
Collections是个java.util下的类,此类完全由在collection上进行操作或返回collection的静态方法组成。
Collection是个java.util下的接口,它是各种集合结构的父接口。
6.&和&&的区别。
&是按位与运算符,它是用于整数的二进制位的与操作,&&是逻辑与运算符,用于进行两个或多个表达式的与操作
7.Overload和Override的区别,试用java代码举例。
Overload是方法的重载,它是一个类中的多态性的表现,Override是重写,是父类与子类多态性的一种表现。
1子类Wind和Brass重写(Overlride)了父类Instrument中的play方法,
packagejavaBasic;
classInstrument{
publicInstrument(){
System.out.println("defaultconstructorInstrument()");
}
publicvoidplay(){
System.out.println("Playinstrument()");
}
}
classWindextendsInstrument{
publicWind(){
System.out.println("defaultconstructorWind()");
}
publicvoidplay(inti){
System.out.println("PlayWind()"+i);
}
}
classBrassextendsInstrument{
publicBrass(){
System.out.println("defaultconstructorBrass()");
}
publicvoidplay(Strings){
System.out.println("PlayBrass()"+s);
}
}
publicclasse1{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Instrumenti1=newWind();
Instrumenti2=newBrass();
i1.play();
i2.play();
newWind().play();
newWind().play(25);
newBrass().play();
newBrass().play("Helloworld");
}
}
②Instrument中重载(Overload)了play方法
packagejavaBasic;
publicclasse7_OverrideTest{
classInstrument{
publicInstrument(){
System.out.println("defaultconstructorInstrument()");
}
publicvoidplay(){
System.out.println("Playinstrument()");
}
publicvoidplay(inti){
System.out.println("Playinstrument()"+i);
}
publicvoidplay(Strings){
System.out.println("Playinstrument()"+s);
}
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Instrumentin=newe7_OverrideTest().newInstrument();
in.play();
in.play(48);
in.play("Override!
");
}
}
8.error和exception有什么区别?
exception是异常,异常是在一个程序执行过程中出现的一个事件,它中断了正常指令的运行,只要使用异常处理机制做相应的处理,程序还是能跳过异常继续执行的。
而error是错误,它是偏离了可接受的代码行为的一个动作或一个实例,是Throwable的一个子集,它指的是一个合理的应用程序不能截获的严重的问题。
大多数都是反常的情况。
9.abstractclass和interface有什么区别?
abstractclass是抽象类,抽象类不允许直接用来创建对象,它的作用是为一些相关的类提供公共基类和为下层相关子类提供一些公用方法的实现代码,减少代码冗余。
Interface接口可以看做一种特殊的抽象类,它定义的仅是实现某种特定功能的一组对外接口和规范,而这个功能的真正实现是在在继承这个接口的各类中完成的。
接口可以创建对象。
10.final,finally,finalize的区别,试用java代码示例。
final用于声明属性,方法,类,表示属性不可变,方法不可覆盖,类不可继承等;finally在异常处理是出现,表示代码总是执行;finalize是一种方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收。
packagejavaBasic;
importjava.io.IOException;
finalclassBook{
booleancheckedOut=false;
Book(booleancheckOut){
checkedOut=checkOut;
System.out.println("newbook()");
}
publicvoidcheckIn(){
checkedOut=false;
}
protectedvoidfinalize(){
if(checkedOut){
System.out.println("error:
bookshouldbecheckedOut!
");
}
}
}
//classPhylicsextendsBook{//error:
finalclassBookcannotbeinherited.
//Phylics(booleancheck){
//super(check);
//System.out.println("Phylics");
//}
//}
publicclasse10_differencesInFinalFinallyFinalize{
publicstaticvoidmain(String[]args)throwsIOException{
finalinti=0;
//i=2;//error:
finalinticannotbeassigned
Booknovel=newBook(true);
novel.checkIn();
newBook(true);
System.gc();//systemcallsthefunctionoffinalize();
try{
intj=System.in.read();//inputaintthansystemcallsfinally
}catch(Exceptione){
System.out.print("error");
e.printStackTrace();
}
finally{
System.out.println("inputtest.");
}
}
}
11.什么时候用assert。
试给出例子
assert是为了支持assertion而增加的一个关键字,assertion用于对一个boolean表达式进行检查一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。
一般来说,assertion用于保证程序最基本、关键的正确性。
assertion检查通常在开发和测试时开启。
为了提高性能,在软件发布后,assertion检查通常是关闭的。
Assert在单元测试里会用到。
12.forward和redirect的区别
13.GC是什么?
为什么要有GC?
GC是垃圾收集器,Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理,要请求垃圾收集。
14.shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
S1是short短整型,1是int整型变量,s1+1也是整型变量,要把int转换为short会造成精度流失,需进行强制转换s1=short(s1+1);
shorts1=1;s1+=1;在编译和运行时不出错。
15.Math.round(11.5)等於多少?
Math.round(-11.5)等於多少?
Math.round(11.5)等于12
Math.round(-11.5)等于-11
16.Strings=newString("xyz");创建了几个StringObject?
2个,一个是字符串池中的"xyz"对象,另一个是堆中的String对象
17.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
写出程序。
packagejavaBasic;
publicclassThreadTest2{
privateintj=0;
publicstaticvoidmain(Stringargs[]){
ThreadTest2test=newThreadTest2();
Addadd1=test.newAdd();
Addadd2=test.newAdd();
Minusminus1=test.newMinus();
Minusminus2=test.newMinus();
Threadthread1=newThread(add1);
Threadthread2=newThread(add2);
Threadthread3=newThread(minus1);
Threadthread4=newThread(minus2);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
System.exit(0);
}
classAddimplementsRunnable{
publicvoidrun(){
//TODOAuto-generatedmethodstub
j++;
System.out.println(Thread.currentThread().getName()+j);
}
}
classMinusimplementsRunnable{
publicvoidrun(){
//TODOAuto-generatedmethodstub
j--;
System.out.println(Thread.currentThread().getName()+j);
}
}
}
18.Java有没有goto?
goto是java中的保留字,但现在没有在java中使用。
19.启动一个线程是用run()还是start()
启动一个线程是用start(),它使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行,但这并不意味着线程就会立即运行。
20.应用服务器有哪些,列出你所知道的例子?
Websphere,weblogic,jboss.iis
21.接口是否可继承接口?
抽象类是否可实现(implements)接口?
抽象类是否可继承实体类
接口可以继承接口。
抽象类可以实现接口,抽象类可以继承实体类,不过这个实体类必须有明确的构造函数。
22.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
是用==还是equals()?
用iterator()方法,此方法返回此set中的元素上进行迭代的迭代器,
23.它们有何区别?
==,如果是基本数据类型的话是比较两个数值是否相等
如果是对象的话则是比较引用是否相同
而equals则是比较两个对象的内容是否相同
24.构造器Constructor是否可被override?
构造器不能被继承,所以不能重写overriding,但是可以重载overloading
25.是否可以继承String类?
String类是final类,所以不能被继承。
26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Switch作用于整数值,byte类型可以自动转换成int型,所以可以使用,但是不能用于long和String。
27.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会执行?
一定会被执行的,finally里的code会在return之前执行
28.编程题:
用最有效率的方法算出2乘以8等於几?
packagejavaBasic;
publicclasse28{
publicstaticvoidmain(String[]args){
inti=8;
System.out.print(i<<1);
}
}
29.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,
是值传递,Java 编程语言只有值传递参数。
当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。
对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
30.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
一个线程在访问一个对象的同步方法时,另一个线程不能同时访问这个同步方法和另外的同步方法,但可以同时访问这个对象的非同步方法。
31.编程题:
写一个Singleton的示例。
packagejavaBasic;
publicclasse31_Singleton{
privatee31_Singleton(){}
privatestatice31_Singletoninstance=newe31_Singleton();
publice31_SingletongetInstance(){
returninstance;
}
}
32.数组有没有length()这个方法?
String有没有length()这个方法?
数组是一种特殊的对象,没有一个类与之对应,所以数组中的length()只是一个凡是数组都拥有的属性;String类则拥有length()这个方法。
33.排除错误
interfacePlayable{
voidplay();
}
interfaceBounceable{
voidplay();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 试题 答案