JAVA经典笔试题目及答案(精选7套)

JAVA经典笔试题目及答案(精选7套)

编程语言可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动,下面是小编收集的JAVA经典笔试题目及答案,欢迎大家阅读和参考。

JAVA笔试题目及答案1

一、选择题(共50题,每题1.5分,共75分。多选题选不全或选错都不得分。)

1. 以下属于面向对象的特征的是(C,D)。(两项)

A) 重载

B) 重写

C) 封装

D) 继承

2. 以下代码运行输出是(C)

public class Person{

private String name=”Person”;

int age=0;

}

public class Child extends Person{

public String grade;

public static void main(String[] args){

Person p = new Child();

System.out.println(p.name);

}

}

A) 输出:Person

B) 没有输出

C) 编译出错

D) 运行出错

3. 在使用super 和this关键字时,以下描述正确的是(A)

A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的面是否是一个错误处理页面,

C.决定是否支持EL表示,

D.没有具体的含义。

附:在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

16.下面关于Java的引用,说法正确的是:B

A.应用实际上就是指针

B.应用本身是Primitive

C.引用就是对象本身

D.一个对象只能被一个引用所指引

附:primitive主数据类型,也称之其为基本数据类型,

还有一种为引用数据类型:引用数据类型,顾名思义就是:“引用”,当一个对象赋值给一个引用变量时,那么,则表明这个引用变量是指向这个对象的;一个对象可以有多个引用;一个引用同一时刻,则只能指向一个对象;

17.对于import java.util包,以下那种说法是错误的**?C**

A. Vector类属于java.util包

B. Vector类放在…/java/util/目录下

C. Vector类放在java.util文件中

D. Vector类是Sun公司的产品

18.在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?C

A.正好1000毫秒 B. 1000毫秒不到 C. >=1000毫秒 D.不一定

附:在程序sleep之后线程进入就绪态,在这种状态下,需要检查现在是否有资源允许现在的线程继续运行,如果条件不满足,则需要等待。如果是现在有资源则立即执行。

19.在WEB-INF目录下,必须存放的文件为:B

A.class文件 B.web.xml C.jar文件 D.html文件

20.下面关于垃圾收集的说法正确的是:D

A.一旦一个对象成为垃圾,就立刻被收集掉。

B.对象空间被收集掉之后,会执行该对象的finalize方法

C. finalize方法和C++的析构函数是完全一回事情

D.一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。

21.下面的语句会产生什么样的输出A

System.out.println(4

A.4 B.5 C.6 D.7 E.0

附:& 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,4的二进制为100(前面的0省略),7的二进制为111,即100 & 111 = 100,在计算机中1表示真,0表示假,最左边一位1&1=1,最右边一位0&1=0,所以输出4

22.下面的程序中,temp的最终值是什么?B

long temp=(int)3.9;

temp%=2;

A .0 B .1 C .2 D .3 E .4

附:浮点型强转int会丢失精度,所以前面的(int)3.9 会等于3,后面的temp%=2后temp=1;

23.下面哪个不是JAVA关键字A

Ainteger B double C float D default

24.Which method is used by aServletto place its session ID in a URL that is written to the servlet’s response output streamB

A. The encodeURL method of the HttpServletRequest interface.

B. The encodeURL method of the HttpServletResponse interface.

C. The rewriteURL method of the HttpServletRequest interface.

D. The rewriteURL method of the HttpServletResponse interface.

25.每个使用Swing构件的程序必须有一个**( ). D**

A.按钮 B.标签 C.菜单 D.容器

26.下列标识符(名字)命名原则中,正确的是**( ) D**

A.类名的首字母小写 B.变量和方法名的首写字母大写 C.接口名的首写字母小写 D.常量完全大写

27.类Test1定义如下:

1.public class Test1{

2.public float aMethod(float a,float b){return 0;}

3.

4.}

将以下哪种方法插入行3是不合法的。(B)

A、public float aMethod(float a,float b,float c){return 0;}

B、public float aMethod(float c,float d){return 0;}

C、public int aMethod(int a,int b){return 0;}

D、private float aMethod(int a,int b,int c){return 0;}

28.哪个语句创建了一个数组实例**?A**

A. int[] ia = new int [15];

B. float fa = new float [20];

C. char[] ca = “Some String”;

D. int ia [][] = {4, 5, 6} {1, 2, 3};

附:B不是一个数租,应该返回float[] ,C中是字符串应该返回String,D是二维数租,正确写法int[][] ia = {{4, 5, 6}, {1, 2, 3}};

29.以public修饰的类如:public class Car{…}则Car() A

A、可被其它程序包中的类使用

B、仅能被本程序包中的类使用

C、不能被任意其它类使用

D、不能被其它类继承

30.下列哪个属于容器型构件() C

A .JEditB.JButton C.JPanel D.JTextField

31.Java程序的执行过程中用到一套JDK工具,其中java.exe是指( )B

A.Java文档生成器 B.Java解释器 C.Java编译器 D.Java类分解器

32.下列关于构造方法的叙述中,错误的是**( ) C**

A. Java语言规定构造方法名与类名必须相同

B. Java语言规定构造方法没有返回值,但不用vold声明

C. Java语言规定构造方法不可以重载

D. Java语言规定构造方法只能通过new自动调用

33.构造函数何时被调用() B

A.类定义时 B.创建对象时 C.调用对象方法时 D.使用对象的变量时

34.break语句**( ) D**

A、只中断最内层的循环B、只中断最外层的循环

C、借助于标号,可以实现任何外层循环中断D、只中断某一层的循环

35.Java语言中下面哪个可以用作正确的变量名称**()B**

A、3DB、nameC、extendsD、implements

附:Java 中的变量名不能以数字开头。不能是关键字

36.在JavaScript中如何验证一个数据是否是数字(D)

A.如果用Integer.parseInt(value)有误就不是数字

B.int I = value若报错就不是数字,

C.没有方法验证

D.利用isNaN(value)返回的boolean进行判断

附:返回一个Boolean 值,指明提供的值是否是保留值NaN(不是数字)。

37.下面哪一个不能作JSP的服务器(D)

A. IBM WebSphereB. BEA WebLogic C. TomcatD. (道不同不相为谋什么意思?道不同不相为谋是一个汉语成语,意思是有不同志向的人,就不能在一起谋划。比喻意见或志趣不同的人就无法共事。出自孔子《论语·卫灵公》:“道不同,不相为谋。”)pws

38.下面哪项不是JSP操作指令(D)

A. getPropertyB. forward

C. includeD. import

39.如果希望控件在界面上按表格行分列排列,应使用下列那种布局管理器?( B)

A、BoxLayoutB、GridLayoutC、BorderLayoutD、FlowLouLayout

40.下面哪一项不是Java类访问控制关键字(C)

A. public B. protected C. this D. private

41.在配置tomcat虚拟目录时,需要打开哪个文件?(C )

A. index.jsp B. web.xml C.server.xml D.以上都不是

42.下面哪个不是表单标记(D)

A. INPUT B.RADIO C.CHECKBOX D. TR

43.下面哪项不是response对象的方法(C)

A. setContentType(String contentTypestr)

B. setHeader(String headername,String headervalue)

C. getParameter(String str)

D. sendError(int errorcode)

44.以下(B)是编写Servlet必须导入的包.

A.java.sql.* B.java.servlet.* C.java.util.* D.java.lang.*

45.下面哪项不属于SQL语句的子类(D)

A.数据定义语言(DDL)

B.数据查询语言(DQL)

C.事务控制语言(TCL)

D.数据插入语言(DIL)

46.选出所有正确的答案

public class Outer{

public void someOuterMethod() {

// Line 3

}

public class Inner{}

public static void main( String[]argv ) {

Outer o = new Outer();

// Line 8

}

}

Which instantiates an instance of InnerA

A. new Inner(); // At line 3

B. new Inner(); // At line 8

C. new o.Inner(); // At line 8

D. new Outer.Inner(); // At line 8

二、多选题

1.下列属于jsp中注释的有(AD)

A.<%–与--%>

B./

C./**与**/

D.

2.按照学生平均成绩(avg_grade) 将students表中的数据检索出来,下面SQL语句正确的是(ACD)

A) SELECT * FROM students ORDER BY avg_grade

B) SELECT * FROM students GROUP BY avg_grade ASC

C) SELECT * FROM students ORDER BY avg_grade DESC

D) SELECT * FROM students ORDER by avg_grade asc

3.下列是jsp作用域的通信对象的有(ABC)

A.Session

B.application

C.pageContext

D.cookie

4.在接口中以下哪条定义是正确的 (AB)

A. void methoda();

B. public double methoda();

C. public final double methoda();

D. static void methoda(double d1);

E. protected void methoda(double d1);

附:接口中的方法会被隐式的指定为public abstract(只能是 public abstract,其他修饰符都会报错)。

接口中的变量会被隐式的指定为public static final变量(并且只能是 public,用 private 修饰会报编译错误。)

5.下面哪个语句正确地声明一个整型的二维数组?CDE

A.int a[][] = new int[][];

B.int a[10][10] = new int[][];

C.int a[][] = new int[10][10];

D.int [][]a = new int[10][10];

E.int []a[] = new int[10][10];

6.下面哪些不是java的简单数据类型BC

A. short B. Boolean C. Double D. float

7.下面哪些语句能够正确地生成5个空字符串?AB

A.String a[]=new String[5];for(int i=0;i JAVA笔试题目及答案4

一、单选题

以下哪个不是SpringBoot默认支持自动装配的?(A)

A.spring-boot-starter-web

Bspring-boot-starter-data-redis

C spring-boot-starter-security

D mybatis spring-boot-starter

Spring中Bean的作用域不包括(D)

A、singleton

B、prototype

C、session

D. application

关系数据库中,实现表与表之间的联系是通过。(B)

A、实体完整性规

B、参照完整性规则

C.用户自定义的完整性

D、值域

当Redis作为数据库时,与Spring Boot整合使用的相关说明,正确的是(A)

A. @RedisHash("persons )用于指定操作实体类对象在Redis数据库中的存储空间

B. @ld用于标识实体类主键,需要手动指定id生成策略

C.使用Redis数据库,必须为实体类属性添加@Indexed属性生成二级索引

D编写操作Redis数据库的Repostory接口文件时,需要继承JpaRepository 接口

哪个关键字可以对对象加互斥锁。(B)

A, serialize

B, synichronized

C, transient

D, static

算法的确定性特征,以下不符合算法确定性的是:(D)

A. D- (B*B-4*A*C)

B. S- (L*H)/ 10

C.输入:X

D.输出: L/正整数

下列SpringMVC中用到的注解错误的一项。(A)

A @RequestMapping来指定请求的url,只能写在方法上

B @GetMappgin表示只能接收GET方式提交的请求

C @PostMapping表示只能接收POST方式提交的请求

D @RestController是个组合注解, 包括@Controller和@ResponseBody

Spring支持的事务功能包括(C)

A,事务的传播行为

B,事务回滚

C,全部选项

D,事务的隔离级别

下列哪种操作,最容易产生MySQL数据库的锁等待(C)

A、.执行 fromtwhere id> n (删除数百万行)

B、执行alter table对一个1000万行记录的表删除索引

C、执行alter table对一个1000万行记录的表增加列

D、执行alter table对一个1000万行记录的表增加索引

下列( B) 不属于MyBatis全局配置文件中的标签

A. settings

B. select

C. plugins

D. properties

以下数据库事务的隔离级别中哪一个有不可重复读,幻读(D)

A,读取未提交内容(Read Uncommited)

B,读取提交内容(Read Committed)

C,可重复读(Repeatable Read)

D,可串行化(Serializable)

以下哪个不是SpringBoot默认支持自动装配的? (B )

A spring-boot starter-web

B spring -boot starter-data-redis

C spring-boot- starter-security

D mybatis spring boot starter

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

A. Java程序经编译后会产生machine code

B、Java程序经编译后会产生byte code

C. Java程序经编译后会产生DLL

D.以上都不正确

下面对Spring框架的持久化支持说法错误的是(C)

A Spring没有自己的持久化方案,它集合了现有的流行持久化框架

B Spring采用JDBC模板封装了JDBC的数据库操作

C Spring对各种持久化技术提供了统一的编程方式

D Spring将数据库访问的checked异常转换为运行时异常

标记关于Spring核心容器,说法错误的是?(A)

A: Spring框架的所有功能都是通过其核心容器来实现的。

B:创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理。

C: ApplicationContext不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。

D:通常在Java项目中,会采用通过ClassPathXmlApplicationContex类来实例化ApplicationContext容器的方式, 而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。

下列说话错误的一项是:(D)

A SpringBoot项目启动本质上就是Spring的初始化操作

B. SpringBoot项目启动会加载所有的在spring factories中配置的监 听器

C SpringBoot项目启动的时候会发布相关事件,从而会触发对应的监 听器来完成对应的操作

D. SpringBoot项目启动就会加载bootstrap properties文件

下列关于Spring Boot自动配置原理的说法,错误的是(D)

A @SpringBootApplication只包含@SpringBooConfiguration、@EnableAutoConfiguration、 @ComponentScan 3个注解

B. @SpringBootConfiguration注解表示当前类为-一一个配置类并可以被组件扫描器扫描

C. @EnableAutoConfiguration的作用是启动自动配置,向容器中导入所有选中的自动配置类

D. @ComponentScan注解的主要作用是扫描指定包及其子包下所有注解类文件作为Spring容器的组件使用

描述Spring MVC正确的选项。(D)

A,在Spring MVC中,可以配置多个DispatcherServlet

B, DispatcherServlet在 Spring MVC中是核心servlet,它负责接收请求并将请求分发给适合的控制器

C,要使Spring MVC可用,DispatcherServlet需要在web xml中配置

D,全部选项

看程序进行分析: Public UserselectUser(String name ,String area).

select”fromuser user t whereuser name = #{0} anduser _area #(1)

#{0)表示哪一个参数?(B)

A.程序报错

B. name

C. area

D. 0

二、多选题

在关于依赖注入,描述正确的是。(BC)

A.依赖注入可以增强系统各组件的依赖关系

B.所谓依赖注入,就是明确地定义组件接口,独立开发各个组件,然后根据组件件依赖关系组装运行的设计模式

C依赖注入能多降低系统各组件的依赖关系,提倡面向接口编程

D Spring的依赖注入和控制反转是完全不同的两个概念

下列哪种说法是错误的。(A,B )

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

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

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

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

对mysql支持的复制类型描述正确的是? (ABC)

A,基于语句的复制

B,基于行的复制

C,混合类型的复制

D,单类型的复制

SpringMVC用什么对象从后台向前台传递数据的? (CB)

A将数据绑定到request

B返回ModelAndView

C通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前端就可以通过el表达式拿到

D绑定数据到Session中

下列描述有误的是? (CD)

A MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架

B. MyBatis的缓存分为级缓存和二级缓存,一级缓存放在 session里面

C. Mybatis是个全ORM (对象关系映射)框架,它内部封装了JDBC

D. MyBatis只可以使用XML来配置和映射原生信息

三、判断题

SpringMvc的控制器是单例模式。(对 )

在Java的方法中定义一个常量要用const关键字。(错)

在sq|语句比较复杂的时候,使用注解绑定比使用xml!绑定会更好。(错)

Spring是轻量的,基本的版本大约3MB。(对)

Spring Boot为整合MyBatis技术框架提供了版本管理。(对)

如果对象的引用被置为null,垃圾收集器会立即释放对象占用的内存?(错)

主键被强制定义成NOT NULL和UNIQUE。(对)

SpringMVC我们可以直接在Controller的相关的方法的形参中获取HttpServletResponse对象(对 )

JSP页面是一种包含 了静态数据和JSP元素两种类型的文本的文本文档。(对)

在Java中,程序员是不需要显示的去释放一个对象的内存的, 而是由虚拟机自行执行。(对)

四、填空题

#{}和${}的含义是什么? #{}是(表示一个占位符,防止sql注入) ${}是(sql的拼接,以字符串方式替换)

SpringMVC常用注解中获取URL中路径变量中的值是(RequestParam)注解。

(ENUM)是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。

让控件按相同大小排列用(GridLayout)布局管理器;一次只有一个控件可见的布局管理器是(CardLayout)

(@Repository)注解用于将数据访问层(DAO层)的类标识为Spring中的Bean,其功能与@Component相同。

在Spring Boot项目启动类上添加了注解,(@MapperScan("xxx"))来替代@Mapper注解。

默认情况下,Spring Boot生成的全局配置文件是(application.properties)

JAVA笔试题目及答案5

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

2.JDK和JRE的区别是什么?

Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

4.是否可以在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.Java支持的数据类型有哪些?什么是自动拆装箱?

Java语言支持的8中基本数据类型是:byte short int long float double boolean char

自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

8.Java支持多继承么?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

9.接口和抽象类的区别是什么?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。 抽象类可以在不提供接口方法实现的情况下实现接口。 Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。 Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。也可以参考JDK8中抽象类和接口的区别

10.什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

11.进程和线程的区别是什么?

进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。

12.创建线程有几种不同的方式?你喜欢哪一种?为什么?

有三种方式可以用来创建线程:

继承Thread类 实现Runnable接口 应用程序可以使用Executor框架来创建线程池。

实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

13.概括的解释下线程的几种可用状态。

线程在执行过程中,可以处于下面几种状态:

就绪(Runnable):线程准备运行,不一定立马就能开始执行。 运行中(Running):进程正在执行线程的代码。 等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。 睡眠中(Sleeping):线程被强制睡眠。 I/O阻塞(Blocked on I/O):等待I/O操作完成。 同步阻塞(Blocked on Synchronization):等待获取锁。 死亡(Dead):线程完成了执行。

14.同步方法和同步代码块的区别是什么?

在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。

15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。

16.什么是死锁(deadlock)?

两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。

17.如何确保N个线程可以访问N个资源同时又不导致死锁?

使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。

18.Java集合类框架的基本接口有哪些?

Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:

Collection:代表一组对象,每一个对象都是它的子元素。 Set:不包含重复元素的Collection。 List:有顺序的collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。

19.为什么集合类没有实现Cloneable和Serializable接口?

集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。

20.什么是迭代器(Iterator)?

Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的

迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。

克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。

21.Iterator和ListIterator的区别是什么?

下面列出了他们的区别:

Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。 Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。 ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

22.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。

23.Java中的HashMap的工作原理是什么?

Java中的HashMap是以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重要的特性是它的容量(capacity),负载因子(load factor)和扩容极限(threshold resizing)。

24.hashCode()和equals()方法的重要性体现在什么地方?

Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。

25.HashMap和Hashtable有什么区别?

HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点: HashMap允许键和值是null,而Hashtable不允许键或者值是null。 Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。 HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。 一般认为Hashtable是一个遗留的类。

26.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

下面列出了Array和ArrayList的不同点:

Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。 Array大小是固定的,ArrayList的大小是动态变化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

27.ArrayList和LinkedList有什么区别?

ArrayList和LinkedList都实现了List接口,他们有以下的不同点:

ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。

相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素也可以参考ArrayList vs. LinkedList。

28.Comparable和Comparator接口是干什么的?列出它们的区别。

Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明面(jsp)发送请求给控制器(servlet),然后由控制器接收用户的请求,并决定应该调用哪个模型(javabean)来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层显示给用户。

5. .J2EE是什么?(6分)

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

6. jsp有哪些内置对象?作用分别是什么? (9分)

答:1.request 用户端请求,此请求会包含来自GET/POST请求的参数;2.response 网页传回用户端的回应;3.pageContext 网页的属性是在这里管理;4.session 与请求有关的会话期;5.application servlet 正在执行的内容;6.out 用来传送回应的输出;7.config servlet的构架部件;8.page JSP网页本身;9.exception 针对错误网页,未捕捉的例外

7. 作用域public,private,protected,以及不写时的区别 ?(10分)

答:作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

不写时默认为friendly

四、编码及论述题(共2题,每题10分,共20分)

1. 什么是Singleton,它的作用是什么,它有几种形式?请用代码写出一个Singleton类。

答:Java Singleton 模式用来保证在运行的应用程序中,一个Class只是实例化一次,也就是只有一个相应的对象存在。

它有三种形式

public class Singleton

{

private static Singleton instance = null;

public static synchronized Singleton getInstance()

{

if (instance==null)

instance=new Singleton();

return instance;

}

}

2. 在Struts + Spring + Hibernate的组合框架模式中,三者各自的特点都是什么?

答:Strtus WEB层 Spring是业务层 Hiebenate是持久化层。

【JAVA笔试题目及答案】相关文章:

java基础笔试题及答案03-03

2016年Java笔试题及答案03-12

2017年Java笔试题及答案03-09

2016年Java认证笔试题及答案03-03

2016最新Java认证笔试题及答案01-21

最新中兴Java语言笔试真题及答案03-07

Java中级开发工程师笔试题及答案201603-04

2016年J2EE笔试题目及答案03-17

java习题及答案03-26