JAVA面试题集2.docx

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

JAVA面试题集2.docx

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

JAVA面试题集2.docx

JAVA面试题集2

JAVA面试题集2

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

答:

可采用连接池。

2.String,StringBufferStringBuilder的区别。

(CoreJava)

答:

String是一组不可变的unicode编码的字符序列;

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)代码格式不一样。

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

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.

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;

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;

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;

}

14.struts的入口类;(Web)

答:

ActionServlet是Struts的入口类,所有的struts请求都经由该类转发处理

16.servlet的生命周期以及与其相关的类接口和相关方法;(Web)

答:

servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。

这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

17.关于hibernate:

1)在hibernate中,在配置文件呈标题一对多,多对多的标签是什么;

2)Hibernate的二级缓存是什么;

3)Hibernate是如何处理事务的;

答:

1)一对多的标签为:

;多对多的标签为:

2)sessionFactory的缓存为hibernate的二级缓存;

3)Hibernate的事务实际上是底层的JDBCTransaction的封装或者是JTATransaction的封装;默认情况下使用JDBCTransaction。

18.JSP中两种include方式的区别;(Web)

答:

动态include用jsp:

include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态include用<%@include%>指令实现,适用于包含静态页面

19.javascipt的优缺点和内置对象;(Web)

答:

关于javascipt:

1)优点:

简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;

2)缺点:

不适合开发大型应用程序

3)javascript有11种内置对象:

Array,String,Date,Math,Boolean,Number,Function,Global,Error,RegExp,Object

20.get和post的区别?

(Web)

答:

form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET

和POST方法。

二者主要区别如下:

1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据;

2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL

后面,并且两者使用“?

”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,

Post的所有操作对用户来说都是不可见的;

4)Get传输的数据量小,这主要是因为受URL长度限制,而Post可以传输大量

的数据,所以在上传文件只能使用Post;

5)Get限制form表单的数据集必须为ASCII字符,而Post支持整个ISO10646

字符集;

6)Get是form的默认方法。

22.写出你熟悉的开源框架以及各自的作用。

答:

框价:

hibernate,spring,struts.

Hibernate主要用于数据持久化;

Spring的控制反转能起到解耦合的作用;

Struts主要用于流程控制;

服务器类:

ApacheTomcatJboss等

25.JSP标签的作用?

如何定义;(Web)

答:

作用:

分离jsp页面的内容和逻辑;

业务逻辑开发者可以创建自定义标签;

封装业务逻辑;

可重用并且易维护;

易于手工修改、易于工具维护;

提供简洁的语法;

定义:

写标签处理器;

写tld文件;

讲标签处理器和tld文件放到同一个包里面;

把jsp页面和标签库配置部署在一起。

26.写一个自定义标签;(Web)

答:

代码如下:

importjavax.servlet.jsp.tagext.*;

importjavax.servlet.jsp.*;

importjava.io.*;

publicclassTimeTagextendsSimpleTagSupport{

privatebooleanisServer=true;

publicvoidsetServer(booleanisServer){

this.isServer=isServer;

}

publicvoiddoTag()throwsJspException,IOException{

JspWriterout=getJspContext().getOut();

if(isServer){

out.println(newjava.util.Date());

}else{

out.println("");

out.println("document.write(newDate());");

out.println("");

}

}

}

27.写出熟悉的JSTL标签;(Web)

答:

如下:

if>

forEach>

set>

import>

redirect>

28.说出struts中的标签;(Web)

答:

如下:

message/>

errors/>

include/>

messages/>

define/>

html>

write/>

form>

resource/>

link>

cokkie/>

text>

heder/>

present/>

parameter/>

equal/>

size/>

29.如何从form表单中得取checkbox的值;(Web)

答:

可在页面把checkbox的name属性取同一个,value属性取每个条目的id,后台用getParamter(“name”)能取到checkbox的一组值。

30.简述HttpSession的作用、使用方法,可以用代码说明。

(时间3分钟)(Web)

答:

HttpSession中可以跟踪并储存用户信息,把值设置到属性中,有2个方法:

setAttribute(),getAttrribute();

例如:

在一个方法中用session.setAttribute(“student”,st

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

当前位置:首页 > 幼儿教育

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

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