java面试题

1、ArrayList和Vector的区别,HashMap和Hashtable的区别

答:就ArrayListVector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMapHashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

2、 char型变量中能不能存贮一个中文汉字?为什么?

答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

3、 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

答:多线程有两种实现方法,分别是继承Thread类实现Runnable接口
同步的实现方面有两种,分别是synchronized,waitnotify

4、 jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

 

 

5、  JSP中动态INCLUDE与静态INCLUDE的区别?
答:
动态INCLUDE用jsp:include动作实现
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

6、  说一说Servlet的生命周期?

 

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

 

 

7、  Class.forName的作用?为什么要用?
答:
调用该访问返回一个以字符串指定类名的类的对象。

 

8、  MVC的各个部分都有那些技术来实现?如何实现?
答:
MVC是Model-View-Controller的简写。”Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), “View” 是应用的表示面(由JSP页面产生),”Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

 

9、  J2EE是什么?
答:
Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层

 

10、CORBA是什么?用途是什么?
答:
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:
用不同的程序设计语言书写
在不同的进程中运行

为不同的操作系统开发




JAVA应届生面试题库

题量:20道题,初级8道,中级12道,高级2道

范围:Java语言基础、数据结构、线程、JDBC、JSP/Servlet、EJB、Socket 10、文件10性

Rmi、WebService、Swing)

【题号】1

【级别】初级

【验证】正确

【题目】

class A{

void f(){System.out.println(”A.f”);}

}

class B extnds A {

void f (int   i){System.out.println(”B.f”);}

}

class C extends B {

void f(){System.out.println(”C.f”);}

}

class D

{   public static void main(String arg[])

{    Aa=new A();

a.f():

Bb=new B();

b.f();

Cc=newc();

c.f();

}

}                                                 。

JAVA D 运行结果是什么

【参考答案】

A.f

A.f

C.f

【题号】2

【级别】初级

【验证】正确

【题目】说出两种方法遍历一个HashMap,获取所有的Key和Value?

【参考答案】

1种方法:取出Key,根据每个Key逐个取出Value。

2种方法:取出Entry进行遍历获取键值对,取出其中的SetKey和Nalue

 

【题号】3

【级别】初级

【验证】正确

【题目】

请简述Ssrvlet的生命周期,以及各阶段Servlet容器所做的事。

【参考答案】

Sevlet引擎首先加载servlet类并调用其init()方法。完成init()  方法后,SERVLET处

于准备状态,可以响应请求,要从服务器中删除时,引擎调用servlet的d estroy()方法以

释放资源,d estroy()方法完成后,服务器回收内存。

【评分标准】

至少答出init、准备、destroy三个状态。

【题号】4

【级别】初级

【验证】正确

【题目】

请至少答出5个Jsp中的内置对象及其用途?

【参考答案】

request:封装来自用户的请求。

response:封装由JSP产生的响应,并被发送回客房端以响应请求

session:表示为发出请求的客户端建立的会话。

application:表示JSP正在招待的上下文。

out:表示输出流。

config:表示servlet的配置。

page:页面对象,表示JSP本身,同this。

exception:指的是运行时的异常,只在错误页面(就是页面指令有                                                                         isErrorPage=true属性的页面)中才有。                                                  pageContext:页面级的上下文对象。

【题号】5

【级别】初级

【验证】正确

【题目】中创建一个线程有哪两种方式:

【参考答案】

从类Thread继承和实Runnable现接口

【题号】6

【级别】初级

 

 

 

【验证】正确

【题目】说一Java下语言访问限定符在类、内部类、方法、属性中使用和作用域

例如:public用于:类、内部类、方法、属性、作用域:全局

【参考答案】

Private     用于:内部类、方法、属性,作用域 :类内部

Protected   用于:内部类、方法、属性,作用域 :类内部、子类、同一个包类

缺省        用于;类、内部类、方法、属性,作用域:类内部、同一个包的类

 

【题号】7

【级别】初级

【验证】正确

【题目】

名词解释

SOAP,UDDI,WSDL。

【参考答案】

SOAP:Simple Object Access Prtocol,简单对象访问协议,基于XML]语法定义

的对象远程调用协议,主要目标是提供类似PC的接口.

UDDI:Universal Description Disvery Integration,统一描述发现与集成,用           

于描述WebService组件的描述、发现、集成规范

WSDL:Web Service Description Language,基于XML语法定义的用于描述

WebService接口的描述语言。

【题号】8

【级别】初级

【验证】正确

【题目】在普通应用程序中用JDBC做一个数据库事务,程序片断如下请填空:

String driver=“com.informix.jdbc.ifxDriver”;

String url=

“jdbc:informix-sqli://11.6.6.11:9002/test:INFORMIXSERVER=ifx”;

String user=“informix”;

String password=“informic”;

String sql=“update TESTDB set status=‘2’ ”

1

Connection conn=   2

Statement stment=conn.createsStatement();

Try

{

3                                                                          ;

stment .executeUpdate(sql);

4

        5       

        6            

}

catch(SQLException e)

{

try

{

        7       

        8       

9

}

catch(SQLException el)

{ //do nothing}

}

 

[参考答案]

1、Clall.forName(driver)

2、DriverManager.getConnection();

3、conn.setAutoCommit(false)

4、conn.commit()

5、stment.close()

6、conn.close();

7、conn.rollback();

8、stment.close()

9、conn.close()

这个题建议不要考这么多close(),因为实际应用的时候可能不是每次都要关闭的。至少CONNECTION对象是这样.Close()在一个地方考就可以了.

建议考下面的语句:

事务执行完毕之后要养成好习惯,把autoCommit设为true,避免影响这个 CONNECTION的后续使用。

 

【题号】9

【级别】初级

【验证】正确

【题目】

class Valhold{

public int i=10

}

public class Obparm{

public static void main(String argv{}){

Obparm o =new 0bparm();

o.amethod();

}

 

public void amethod (){

INT I=99

ValHold v =new ValHold();

v.i=30;

Another(v.i);

System.out.print(v.i);

}//End of amethod

public void another(ValHold v.int i){

i=0

v.i=20;

ValHold vh =new ValHold();

V = vh;

System.out.print(v.i);

System.out.print(v.i);

}//End of another;

}

运行结果是?

【参考答案】10020

【题号】10

【级别】中级

【验证】正确

【题目】下面是一段读取d盘下test.txt文件内容,并打印其内容指出下面

代码中的错误并改正。

import jav aio.*;

public class FileTest

{

public staticvoid main (String[]args)

{

 

File f=new File(“d:/test.txt”)

Byte[]b=new byte[1024;

Int point=0

While((poin=fi.read(b))!=-1)

{

for(inti=0;i《point;i++)

{

System.out.pnint(b[i]);

}

}

}

 

 

 

【参考答案】

1、文件输入流使用错误,不应该使用File,应该使用Filelnputstream。

2、文件名格式错误,应该是d://test.txt。

3、没有捕获I0异常。

4、输入流没有关闭。

修改后的代码为:

import java.io.*;

public class FileTest

{

public tatic void main (String{} args){

FileinputStream fi =null;

try{

fi =new FileinputStream(”d://test.txt“);

.      byte[] b=new byte[1024];

int point = 0

while((point=fi.read(b))!=-1){

for(int i=0;i〈point:i++〉{

System.out.print(b[i]);

}

}

fi.close();

}catch(IOException e){}

finally{

try{

if (fi != null){

fi.close();

}

}catch(IOException ioe){}

}

}

这里不太好吧,文件后缀名为txt,但是直接打印字节不太好。建议把est.txt换成tet.dat。【题号】11

【级别】中级

【验证】正确

【题目】写一段代码建立一个直角在左下角的等腰直角三角形的二维数组,腰的长度是10,数组元素是String,需要赋初始值为(x,y),其中x,y为坐标的位置,从左下角为顶点(0,0),依次向上向右增加1。程序片断如下,请填空:

String[][]trg =    1

for(int i=   2    ;  i)=0;i-)

{

trg[i]=     3    ;

for(int j=0; j〈      4         ; j++)

 

{

trg[i][j]=        5      

}

}

for(int i=9;i)0;i–){

for(int j=0;j《trg[i],length;j++){

 System.out.print(trg[i][j]);

}

 

 

【参考答案】

1、new String[10][]

2、9

3、new STRING[10-I]

4、trg[i].length

5、“(”+|i+”.”+j+”) ”

 

 

 

 

 

 

【题号】12

【级别】中级

【验证】正确

【题目】描述一下LinkedList.MrrayList,Vector的区别,例如,

数据存储,特性,性能等。

【参考答案】

LinkedList 使用双链表来实现,插入性能好,方法不是同步的,查找比

ArrayList慢,适用于数据频繁改变的场合.

Vector实现方式同ArrayList,方法是同步的

【题号】13

【级别】中级

【验证】正确

【题目】写一段代码应用BorderLayout管理器,在东南西北中四个方位各加入

一个按钮。

【参考答案】

setLayout(new Borderlayout();

add(new Button(“东”),BorderLayout.EAST      ;

add(new Button(“西”),BorderLayout.WEST ;

add(new Button(“中”),BorderLayout. CENTER;                                 

add(new Button(“北”),BorderLayout.NORTH ;

add(new Button(“南”),BorderLayout. SOUTH;

 

 

 

 

 

【题号】14

【级别】中级

【验证】正确

【题目】考虑用自己的类实现StringBuffer的字符串相加功能,要求越接近StringBufferr的性能越好,请说出其中数据存储和扩充长度的思路。

【参考答案】

思路1:使用char[]来保存字符串,扩充长度的时候使用System.arraycopy()把老的数组中的数据自制到新的数组中。

思路2:使用List/Vector来保存字符串,自动扩充长充。

 

 

【题号】15

【级别】中级

【验证】正确

【题目】填空:实现一个Socket服务端,(10。76。149。158:1800)接收客户端发送的消息并显示。

MyServertest.java

import java.net*;

import java .io*

public class MyServerTest

{

public static void main(String[] args) throws IOException{

ServerSocket myserversocket=null

try{

myserversocket=      1    

}catch(IOException e){

System.err.println(”Count not listen on port.”);

System.exit(1);

}

Soxket myclientSocket = null

try {

myclientSocket =        2     

}catch(I0Execption e){

System.err.println(”Accept failed”);

System.exit(1)

}

DataInputStream myinstream =new DataInputStream(new

BufferedInputStream(       3       ))

;      String inputline = myinstream.readling()EAST)

System.out.println(inputline)

            4              

myclientSocket.close()

myserversocket.close();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【评分标准:每题10分,多选题和多个填空题全对得满分,如果部分答对:填空题按照填对的个数得部分分数,多选题中的答案如果其中有选错的选项别不得分,选对了但是不全面得3分,总分为50分合格,80分优秀】。

一、填空题:

1、Java的基本数据类型:                                             

【答案】int,long,char,byte,short,boolean,float

2、有一个类定议如下:

package com.huawei.test;

public clasxs Definition

{

proctected void test1()

{

System.out.println(”This is Definition.test1()”)

}                                                                      void test2()                                                                        {

System.out.println(“ThisisDefinitiontest2()”

}

}

请分别选择可以访问test1()和test2()两个方法的范围:

a.Definition类内部可以访问

b.com.huawei.test包中所有其它的类可以访问

c.该应用程序中所有的类可以访问

d.继承Definition的子类可以访问

【答案】test1:a b d         test2:a b

二、单选题:

1、关于package和 import关键字下面说法错误的是:

a.如果一个类不指这package,就会被归类到默认的 package

b.package关键字必须放在 import关键字之前

c.import关键字必须放在 package关键字之前

d.虚拟机已经缺省引入了java.lang.*包,所以编写程序的时候不需要引主该包

 

 

 

[答案]C

2、关于java的集合下面说法错误的是:

a.Treeset、hashset   set

b.为了达到最优算法放入到Hashset和hashmap的对象都要求定义合理的                       hashcode值

c.从linkedlis中获取迭代器iterator,操作该iterator的同时可以修改原                        来的linkedlist

d.Map用于存放键值对,HashMap使用哈希算法,TreeMap能够对存放的键进行排序。

[答案]C

3、关于数据库连接池下而详法错误的是:

1)数据库连接池可以提市并发访问数据库的性能

2)客户程序使用连接池访问数据库时,必须从连接池获取连接

3)客户程序从连接池获取的连接使用完之后必须关闭物理连接

4)连接池需要对可用的空闲连接进行维护

[答案]3

4、关于StringBuffer下面说法错误的是:

a.StringBuffer是从BufferedWriter继承,用作字符串输出

b.使用StringBuffer可以提高多个字符串相加的效率

c.多个字符串相加使用StringBuffer不会产生较少的内存碎片

d.StringBuffer和String的区别在于StringBuffer是可以修改的,string是只读的

[答案]a

 

三、多选题

1、关于类路径下面说法正确的是:

1)运行Java程序时如果用到了其它目录中的类必须指定类路径,或者在环境变量中设置类路径

2)class文件的类路径必须指定到文件名

3)class文件的类路径只需要指定到包的要目录

4)jar文件包的类路径只需要指定到该文件的目录

[答案]1 3

2、关于线程下面说法正确的是:

a.Java中的线程优先级分为10级

b.通过调用线程的run()方法启动一个线程

c.通过调用线程的start()方法启动一个线程

d.通过调用线程的stop()方法可以安全的停止一个线程

【答案】a c

3、下面哪种类型的程序是运行在浏览器上

a.JSP

b.JavaScript

c.Servlet

d.Applet

【答案】b d

四、应用题

1、下面程序建立一个服务器通过监听8080端口向客户端输出“Welcome!”字符串,请补充缺少的程序片断:

public class WelcomeServer

{

public static void main(String[]a)throws IOException

{

          1          

system.out.println(”WelcomServer started!”)

while(true)

{

Socket client =       2    

system.out.println(”A client come!”)

try

{

printWriter = new printWriter(

new Bufferedwriter(    3       4   )))

writer.println(”Welcome!)

}

catch(IOException ioe)

{

system..out.println(”something error!”)

}

finally

{

try

{

        5       

}

catch(IOException ioe2)

{

Syxtem.out.println(”Something error!”)

}

}

}

}

[答案]

1 ServerSocket server = new ServerSOCKET(8080)

2 server.accept()

3 new OutputStreamWriter

4 client.getOutputStream()

5 client.close()

 

 

 

 

 

[题目1]有代码如下:
public class Test

{

public inti = 0

public static void main(String[]args)

{

Test t1 = new Test();

Test t2 = t1;

T1.i = 1

Sysem.out.println(t2.i);

String a =”abc”

String b = a;

a = ”123”;

System.oukt.println(b);

}

}

请给出运行结果。

 

[题目2]

请简述Servlet的生命周期,以及各阶段Servlet容器所做的事。

 

[题目3]在普通应用程序中用JDBC做一个数据库事务,程序片断如下请填空:

String driver = “com.informix.jdbc.IfxDriver”;

Sring ur1 =

“jdbc:informic-sq1i://11.6.6.11:9002/test:INFORMICERVER=ifx”;

String uer = “informix”;

String password = “update TESTDB set status=’2’”;

 

     1    

Connection conn =      2    

Statement stment = conn.createStatement();

Try

{

     3    

stment.executeUpdate(sq1)

     4   

}

catch(SQLException e)

{

try{

     5    

}

catch(SQLExecption e1)

{//do nothing}

}

finally {

try {

     6    

     7    

}

}

 

 

 

 

 

[题目4]

名词解释:SOAP,UDDI,WSDL。

 

[题目5]下而是一段读取d 盘下test.txt文件内容,并打印其内容请指出下面代码中的错误 ,并改正。

Import java.io.*;

Public class File Test

{

public static void main(String[]args)

{

File f = new File(”d:/test.dat”);

Byte[]b = new byte[1024];

Int point = 0;

While ((point=fi.read(b))!=-1)

{

for(int i=0;i〈point;i++)

{

System.out.print(b[i];

}

}

}

}

 

[题目6]描述一下LinkedList,ArrayList,Vector的区别,例如:数据存储,特性,性能等。

 

[题目7]填空:实现一个Socket服务端(10。76。149。158:1800)接收客户端发送的消息并显示。

MyServertest.java

import java.net.*

import java.io*

public class MyServerTest

{

public static void main(String[] args)throws IOException{

ServerSocket myserversocket =null

try{

Myserversocket =          1       

}catch(IOException e ){

System.err.println(”Count not listen on port.”)

System.exit(1)

}

Scket myclientSocket = null

try{

myclienSocket =          2       

}catch(I0Exception e){

System.err.println(”Accept failed.”)

System.exit(1)

}

DataInputStream myinstream = new DatainputStream(new BufferedinputStream(     3    ));

String inputLine = myinstream.readLine();

System.out.println(inputLine);

             4              

myclientSocket.close();

myserversocket.close(0;

}

}

 

ClientSocket.java

Import java.net.*;

Import java.io.*;

 

 

Public class ClientSocket

{

public static void main(String[] args)throws IOException

{

Socket clientsocketl = null;

printStream out = null;

try

{

 

clientsocketl =          5        

out =                6              

}

catch(UnknownHostException e)

{

System.err.println(”Don’t know about host!”);

System.exit(1);

}

catch(IOException e )

{

System.err.printn(”Couldn’t get I/0 for the connection”);

System.exit(1);

}

String toServerString = ”this is  a test!”

            7            

out.close();

clientsocketl.close();

}

}

 

 

[题目8]试编写一个多线程的程序。

要求:主程序中启动2个线程,一个线程每次向一个队列里加入一个对象,当队列满时就需要等待,另一个线程每次从这个队列里列了一个对象,当队列空时就需要等待。队列要求用自己设计的类来实现。

 

 

[题目9]

填空:完成下列UDP客户羰程序向服务器host,端口4000发送一条消息“Hello UDP world”,并将返回顾消息输出到标准输出。

Import java.io.*;

Import java.net.*;

Public class Simpe UDPClient

{

public static void main(String[]args)

{

 

 

int port = 4000

 

try

{

 

 

DatagramSocket socket =          1         

Socket.setSoTimeout(5000);

String out Message = “Hello UDP world!”

     2      data =           3         

Datagrampacket pcket = new DatagramPacket(data,data.length,)

           4                        5            );

           6              

packet.setData(        7       

packet.setLength(512)

             8          

String inMessage =              9          

System.out.println(”Received message:”+inMessage);

Socket.close();

}

catch(IOException e)

{

e.printStackTrace():

}

}

}

 

 

[题目10]JSP页面重定向有哪些方式?有什么区别?

 

 

 

1、有代码如下:

public class Test

{

public int I = 0

public static void main(String[]args)

{

Test tl = new Test(0);

Test t2 = t1;

Tl.i = 1

System.out.println(t2.i);

String a = ”abc”;

String b = a;

A = ”123”;

System.out.println(b);

}

}

请给出运行结果。

 

 

 

 

 

2、谈一谈Java中运行时间异常(RuntimeException及其子类)类和一般异常类的区别和联系?

 

 

 

 

 

 

3、Java2类库:你知道的集合类或接口有哪些?给出其中的主要方法。

 

 

 

 

4、描述一下LinkedLIST,ArrayList,Vector的区别,例如:数据存储,特性,性能等。

 

 

 

 

5、JSP有哪些内置对象?并写出这些对象的主要方法。

 

 

 

 

6、你知道的Java Web Server或App Server有哪些?

 

 

 

 

7、页面重定向有哪些方式?有什么区别?

 

 

 

 

8、试编写一个访问Informix数据库的程序。

要求:从数据库中查询出basetab-0210表中的所有记录,输出形式不限。

URL:jdbc:informix-sqli://10.76.149.192:9002/portal:INFORMIXSERVER=smp-online Drever:com.informix.jdbc.IfxDriver

登录数据库用户免去:informix

口令:informix

 

 

 

 

 

9、试编写一个多线程的程序,分别启动两个线程,分别向一个消息队列中插入和读取消息,消息队列最大长度为100。

 

 

 

 

 

 

10、编写一个TCP通信程序,与10.76.149.191.端口号7。

程序启动时与服务建立连接,然后进入如下徨:

从System.in读取一地字符串,发送给服务器,然后从服务器取得相应数据,输到System.out

 

 

 

 

 

 

11、下面是一段读取d盘下test.txt文件内容,并打印其内容请指出下面代码中的错误,并改正。

Import java.io.*

Public class File Test

{

public static void main (String[]args)

{

File f = new File(”d:/test.dat”);

Byteee[]b = new byte[1024];

Int point = 0

While ((point = fi.read(b))!= -1)

{

for(int i=0;i〈point;i++)

{

System.out.print(b[i];

}

}

}

 

 

 

 

 

 

12、请实现一个双向链表类。

 

 

 

 

 

 

 

 

姓名:              开始时间:                      面试人:

 

 

 

1、internet是基于什么协议的?哪个应用层的协议使用的最广泛?

[参考答案]internet是基于 tcp/ip协议的

http协议使用最广泛

[评分标准]

 

 

 

 

 

 

 

2、列举几个JDBCA中常用的类或接口

[参考答案]

1、DriverManager加载驱动并连接到数据库

2、Connection数据库连接对象

3、Statement用来建立和执行语句

4、ResultSet sql语句执行的结果

5、DatabaseMeta数据库和结果集的元信息

6、preparedStatement预编译的Statement

7、CallableStatement用来执行存储过程的Statement

8、SQLException所有jdbc类或接口抛出的异常

[评分标准]

至少答出前面4个

 

 

3、谈一谈Java中运行时间异常(RuntimeException及其子类)类和一般异常类的区别和联系?

[参考答案]

1)运行时间异常类和一般异常类的祖先是Exception;

2)运行时间异常类通常用于发现编程错误,而一般的异常类用于发现程序执行过程中;出现的一些异常情况;

3)运行时间异常类不用在throws子句中声明,而一般的异常类必须在throws子句中声明;

4)二者都可以使用catch捕获;

[评分标准]

 

4、说出下面程序的运行结果

class A {

voia f(){System.out.println(”A.f”);}

}

class C extends B{

void f(){System.out.printn(”c.f”)

}

class D

{  public static void main(String arg[])

{ Aa = new A()

a.f();

Bb = new B()

b.f()

Cc = new C()

c.f();

}

}

JAVA D运行结果是什么

 

 

 

[参考答案]

A.f

A.f

C.f

[评分标准]全部答对得10分

 

 

5、请说一说下面这个程序在不同平台下的表现,并说明你的理由

class printThread extends Thread

{

private String msg;

public printThread(String msg){this-〉msg = msg;}

public void run()

{

while (true)System.out.println(msg);

}

}

public class MainThread

{

printThread ptA = new printThread (”This is printThread A!”)

pringThread ptB = new printThread (”This is printThread B!”)

ptA.start();

ptB.start();

}

}

[参考答案]

1)如果是在Windows平台上,两个线程会交错地在终端上打印出各自的信息,原因是线程是分时调度的;

2)如果是在Solaris上,且线程实现方式为“绿色线程”(green thread),会发现只有线程A的信息会在打印在终端上,原因是这种方式下的线程调度导致线程A独占了整个系统;而如果线程实现方式为“本地线程” (native thread),则和Windows平台下的表现一样。

 

 

 

 

6、请举出JDK中运用了哪些设计模式?至少举出3种

[参考答案]

Factory Method  :  SocketFactor.createSocket()

SSLSocketFactory.createSocket(),DataSource.getConnection()

Collection.iterator()等

Iterator:集合类的Iterator接口

Adaptou:XMLReaderAdapter将SAX2 XMLReader接口适配成SAXI Parser接口,ParserAdaptor则反过来

Strategy:javax.swing.text.FlowView类的 FlowStrategy成员变量

Singleton:FlowStrategy 一般是所有FlowView实例共享的一个单件

Observer:javax.servlet.  ServletContext和   javax.servlet.

SerletContextAttributelistener 就是 Observer模式。

等等

[评分标准]

答出3个给2分,多答一个给0.5分,满分为3分。

 

 

 

 

7、简述有哪几种状态,这三种状态分别在什么情况下从哪种状态转换到哪种状态。

[参考答案]

三种状态:不存在、池化、就绪

转换:

不存在→池化:

条件:容器需要创建实体Bean时

不存在←池化:

条件:容器要减小池的容量

池化→就绪

条件:客户端要创建一些新的数据库数据或需要同步底层数据库中的数据

池化←就绪

条件:客户端在Home上调用remove()方法或容器决定使用当前的实例为另外一个不同的用户服务或容器需要释放当前实例所占的资源

[评分标准]每点20%分

 

 

 

8、说出下面程序的运行结果

Son.java

Public clas Son extends Father{

Public static final int aaa = 555

 

Public Son(){

Super();

}

public int getAAA(){

return 666;

}

public static void main(String[]args){

Son son = new Son()

System.oukt.println(son.aaa);

System.out.println(son.gtAAA());

System.ut.println(((Father)son).aaa);

System.out.println(((Father)son).getAAA());

}

}

 

class Father{

public static final int aaa = 111

public Father(){

System.out.println(aaa);

System.out.println(getAAA());

}

public int getAAA(){

return 222

}

[参考答案]

111

666

555

666

111

666

[评分标准]

 

 

 

 

9、请列出Socket类的5个主要方法,不用写出参数,一组get/set方法算一个。

[参考答案]

bind,connect,setKeepAlive,setSendBufferSize,etSoTimeout,setTcpNoDelav,getInputStream,getOutputStream,getPort ,getRemoteSocketAddress,getReuseAddress,getChannel

[评分标准]答对5个的才可得分

 

 

 

10、请说出三种常用过滤输入流及其简单描述.

[参考答案]

1、BufferedinputStream:用来实现流数据得缓冲,提高访问速度。

2、CheckedinputStream:校验流,可以和压缩流一起使用,计算校验和。

3、DateinputStream:数据输入流,可以读取各种类型数据,并且可以按行读取。

4、GZipinputStream:Gzip格式输入流。

5、ZipinputStream:Zip格式输入流。

6、LineNumberInputStream:行输入流。

7、PushackinputStream:可以缓存,并出入栈。

[评分标准]全部答对得10分,答对任意一点得2分。

 

[评分标准:每题10分,多选题和多个填空题全对得满分,如果部分答对;填空题按照填对的个数得部分分数,多选题选中的答案如果其中有选错的选项不得分,选对了但是不全面得3分]

一、填空题

1、Java基本数据类型:                                       

2、有一个类定义如下:

package com.huawei.test;

public class Definition

{

proctected void test1()

{

System.out.println(”This is Definition.test1()”);

}

void test 2()

{

System.out.println(”This is Definition.test2()”);

}

}

请分别选择可以访问test1()和test2()两个方法的范围:test1()              ,test2()             

a.Definition类内部可以访问

b.com.huawei.test包中所有其它的类可以访问

c.该应用程序中所有的类可以访问

d.继承Definition的子类可以访问

 

 

二、单选题

1、关于package和import关键字下面说法错误的是:

a.如果一个类不指不定package,就会被归类到“默认的”package

b.package关键字必须放在import关键字之前

c.import关键字必须放在关键字package之前

d.虚拟机已经缺省引入了java.lang.*包,所以编写程序的时候不需要引入该包

2、关于Java的集合下面说法错误的是:

a.TreeSet、HashSet都实现了 Set接口,用于存存入唯一对象集

b.为了达到最优算法放入到Hashhhset和HashMap的对象都要求定义合理的hashCode值

c.从LinkedLis中获取迭代器 Iterator,操作该Iterator的同时可以个性原来的 LinkedLit

d.Map用于存放键值对,HashMap使用哈希算法,TreeMap能够对存放的键进行排序

3、关于数据库连接池下面说法错误的是;

a.数据库连接池可以提高并发访问数据库的性能

b.客户程序使用连接池访问数据库时,必须从连接池获取连接

c.客户程序从连接池访问数据库时,必须从连接池获取连接

d.连接池需要对可用的空闲连接进行维护

4、StringBuffered下面说法错误的是:

a.StringBuffer是从 BufferdeWriter继承,用作字符串输出

b.使用StringBuffer可以提高多个字符串相加的效率

c.多个字符串相加使用StringBuffer不会产生较少的内存碎片

d.StringBuffer 和String的区别在于 StringBuffer是可以修改的,String是只读的

 

 

 

三、多选题

1、关于类路径下面说法正确的是:

a.运行Java程序时如果用到了其它目录中的类必须指定类路径,或者在环境变量中设置类路径

b.class文件的类路径必须指定到文件名

c.class文件的类路径只需要指定到包的根目录

d.jar文件包的类路径只需要指定到该文件的目录

 

2、关于线程下面说法正确的是;

a.Java中的线程优先级分为10级

b.通过调用线程run()方法启动一个线程

c.通过调用线程的start()方法启动一个线程

d.通过调用线程stop()方法可以安全的停止一个线程

 

3、下面哪种类型的程序是运行在浏览器上;

a.JSP

b.JavaScript

c.Servler

d.Applet

 

 

应用题:

1、下面程序建立一个服务器通过监听8080端口向客户端输出“Welcome!”字符串,请补充缺少的程序片断:

public class WelcomeServer

{

publilc static void main(String[]a)throws IOException

{

      1    

System.out.println(“WelcomeServer started!”);

While(true)

{

Socket client =          2       

System.out.println(“A cient come!”)

Try

{

printWriter writer = new PrintWriter(

new BufferedWriter(       3         4     )))

writer.println(“Welcome!”)

}

catch(IOException ioe)

}

finally

{

try

{

        5          

}

catch(IOException ioe2)

{

System.out.println(“Something error!”);

}

}

}

}

 

 

[评分标准:每题10分,多选题和多个填空题全对得满分。如果部分答对:填空题按照填对的个数得部分分数,多选题中的答案如果其中有选错的选项不得分,选对了但是不全面得3分,总分50分合格,80分优秀]

一、填空题:

1、Java的基本数据类型:                            

[答案]int,long,char,byte,short,boolean,double,float

2、请描述一下编译后,在控制台执行命令的的输出结果:           

 Testjava 内容如下:

Class A

{

public A()

{

System.out.print(“A”)

}

}

class Bextends A

{

public B()

{

System.out.print(“B”)

Aa = new

}

}

public class Test

{

public Test()

{

System.out.print(“Test”)

}

public static void main(String[]a)

{

Bb = new B()

}

}

[答案]ABA

 

 

二、单选题

1、关于接口下面说法错误的是:

1)接口不能有protected修饰的方法

2)接口不能有static修饰的方法

3)接口的属性都是public final static,所以属性的值不能修改

4)一个类只能实现一个接口

[答案]4

 

2、关于的集合下面说法错误的是:

1)TtreeSet、HashSet都实现了Set接口,用于存放唯一的象集

2)为了达到最优算法放入到HashSET和HashSetMap的对象都要求定义合理的hashcode值

3)从LinkedLis中获取迭代器SIterator,操作该的同时可以修改原来的Linkedlist

4)Map用于存放键值对,HashMap使用哈希算法,TreeMap能够对存放的键进行排序

[答案]3

 

3、关于JSP/Servlet下面说法错误的是;

1)JSP在执行之前被编译成了Servle

2)JSP中可以直接访问SESSION,REQUEST,RESPONSE,OUT等对象

3)JSP标签在浏览器上执行

4)一个Servle实例可以同时为多个客户商服务

[答案]3

 

4、关于Java中的IO下面说法错误的是:

1)InputStream/OutputStream和Reader/Writer的区别是前者是字节流后者是字符流

2)InputStream/OutptSTREAM和Reader/Writer的区别是前者是二进制流后是文本流

[答案]2

 

三、多选题

1、对于Java数组的理解下面说法正确的是:

1)数组是一个从Object中继承的对象

2)数组是一种基本数据类型

3)数组的长度可以动态改变

4)数组的元素可以是对象

[答案]1、4

 

2、关于内部类下面说法正确的是:

1)内部类可以访问主类中的任何方法或属性

2)可以在方法内部定义一个内部类

3)实例化主类的时候,其内部类也会自动被实例化

4)一个类不能实例化另一个类的公有内部类

[答案]1、2

 

3、关于JDBC下面说法正确的是:

1)加载不同的JDBC驱动程序就可以连接到不同类型 的数据库

2)在一个连接(Connection)上可以同时执行不同的语句(Statement)

3)通过设置一个语句(Statement)的属性就可以做一个数据库事务

4)通过在线结果集(ResultSet)可以在查询结果中直接更新数据库

[答案]1、3

 

四、应用题:

1、下面程序建立一个服务器通过监听8080端口向客户端输出“Welcome!”字符串,请补充缺少的程序片断:

public class WelcomeServe

{

public static void main(String[]a)throws IOException

{

          1          

System.out.println(“WelcomeServer started!”)

While(true)

{

Socket client  =       2     

System.out.println(“A client come!”)

Tur

{

printWriter writer = new printWriter()

new Buffered Writer(     3           4      )));

writer.println(“Welcome!”)

}

catch(IOException ioe)

{

System.out.println(“Something error!”)

}

finally

{

try

{

        5         

}

catch(IOException ioe2)

{

System.out.println(“Something error!”)

}

}

}

}

[答案]

1、ServerSocket server = new ServerSocket(8080

2、server.accept()

3、new OutputStreamWriter

4、client.getOutputStream()

5client.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值