JAVA面试题集.docx

上传人:b****5 文档编号:4399415 上传时间:2022-12-01 格式:DOCX 页数:28 大小:35.51KB
下载 相关 举报
JAVA面试题集.docx_第1页
第1页 / 共28页
JAVA面试题集.docx_第2页
第2页 / 共28页
JAVA面试题集.docx_第3页
第3页 / 共28页
JAVA面试题集.docx_第4页
第4页 / 共28页
JAVA面试题集.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

JAVA面试题集.docx

《JAVA面试题集.docx》由会员分享,可在线阅读,更多相关《JAVA面试题集.docx(28页珍藏版)》请在冰豆网上搜索。

JAVA面试题集.docx

JAVA面试题集

JAVA面试题集

1.数据库,比如100用户同时来访,要采取什么技术解决;(JDBC)

答:

可采用连接池。

2.String,StringBufferStringBuilder的区别。

(CoreJava)

答:

String的长度是不可变的;

StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;

StringBuilder是从JDK5开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

3.写一个函数要求输入一个字符串和一个字符长度,对该字符串进行分隔;(CoreJava)

答:

函数代码如下:

publicString[]split(Stringstr,intchars){

intn=(str.length()+chars-1)/chars;

Stringret[]=newString[n];

for(inti=0;i

if(i

ret[i]=str.substring(i*chars,(i+1)*chars);

}else{

ret[i]=str.substring(i*chars);

}

}

returnret;

}

4.java和javasciprt的区别;(CoreJava)

答:

javascript与Java是两个公司开发的不同的两个产品。

Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而javascript是Netscape公司的产品,其目的是为了扩展NetscapeNavigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是LiveScript;而Java的前身是Oak语言。

下面对两种语言间的异同作如下比较:

1)基于对象和面向对象:

Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。

javascript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。

它是一种基于对象(ObjectBased)和事件驱动(EventDriver)的编程语言。

因而它本身提供了非常丰富的内部对象供设计人员使用。

2)解释和编译:

Java的源代码在执行之前,必须经过编译;

javascript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。

3)强类型变量和类型弱变量:

Java采用强类型变量检查,即所有变量在编译之前必须作声明;

javascript中变量声明,采用其弱类型。

即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。

4)代码格式不一样。

5.语句floatf=1.3;编译能否通过?

(CoreJava)

答:

不能;应该用强制类型转换,如下所示:

floatf=(float)1.3;

6.以下二条语句返回值为true的有:

(CoreJava)

答:

AB

A:

“beijing”==“beijing”;

B:

“beijing”.equalsIgnoreCase(newString(“beijing”));

7.类ExampleA继承Exception,类ExampleB继承ExampleA;

有如下代码片断:

(CoreJava)

try{

thrownewExampleB(“b”);

}catch(ExampleAe){

System.out.println(“ExampleA”);

}catch(Exceptione){

System.out.printfln(“Exception”);

}

输出的内容应该是:

A

A:

ExampleAB:

ExceptionC:

bD:

8.java多线程有几种实现方法,都是什么?

同步有几种实现方法,都是什么;(CoreJava)

答:

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口;

同步的实现方面有两种,分别是synchronized,wait与notify

9.Arraylist与Vector区别;(CoreJava)

答:

就ArrayList与Vector主要从二方面来说:

1.同步性:

Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

2.数据增长:

当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

10.HashMapHashtable区别;(CoreJava)

答:

都属于Map接口的类,实现了将惟一键映射到特定的值上,区别主要有:

1.历史原因:

Hashtable是继承于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现;

2.同步性:

Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的;

3.值:

只有HashMap可以让你将空值作为一个表的条目的key或value;

4.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey;因为contains方法容易让人引起误解。

11.Collction和Collections的区别;(CoreJava)

答:

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法;

Collection是个java.util下的接口,它是各种集合结构的父接口。

12.面向对象的特征有哪些方面;(CoreJava)

答:

封装、继承、多态:

1)封装:

指把一个类的内部实现隐藏起来,对外提供公开一致的接口,从而具有更好的可维护性;

2)继承:

使一个类自动获得另一个类的方法和属性;

3)多态:

指子类可以当作父类用。

13.Overload和Override的区别;Overloaded的方法是否可改变返回值类型;(CoreJava)

答:

方法的覆盖Overriding和重载Overloading是Java多态性的不同表现。

覆盖Overriding是父类与子类之间多态性的一种表现(又称为运行时多态),重载Overloading是一个类中多态性的一种表现(也称为编译时多态)。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖(Overriding),子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型。

14.定义类A和类B如下:

(CoreJava)

classA{

inta=1;

doubled=2.0;

voidshow(){

System.out.println("ClassA:

a="+a+"\td="+d);

}

}

classBextendsA{

floata=3.0f;

Stringd="Javaprogram.";

voidshow(){

super.show();

System.out.println("ClassB:

a="+a+"\td="+d);

}

}

(1)若在应用程序的main方法中有以下语句:

Aa=newA();

a.show();

则输出的结果如何?

答:

输出结果为:

ClassA:

a=1d=2.0

(2)若在应用程序的main方法中定义类B的对象b:

Ab=newB();

b.show();

则输出的结果如何?

答:

输出结果为:

ClassA:

a=1d=2.0

ClassB:

a=3.0d=Javaprogram.

15.接口和抽象类的区别;(CoreJava)

答:

抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。

成员方法中包含抽象方法的类被叫做抽象类(abstractclass);不能创建abstract类的实例,然而可以创建一个引用变量,其类型是一个抽象类,并让它指向具体子类的一个实例;不能有抽象构造函数或抽象静态方法;Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。

接口(interface)是抽象类的变体,在接口中,所有方法都是抽象的;多继承性可通过实现这样的接口而获得;接口只可以定义staticfinal成员变量;当类实现特殊接口时,它定义所有这种接口的方法;允许使用接口名作为引用变量的类型。

16.详细描述MVC;(Web)

答:

基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视图)、control(控制)分离设计。

这是目前WEB应用服务系统的主流设计方向。

Model:

即处理业务逻辑的模块,每一种处理一个模块;

View:

负责页面显示,显示MODEL处理结果给用户,主要实现数据到页面转换过程;

Control:

负责每个请求的分发,把form数据传递给MODEL处理,把处理结果的数据传递给VIEW显示。

17.页面中有一个命名为bankNo的下拉列表,写脚本获取当前选项的索引值;(Web)

答:

用java或javascript的处理方式分别如下:

Java:

request.getParameter(“bankNo”);

javascript:

varselectItems=document.getElementsByName(“bankNo”);

selectItems[0].value;

18.javasct常用的方面;(Web)

答:

常用于数据输入校验和页面特殊效果等。

19.常用的web容器和开发工具;(Web)

答:

最常用的容器包括:

tomcat、weblogic;

开发工具有:

eclipse,jbuilder

20.请画出Servlet2.2以上WebApplication的基本目录结构(时间2分钟)(Web)

答:

目录结构如下图所示:

webapps

|

Applocation

|

__________________

||

JSP页面WEB-INF

|

___________________

|||

Classlibweb.xml

21.后序遍历下列二叉树,访问结点的顺序是?

(数据结构)

答:

DJGEBKNIFCA

A

/\

BC

/\\

DEF

//\

GNI

/\

JK

22.写一种常见排序;(算法)

答:

C++中冒泡排序:

voidswap(int&a,int&b){

intc=a;a=b;b=c;

}

voidbubble(int*p,intlen){

boolbSwapped;

do{

bSwapped=false;

for(inti=1;i

if(p[i-1]>p[i]){

swap(p[i-1],p[i]);

bSwapped=true;

}

}

}while(bSwapped);

}

23.一个byte几个单位。

(计算机基础)

答:

8bit。

24.常用UNIX命令(Linux的常用命令)(至少10个);(Unix)

答:

ls,pwd,mkdir,rm,cp,mv,cd,ps,ftp,telnet,ping,env,more,echo

greap,cat,view,pr,in,chmod,find,chown.

25.写一个一小段程序检查数字是否为质数;(C++)

以上的程序你采用的哪种语言写的.采用该种语言的理由是什么,

答:

代码如下:

#include

boolprime(intn){

if(n<=0)exit(0);

for(inti=2;i<=n;i++)

for(intj=2;j<=sqrt(i);j++)

if((n%j==0)&&(j!

=n))

returnfalse;

returntrue;

}

C++,运行效率高

1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联;(SQL)

1)写出建表语句;

答:

建表语句如下(mysql数据库):

createtables(idintegerprimarykey,namevarchar(20));

createtablec(idintegerprimarykey,namevarchar(20));

createtablesc(

sidintegerreferencess(id),

cidintegerreferencesc(id),

primarykey(sid,cid)

);

2)写出SQL语句,查询选修了所有选修课程的学生;

答:

SQL语句如下:

selectstu.id,stu.namefromsstu

where(selectcount(*)fromscwheresid=stu.id)=

(selectcount(*)fromc);

3)写出SQL语句,查询选修了至少5门以上的课程的学生。

答:

SQL语句如下:

selectstu.id,stu.namefromsstu

where(selectcount(*)fromscwheresid=stu.id)>=5;

2.数据库表(Test)结构如下:

(SQL)

IDNAMEAGEMANAGER(所属主管人ID)

106A30104

109B19104

104C20111

107D35109

112E25120

119F45NULL

要求:

列出所有年龄比所属主管年龄大的人的ID和名字?

答:

SQL语句如下:

selectemployee.namefromtestemployeewhereemployee.age>

(selectmanager.agefromtestmanagerwheremanager.id=employee.manager);

3.有3个表(15分钟):

(SQL)

Student学生表(学号,姓名,性别,年龄,组织部门)

Course课程表(编号,课程名称)

Sc选课表(学号,课程编号,成绩)

表结构如下:

1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟)

答:

SQL语句如下:

selectstu.sno,stu.snamefromStudentstu

where(selectcount(*)fromscwheresno=stu.snoandcno=

(selectcnofromCoursewherecname='计算机原理'))!

=0;

2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟)

答:

SQL语句如下:

selectcnamefromCoursewherecnoin(selectcnofromscwheresno=(selectsnofromStudentwheresname='周星驰'));

3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)

答:

SQL语句如下:

selectstu.sno,stu.snamefromstudentstu

where(selectcount(*)fromscwheresno=stu.sno)=5;

4.写四个线程,两个对j加1,两个对j减1;(CoreJava)

答:

代码如下:

packagetest;

publicclassTestThread{

intj;

publicTestThread(intj){

this.j=j;

}

privatesynchronizedvoidinc(){

j++;

System.out.println(j+"--Inc--"+Thread.currentThread().getName());

}

privatesynchronizedvoiddec(){

j--;

System.out.println(j+"--Dec--"+Thread.currentThread().getName());

}

publicvoidrun(){

(newDec()).start();

newThread(newInc()).start();

(newDec()).start();

newThread(newInc()).start();

}

classDecextendsThread{

publicvoidrun(){

for(inti=0;i<100;i++){

dec();

}

}

}

classIncimplementsRunnable{

publicvoidrun(){

for(inti=0;i<100;i++){

inc();

}

}

}

publicstaticvoidmain(String[]args){

(newTestThread(5)).run();

}

}

5.写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

(CoreJava)

答:

代码如下:

publicintcountWords(Stringfile,Stringfind)throwsException{

intcount=0;

Readerin=newFileReader(file);

intc;

while((c=in.read())!

=-1){

while(c==find.charAt(0)){

for(inti=1;i

c=in.read();

if(c!

=find.charAt(i))break;

if(i==find.length()-1)count++;

}

}

}

returncount;

}

6.sleep()和wait()的区别;(CoreJava)

答:

sleep()方法是使线程停止一段时间的方法。

在sleep时间间隔期满后,线程不一定立即恢复执行。

这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非:

(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

7.GC是什么?

为什么要用它;(CoreJava)

答:

GC是垃圾收集器;Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。

要请求垃圾收集,可以调用方法:

System.gc()或Runtime.getRuntime().gc()

8.用程序给出随便大小的10个数,序号为1-10,按从小到大顺序输出,并输出相应的序号。

(CoreJava)

答:

代码如下:

packagetest;

importjava.util.ArrayList;

importjava.util.Collections;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Random;

publicclassRandomSort{

publicstaticvoidprintRandomBySort(){

Randomrandom=newRandom();//创建随机数生成器

Listlist=newArrayList();

for(inti=0;i<10;i++){//生成10个随机数,并放在集合list中

list.add(random.nextInt(1000));

}

Collections.sort(list);//对集合中的元素进行排序

Iteratorit=list.iterator();

intcount=0;

while(it.hasNext()){//顺序输出排序后集合中的元素

System.out.println(++count+":

"+it.next());

}

}

publicstaticvoidmain(String[]args){

printRandomBySort();

}

}

9.写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:

如(“我ABC”,4)应该截为“我AB”,输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。

(CoreJava)

答:

代码如下:

publicStringsubString(Stringstr,intsubBytes){

intbytes=0;//用来存储字符串的总字节数

for(inti=0;i

if(bytes==subBytes){

returnstr.substring(0,i);

}

charc=str.charAt(i);

if(c<256){

bytes+=1;//英文字符的字节数看作1

}else{

bytes+=2;//中文字符的字节数看作2

if(bytes-subBytes==1){

returnstr.substring(0,i);

}

}

}

returnstr;

}

10.连接池的工作原理;(JDBC)

答:

连接池中保存有指定个数的数据库连接,当需要时程序可从池中获取可用连接,并在程序使用过之后不关闭连接,并放回连接池中,以供其他的程序在需要时来取用,这样可以大量的节省销毁和创建连接的资源消耗。

11.JNDI是什么?

答:

是java命名和目录接口服务

12.什么是web容器;(Web)

答:

容器是一个软件的概念,提供了一个组件运行的环境。

Web容器或ejb

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1