JAVA经典面试题目.docx
- 文档编号:30712646
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:34
- 大小:22.98KB
JAVA经典面试题目.docx
《JAVA经典面试题目.docx》由会员分享,可在线阅读,更多相关《JAVA经典面试题目.docx(34页珍藏版)》请在冰豆网上搜索。
JAVA经典面试题目
1.列举出10个JAVA语言的优势
a:
免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台,无线应用
2.列举出JAVA中10个面向对象编程的术语
a:
包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java.lang;java.util;java.io;java.sql;java.awt;;java.applet;javax.swing
4.JAVA中的标识符有什么作用和特点
作用:
标识符用作给变量、类和方法命名
特点:
可以以字母、下划线“_”和”$”符开头
首字符外,可以跟上字母、下划线“_”和”$”符或数字
Java是大小写敏感的,标识符也不例外
5.JAVA中的关键字有什么特点,列举出至少20个关键字
Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)
所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字;
goto和const虽然从未被使用,但也作为Java关键字保留;
?
中一共有51个关键字Java
abstractassertbooleanbreakbytecontinue
casecatchcharclassconstdouble
defaultdoextendselsefinalfloat
forgotolongifimplementsimport
nativenewnullinstanceofintinterface
packageprivateprotectedpublicreturnshort
staticstrictfpsuperswitchsynchronizedthis
whilevoidthrowthrowstransienttry
volatile
6.JAVA中数据类型如何分类?
可分为简单数据类型和引用数据类型:
简单数据类型:
数值型(byte,short,int,long,floatdouble),字符型(char),布尔型(boolean);
引用数据类型:
类,接口,数组.
7.JAVA中运算符的分类及举例
?
分割符:
,;,[],()
?
算术运算符:
+,―,*,/,%,++,――
?
关系运算符:
>,<,>=,<=,==,!
=
?
布尔逻辑运算符:
!
,&,|,^,&&,||
?
位运算符:
&,|,^,~,>>,<<,>>>
?
赋值运算符:
=扩展赋值运算符:
+=,―=,*=,/=
?
字符串连接运算符:
+
?
造型操作符:
()
8.super,this关键字的作用及用法
?
在Java类中使用super来引用父类的成分
–可用于访问父类中定义的属性super
–可用于调用父类中定义的成员方法super
–可用于在子类构造器中调用父类的构造器super
–的追溯不仅于直接父类super
?
中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。
Java
–构造器中指该构造器所创建的新对象
–方法中指调用该方法的对象
?
关键字的用法this
–在类本身的方法或构造器中引用该类的实例变量和方法
–将当前对象作为参数传递给其它方法或构造器
–用来调用其他的重载的构造器
9.什么是JAVA中的表达式?
有什么作用?
?
表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分
?
表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。
?
一些表达式的例子:
–X
–X+10
–Y=x+10
–Arr[10]
–student.geName()
10.做表列出JAVA中所有修饰符和他们的适用范围(能不能修饰构造器,属性,自由块等)
class属性方法构建器自由块内部类
publicYYYYY
protectedYYYY
(Default)YYYYYY
privateYYYY
finalYYYY
abstractYYY
staticYYY
11.写一个方法,用一个for循环打印九九乘法表
/**
*一个for循环打印九九乘法表
*/
publicvoidnineNineMultiTable()
{
for(inti=1,j=1;j<=9;i++){
System.out.print(i+"*"+j+"="+i*j+"");
if(i==j)
{
i=0;
j++;
System.out.println();
}
}
}
12.给定一个java.util.Date对象,如何转化为”2007-3-2220:
23:
22”格式的字符串
/**
*将某个日期以固定格式转化成字符串
*@paramdate
*@returnstr
*/
publicStringdateToStr(java.util.Datedate)
{
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
Stringstr=sdf.format(date);
returnstr;
}
13.写一个方法,能够判断任意一个整数是否素数
/**
*判断任意一个整数是否素数
*@paramn
*@returnboolean
*/
publicbooleanisPrimes(intn)
{
for(inti=2;i<=Math.sqrt(n);i++){
if(n%i==0)
{
returnfalse;
}
}
returntrue;
}
14.写一个方法,输入任意一个整数,返回它的阶乘
/**
*获得任意一个整数的阶乘
*@paramn
*@returnn!
*/
publicintfactorial(intn)
{
//递归
if(n==1)
{
return1;
}
returnn*factorial(n-1);
//非递归
//intmulti=1;
//for(inti=2;i<=n;i++){
//multi*=i;
//}
//returnmulti;
}
15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
/**
*二分查找特定整数在整型数组中的位置(递归)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
*/
publicintbinarySearch(int[]dataset,intdata,intbeginIndex,intendIndex)
{
intmidIndex=(beginIndex+endIndex)/2;
if(data
if(data { returnbinarySearch(dataset,data,beginIndex,midIndex-1); }elseif(data>dataset[midIndex]) { returnbinarySearch(dataset,data,midIndex+1,endIndex); }else { returnmidIndex; } } /** *二分查找特定整数在整型数组中的位置(非递归) *@paramdataset *@paramdata *@returnindex */ publicintbinarySearch(int[]dataset,intdata) { intbeginIndex=0; intendIndex=dataset.length-1; intmidIndex=-1; if(data while(beginIndex<=endIndex){ midIndex=(beginIndex+endIndex)/2; if(data endIndex=midIndex-1; }elseif(data>dataset[midIndex]){ beginIndex=midIndex+1; }else { returnmidIndex; } } return-1; } 16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 packagecom.softeem.demo; /** *@authorleno *动物的接口 */ interfaceAnimal { publicvoideat(Foodfood); } /** *@authorleno *一种动物类: 猫 */ classCatimplementsAnimal { publicvoideat(Foodfood) { System.out.println("小猫吃"+food.getName()); } } /** *@authorleno *一种动物类: 狗 */ classDogimplementsAnimal { publicvoideat(Foodfood) { System.out.println("小狗啃"+food.getName()); } } /** *@authorleno *食物抽象类 */ abstractclassFood { protectedStringname; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } } /** *@authorleno *一种食物类: 鱼 */ classFishextendsFood { publicFish(Stringname){ this.name=name; } } /** *@authorleno *一种食物类: 骨头 */ classBoneextendsFood { publicBone(Stringname){ this.name=name; } } /** *@authorleno *饲养员类 * */ classFeeder { /** *饲养员给某种动物喂某种食物 *@paramanimal *@paramfood */ publicvoidfeed(Animalanimal,Foodfood) { animal.eat(food); } } /** *@authorleno *测试饲养员给动物喂食物 */ publicclassTestFeeder{ publicstaticvoidmain(String[]args){ Feederfeeder=newFeeder(); Animalanimal=newDog(); Foodfood=newBone("肉骨头"); feeder.feed(animal,food);//给狗喂肉骨头 animal=newCat(); food=newFish("鱼"); feeder.feed(animal,food);//给猫喂鱼 } } 17.描述JAVA中异常处理的机制 ? 程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。 Java ? 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 ? 如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。 ? 程序员通常只能处理违例(Exception),而对错误(Error)无能为力。 18.做一个单子模式的类,只加载一次属性文件 packagecom.softeem.demo; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; importjava.util.Properties; /** *@authorleno *单子模式,保证在整个应用期间只加载一次配置属性文件 */ publicclassSingleton{ privatestaticSingletoninstance; privatestaticfinalStringCONFIG_FILE_PATH="E: \\config.properties"; privatePropertiesconfig; privateSingleton() { config=newProperties(); InputStreamis; try{ is=newFileInputStream(CONFIG_FILE_PATH); config.load(is); is.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicstaticSingletongetInstance() { if(instance==null) { instance=newSingleton(); } returninstance; } publicPropertiesgetConfig(){ returnconfig; } publicvoidsetConfig(Propertiesconfig){ this.config=config; } } lJ2SE 19.拷贝一个目录(文件)到指定路径 /** *拷贝一个目录或者文件到指定路径下 *@paramsource *@paramtarget */ publicvoidcopy(Filesource,Filetarget) { Filetarpath=newFile(target,source.getName()); if(source.isDirectory()) { tarpath.mkdir(); File[]dir=source.listFiles(); for(inti=0;i copy(dir[i],tarpath); } }else { try{ InputStreamis=newFileInputStream(source); OutputStreamos=newFileOutputStream(tarpath); byte[]buf=newbyte[1024]; intlen=0; while((len=is.read(buf))! =-1) { os.write(buf,0,len); } is.close(); os.close(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } 20.用JAVA中的多线程示例银行取款问题 packagecom.softeem.demo; /** *@authorleno *账户类 *默认有余额,可以取款 */ classAccount{ privatefloatbalance=1000; publicfloatgetBalance(){ returnbalance; } publicvoidsetBalance(floatbalance){ this.balance=balance; } /** *取款的方法需要同步 *@parammoney */ publicsynchronizedvoidwithdrawals(floatmoney) { if(balance>=money) { System.out.println("被取走"+money+"元! "); try{ Thread.sleep(1000); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } balance-=money; } else { System.out.println("对不起,余额不足! "); } } } /** *@authorleno *银行卡 */ classTestAccount1extendsThread{ privateAccountaccount; publicTestAccount1(Accountaccount){ this.account=account; } @Override publicvoidrun(){ account.withdrawals(800); System.out.println("余额为: "+account.getBalance()+"元! "); } } /** *@authorleno *存折 */ classTestAccount2extendsThread{ privateAccountaccount; publicTestAccount2(Accountaccount){ this.account=account; } @Override publicvoidrun(){ account.withdrawals(700); System.out.println("余额为: "+account.getBalance()+"元! "); } } publicclassTest { publicstaticvoidmain(String[]args){ Accountaccount=newAccount(); TestAccount1testAccount1=newTestAccount1(account); testAccount1.start(); TestAccount2testAccount2=newTestAccount2(account); testAccount2.start(); } } 21.用JAVA中的多线程示例火车站售票问题 packagecom.softeem.demo; /** *@authorleno *售票类 */ classSaleTicketimplementsRunnable{ inttickets=100; publicvoidrun(){ while(tickets>0){ sale(); //或者下面这样实现 //synchronized(this){ //if(tickets>0){ //System.out.println(Thread.currentThread().getName()+"卖第" //+(100-tickets+1)+"张票"); //tickets--; //} //} } } publicsynchronizedvoidsale(){ if(tickets>0){ System.out.println(Thread.currentThread().getName()+"卖第" +(100-tickets+1)+"张票"); tickets--; } } } publicclassTestSaleTicket{ publicstaticvoidmain(String[]args){ SaleTicketst=newSaleTicket(); newThread(st,"一号窗口").start(); newThread(st,"二号窗口").start(); newThread(st,"三号窗口").start(); newThread(st,"四号窗口").start();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 经典 面试 题目