Java经典面试题大全 带答案

巡山小妖精
653次浏览
2021年02月18日 12:13
最佳经验
本文由作者推荐

韩先楚-

2021年2月18日发(作者:世界上最帅的逆行)



Java


经典面试题



带答案



一、单项选择题





1



Jav a


是从()语言改进重新设计。





A



Ada




B



C++




C



Pasacal




D



BASIC




答案:


B




2


.下列语句哪一个正确()





A




Jav a


程序经编译后会产生


machine code




B



Java


程序经编译后会产生


byte code




C


Java


程序经编译后会产生


D LL




D


.以上都不正确





答案:


B




3


.下列说法正确的有()





A



class


中的


constructor< /p>


不可省略





B




con structor


必须与


class


同 名,但方法不能与


class


同名





C



constructor


在一个对象被


ne w


时执行





D


.一个


class

< br>只能定义一个


constructor




答案:


C




4


.提供


J ava


存取数据库能力的包是()





A






B






C






D






答案:


A




5


.下列运算符合法的是()





A



&&




B



<>




C



if




D



:=




答案:


A




6


.执行如下程序代码





a=0;c=0;




do{




--c;




a=a-1;




}while(a>0);




后,


C


的值 是()





A



0




B



1




C



-1




D


.死循环







答案:


C




7


.下列哪一种叙述是正确的()





A



abstract


修饰符可修饰字段、方法和类




B


.抽象方法的


body


部分必须用一对大括号

< br>{}


包住





C


.声明抽象方法,大括号可有可无





D


.声明抽象方法不可写出大括号





答案:


D




8


.下列语句正确的是()





A


.形式 参数可被视为


localvariable




B


.形式参数可被字段修饰符修饰





C


.形式 参数为方法被调用时,真正被传递的参数





D


.形式参数不可以是对象





答案:


A




9


.下列哪种说法是正确的()





A


.实例 方法可直接调用超类的实例方法





B


.实例方法可直接调用超类的类方法





C


.实例 方法可直接调用其他类的实例方法





D


.实例方法可直接调用本类的类方法





答案:


D


二、多项选择题





1



Jav a


程序的种类有()





A


.类(


C lass






B



Applet




C



Application




D



Servlet




2


.下列说法正确的有()





A


.环境 变量可在编译


sourcecode


时指定




B


.在编译程序时,所能指定的环境变量不包括


class path




C



javac


一次可同时编译数个


Java< /p>


源文件




< /p>


D




能指定编译 结果要置于哪个目录(


directory


< br>




答案:


BCD




3


.下列标识符不合法的有()





A



new




B



$$Usdollars




C



1234




D






答案:


ACD




4


.下列说法错误的有()





A


.数组是一种对象





B


.数组属于一种原生类





C



intnumber=[]={31,23,33,43,35,63}




D


.数组的大小可以任意改变





答案:


BCD




5


.不能用来修饰

< br>interface


的有()







A



private




B



public




C



protected




D



static




答案:


ACD




6


.下列正确的有()





A




call byvalue


不会改变实际参数的数值





B




call by reference


能改变实际参数的参考地址





C




call byreference


不能改变实际参数的参考地址





D




call byreference


能改变实际参数的内容





答案:


ACD




7


.下列说法错误的有()





A


.在类 方法中可用


this


来调用本类的类方法





B


. 在类方法中调用本类的类方法时可直接调用





C


.在类方法中只能调用本类中的类 方法





D


.在类方法中绝对不能调用实例方法





答案:


ACD




8


.下列说法错误的有()





A



Java


面向对象语言容许单独的过程与函数存在

< br>




B




Jav a


面向对象语言容许单独的方法存在





C



Jav a


语言中的方法属于类中的成员(


member





D



Java


语言中的方法必定隶 属于某一类(对象)


,调用方法与过程或函数相同





答案:


ABC




9


.下列说法错误的有()





A


.能被



成功运行的


javaclass


文件必须有


main()


方法





B




J2SDK


就是


Java API




C




可利用


jar


选项 运行


.jar


文件





D


.能被


Appletviewer


成功运行的


javaclass


文件必须有


main()

< br>方法





答案:


BCD


三、判断题





1



Jav a


程序中的起始类名称必须与存放该类的文件名相同。


()





答案:正确





2



Uni code


是用


16


位来表示一个字的。


()





答案:正确





3


.原生类中的数据类型均可任意转 换。


()





答案:错误





1.


分别写出


BOOL,int,float,


指针类型的变量


a





< p>
的比较语句。





答案:





BOOL : if ( !a ) orif(a)




int : if ( a == 0)




float : const EXPRESSION EXP = 0.000001




if ( a < EXP && a >-EXP)




pointer : if ( a !=NULL) or if(a == NULL)




2 .


请说出


const



#define


相比,有何优点?







答案:


1




const


常量有数据类型,而宏常量没有数据类型。编译器可 以对前者进行类


型安全检查。


而对后者只进行字符替换,


没有类型安全检查,


并且在字符替换可能会产生意

料不到的错误。





2




有些集成化的调试工具可以对


const


常量进行调试,但是不能对宏常量进行调试。





3.


简述数组与指针的区别?





数组要么在静态存储区被创建(如 全局数组)


,要么在栈上被创建。指针可以随时指向


任意类型的 内存块。





(1)


修改内容上的差别





char


a[]= “hello”;





a[0] = „X‟;





char *p = “world”; //


注意


p


指向常量字符串





p[0] = „X‟;//


编译器不能发现该错误,运行时错误





(2)


用运算符


sizeof


可以计算出数 组的容量


(字节数)



sizeof( p),p


为指针得到的是一个


指针变量的字节数,而不是


p


所指的内存容量。


C++/C

< p>
语言没有办法知道指针所指的内存


容量,


除非在申 请内存时记住它。


注意当数组作为函数的参数进行传递时,


该数 组自动退化


为同类型的指针。





char a[] =




char *p = a;




cout<< sizeof(a) << endl; // 12


字节





cout<< sizeof(p) << endl; // 4


字节





计算数组和指针的内存容量





voidFunc(char a[100])




{




cout<< sizeof(a) << endl; // 4


字节而不是


100


字节





}



< /p>


4.


类成员函数的重载、覆盖和隐藏区别?





答案:





a.


成员函数被重载的特征:






1


)相同的范围(在同一个类中)







2


)函数名字相同;






3


)参数 不同;






4



virtual


关键字可有可无。





b.


覆盖是指派生类函数覆盖基类函 数,特征是:




< br>(


1


)不同的范围(分别位于派生类与基类)

< p>






2


)函数名字相同;






3


)参数相同;






4


)基类函数必须有


virtual


关键字。





c.“


隐藏



是指派生类的函数屏蔽了与其同名的基类函数,规则如下:






1


)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无

virtual



键字,基类的函数将被隐藏(注意别与重 载混淆)







2



如果派生类的函数与基类的函数同名,


并且参数也相同,

< p>
但是基类函数没有


virtual


关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)





5.


There


are


two


int


variables:


a


and


b,


don‟t


use


“if”,


“?


:”,


“switch”orother


judgement


statements, find out the biggest one of the two numbers.


韩先楚-


韩先楚-


韩先楚-


韩先楚-


韩先楚-


韩先楚-


韩先楚-


韩先楚-