复盘1
1、原题:Web客户端的编程语言JavaScript源自Java,其功能是Java SE的子集。B
A、对
B、错
解析:JavaScript与java没有任何关系
2、原题:我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。()B
A、正确
B、错误
解析:System是java.lang包下的一个类,out为System的final静态成员(PrintStream类型),println()是PrintStream类的实例方法
3、原题:(多选)下面有关servlet的层级结构和常用的类,说法正确的有? ABCD?
A、GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet。
B、大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现
C、ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象
D、HttpServletRequest接口扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息
解析:对Servlet只是模糊理解,选的不全
4、原题:下列Java代码中的变量a、b、c分别在内存的____存储区存放。C
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
A、堆区、堆区、堆区
B、堆区、栈区、堆区
C、堆区、栈区、栈区
D、堆区、堆区、栈区
E、静态区、栈区、堆区
F、静态区、栈区、栈区
解析:a属于类所以在堆中。bc属于方法,b c为局部变量,局部变量不属于任何类或者实例,因此它总是保存在其所在方法的栈内存中!
5、原题:(多选)关于Java以下描述正确的有( ) CD
A、Class类是Object类的超类
B、Object类是一个final类
C、String类是一个final类
Class类可以装载其它类
解析:Object:是所有类的父类,String:是个final类,所以不可更改,Class:可以通过forName()方法加载其他类
6、原题:多选)以下集合对象中哪几个是线程安全的() CD
A、LinkedList
B、ArrayList
C、Vector
D、Hashtable
解析:集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口
7、原题:下面对JVM叙述不正确的是:B
A、JVM的全称是Java Virtual Machine
B、JVM是一种计算机硬件技术,它是Java程序的运行平台
C、JVM是在计算机硬件系统上用软件实现的一台假想机
D、Java程序在执行时.JVM把Java字节码解释成机器码
解析:JVM也就是Java Virtual Machine,即java虚拟机,是在现有的平台上,如Windows,Linux等,运行一个软件,虚拟出一台接口统一的计算机,依次实现java语言的跨平台特性
8、原题:下列有关Thread的描述,哪个是正确的? C
A、启动一个线程的方法是:thread. run()
B、结束一个线程的通常做法是:thread. stop()
C、将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。
D、让一个线程等待另一个线程的通知的方法是:thread. sleep()
解析:
1.启动一个线程的方法是 start()
2.结束线程用的是interrupt()方法,而stop()是强制结束线程,并不推荐使用,同时stop()方法已被弃用
3.daemon线程是守护线程,当主线程结束时,守护线程会自动结束
4.一个线程等待另外一个线程的方法是wait()方法
9、原题:如果一个list初始化为{5,3,1},执行以下代码后,其结果为()? B
A、[5, 3, 1, 6]
B、[4, 3, 1, 6]
C、[4, 3, 6]
D、[5, 3, 6]
解析:
初始化为{5,3,1}
nums.add(6)后list为{5,3,1,6}
nums.add(0,4)是在0号索引上添加数字4得到list为{4,5,3,1,6}
nums.remove(1)是将1号索引上的5进行remove得到list为{4,3,1,6}
10、原题:下列关于Java中类的构造方法的描述,正确的是()B
A、构造方法的返回类型为void
B、可以定义一个类而在代码中不写构造方法。
C、在同一个类中定义的重载构造方法不可以相互调用。
D、子类不允许调用父类的构造方法。
解析:
A、构造器没有返回值,这个没有返回值和返回值为void可部一样。
B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。
C、构造器可以重载,而且可以使用super()、this()相互调用
D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。
11、原题:容器panel缺省使用的布局编辑策略是( ) B
A、Border Layout
B、Flow Layout
C、GridLayout
D、Card Layout
解析:
GUI PANEL 容器以及布局管理器 Panel是AWT中的另一个典型的容器,它代表不能独立存在、必须放在其他容器中使用。 1、可作为容器来盛装其他组件,为放置组件提供空间。 2、不能单独存在,必须放置到其他容器当中。 3、默认使用FlowLayout作为布局管理器。
12、原题:在 java 中 , 以下 _____ 类的对象以键 - 值的方式存储对象 C
A、java,util.List
B、java,util.ArrayList
C、java,util.HashMap
D、java,util.LinkedList
解析:在Java类里,继承Map接口的类以键值对的方式来进行存储(键值对是以内部类Entry来实现的,),继承Collection的接口用来进行值的存储(List接口继承自Collection接口)。
13、原题:在异常处理中,以下描述不正确的有 D
A、try块不可以省略
B、可以使用多重catch块
C、finally块可以省略
D、catch块和finally块可以同时省略
解析:用try-catch 捕获异常;用try-finally 清除异常;用try-catch-finally 处理所有的异常. 三者选一种即可
14、原题:判断对错。List,Set,Map都继承自继承Collection接口。B
A、对
B、错
解析:
15、原题:以下哪个不属于JVM堆内存中的区域()? B
A、survivor区
B、常量池
C、eden区
D、old区
解析:jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。常量池属于 PermGen(方法区)
16、原题:下面有关maven和ant的描述,描述错误的是? C
A、Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
B、Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
C、maven和ant都有“生命周期”的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
D、Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml
解析:Ant特点 › 没有一个约定的目录结构 ›必须明确让ant做什么,什么时候做,然后编译,打包 ›没有生命周期,必须定义目标及其实现的任务序列 ›没有集成依赖管理 所以选项c错误
17、原题:关于AWT和Swing说法正确的是? D
A、Swing是AWT的子类
B、AWT在不同操作系统中显示相同的风格
C、AWT不支持事件类型,Swing支持事件模型
D、Swing在不同的操作系统中显示相同的风格
解析:AWT :是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。 AWT 中的图形函数与 操作系统 所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用 操作系统 所提供的图形库。由于不同 操作系统 的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的”一次编译,到处运行”的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。
Swing :是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing由纯Java写成,可移植性好,外观在不同平台上相同。所以Swing部件称为轻量级组件( Swing是由纯JAVA CODE所写的,因此SWING解决了JAVA因窗口类而无法跨平台的问题,使窗口功能也具有跨平台与延展性的特性,而且SWING不需占有太多系统资源,因此称为轻量级组件!!!)
18、原题:(多选)实现或继承了Collection接口的是()BCE
A、Map
B、List
C、Vector
D、Iterator
E、Set
解析:
· List接口继承了Collection接口,List接口允许存放重复的对象,排序方式为按照对象的插入顺序。
· Set接口继承了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。
· Map接口以键值对(key—value)的形式存放对象,其中键(key)对象不可以重复,值(value)对象可以重复,排序方式为按照自身内部的规则
· Vector实现了List接口,即间接实现Collection接口
· Iterator是Java迭代器最简单的实现,没有实现Collection接口
19、原题:在JAVA中,下面关于String类和StringBuffer类的描述正确的是那一个? A
A、StringBuffer类的对象调用toString()方法将返回String类型的结果
B、两个类都有append()方法
C、可以直接将字符串“test”赋值给声明的String类和StringBuffer类的变量
两个类的实例的值都能够被改变
解析:String 对象是不可以被改变的。
当new一个String对象时,JVM会在内存中创建一个String对象,当另外一个String对象值与它一样时,会将该对象直接指向对应的地址
20、原题:代码 的运行结果是() C
package com.sunline.java;
public class A implements B extends C{
public static void main(String args[]){
System.out.println("hello sunline!");
}
}
A、在控制台打印hello sunline!
B、报异常java.lang.NullPoninterException
C、编译报错
报异常java.lang.RuntimeExcception
解析:
class A extends B implements C, D, E
extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重 继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
21、原题:执行以下程序,最终输出可能是: C
代表空格
A、010 2123012 3434
B、01201 340124 2334
C、0012314 01223344*
D、12345 12345 12345
解析:
假设线程名为 a b c 线程内执行有序, a线程必定是01234 b01234 c01234 ,按照排除法,(00123)就是说abc中至少有2条线程是执行的,123就是2条线程中假设a线程执行123了,(14)就是a线程执行结束,b线程执行到1,(01223344)就是c线程也启动,这是对的
22、原题:、在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的()? A
A、管道
B、消息队列
C、高速缓存数据库
D、套接字
解析:管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
23、原题:以下哪一个不是赋值符号? C
A、+=
B、<<=
C、<<<=
D、>>>=
解析:混合赋值运算符的使用
<<表示左移位
表示带符号右移位
表示无符号右移
但是没有<<<运算符
24、原题:下列运算符中优先级最高的是?B
A、<
B、+
C、&&
D、!=
解析:优先级从高到低依次是 算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符和逗号运算符。
25、原题:下列关于一个类的静态成员的描述中,不正确的是 D
A、该类的对象共享其静态成员变量的值
B、静态成员变量可被该类的所有方法访问
C、该类的静态方法能访问该类的静态成员变量
该类的静态数据成员变量的值不可修改
解析:
· 类的静态成员与类直接相关,与对象无关,在一个类的所有实例之间共享同一个静态成员,A正确
· 静态成员函数中不能调用非静态成员,C正确
· 非静态成员函数中可以调用静态成员,B正确
· 常量成员才不能修改,静态成员变量必须初始化,但可以修改(例如我们常利用静态成员变量统计某个函数的调用次数),D错误
26、原题:关于继承的说法正确的是()。 A
A、子类将继承父类所有的数据域和方法。
B、子类将继承父类的其可见的数据域和方法。
C、子类只继承父类public方法和数据域
D、子类只继承父类的方法,而不继承数据域
解析:继承不能继承私有属性,子类可以继承方法也可以继承属性
27、原题:多选)下列关于final、finally、finalize说法正确的是( )ABD
A、final可以用来修饰类、方法、变量
B、finally是java保证重点代码一定要被执行的一种机制
C、变量被final修饰后不能再指向其他对象,但可以重写
D、finalize设计的目的是保证对象在被垃圾收集前完成特定资源的回收
解析:
当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
28、原题:(多选)jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些 CDE
A、栈空间满
B、年轻代空间满
C、老年代满
D、持久代满
E、System.gc()
解析:年轻代引起scanvenge gc 栈空间满不会gc
29、原题:下列哪种说法是正确的?C
A、实例方法可直接调用超类的实例方法
B、实例方法可直接调用超类的类方法
C、实例方法可直接调用本类的类方法
D、实例方法可直接调用其他类的实例方法
解析:实例方法也叫做对象方法。
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。
30、原题:下列语句正确的是:D
A、形式参数可被字段修饰符修饰
B、形式参数不可以是对象
C、形式参数为方法被调用时真正被传递的参数
D、形式参数可被视为local variable
解析:local variable, 局部变量:在方法体中声明的变量
31、原题:下列有关Thread的描述,哪个是正确的? C
A、启动一个线程的方法是:thread. run()
B、结束一个线程的通常做法是:thread. stop()
C、将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。
D、让一个线程等待另一个线程的通知的方法是:thread. sleep()
解析:
启动一个线程的方法是 start()
2.结束线程用的是interrupt()方法,而stop()是强制结束线程,并不推荐使用,同时stop()方法已被弃用
3.daemon线程是守护线程,当主线程结束时,守护线程会自动结束
4.一个线程等待另外一个线程的方法是wait()方法
32、原题:一个以“.java”为后缀的源文件 C
A、只能包含一个public类,类名必须与文件名相同
B、只能包含与文件名相同的public类以及其中的内部类
C、只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)
D、可以包含任意public类
解析:一个java文件可以包含多个java类,但是只能包含一个public类,并且public类的类名必须与java文件名相同。
33、原题:下列描述中,错误的是 C
A、SQL语言又称为结构化查询语言
B、java中”static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问
C、面向对象开发中,引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变不会反映到所引用的对象上
D、java是强类型语言,javascript是弱类型语言
E、面向对象的三大特性包括:封装,继承,多态
解析:强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。 java、.NET、C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
34、原题:以下 b 的值是: byte b = (byte)129; B
A、-126
B、-127
C、-128
D、-129
解析:因为byte是有符号
35、原题:下面有关maven和ant的描述,描述错误的是? C
E、Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码
F、Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里
G、maven和ant都有“生命周期”的概念,当你输入一个命令后,maven或者ant会执行一系列的有序的步骤,直到到达你指定的生命周期
H、Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml
解析:Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列
36、原题jre 判断程序是否执行结束的标准是() A
A、所有的前台线程执行完毕
B、所有的后台线程执行完毕
C、所有的线程执行完毕
D、和以上都无关
解析:后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。 前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程。
复盘2
1.原题:下面不属于HttpServletRequest接口完成功能的是?( ) C*
A.读取cookie
B.读取HTTP头
C.设定响应的content类型
D.读取路径信息
解析:HttpServletRequest类主要处理:
1.读取和写入HTTP头标
2.取得和设置cookies
3.取得路径信息
4.标识HTTP会话
2.原题:以下代码执行后输出的结果为?( ) A*
public class ClassTest{
String str = new String("hello");
char[] ch = {'a','b','c'};
public void fun(String str, char ch[]){
str="world";
ch[0]='d';
}
public static void main(String[] args) {
ClassTest test1 = new ClassTest();
test1.fun(test1.str,test1.ch);
System.out.print(test1.str + " and ");
System.out.print(test1.ch);
}
}
A.hello and dbc
B.world and abc
C.hello and abc
D.world and dbc
解析:String类型传递是值传递,函数前后值不改变;而字符组ch为对象,为引用传递,发生改变
3.原题:下面哪个修饰符的变量是所有同一类生成的对象共享的?( ) C*
A.public
B.private
C.static
D.Final
解析:
static修饰某个字段时,肯定会改变字段创建的方式(每个被static修饰的字段对于每一个类来说只有一份存储空间,而非static修饰的字段对于每一个对象来说都有一个存储空间)
static属性是属于类的,所以对象共同拥有,所以既可以通过类名.变量名进行操作,又可以通过对象名.变量名进行操作
4.原题:下面关于垃圾收集的说法正确的是( ) D*
A.一旦一个对象成为垃圾,就立刻被收集掉
B.对象空间被收集掉之后,会执行该对象的finalize方法
C.finalize方法和C++的析构函数是完全一回事情
D.一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此
解析:只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的;垃圾回收器准备释放内存的时候,会先调用finalize();如果你为某个对象定义了finalize() 方法,JVM 可能不会调用它,因为垃圾回收器不曾释放过那些对象的内,调用System.gc() 也不会起作用,因为它仅仅是给 JVM 一个建议而不是命令
5.原题:如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是( )C*
A.protected void setColor(){…}
B.void setColor(){…}
C.public void setColor(){…}
D.以上答案都可
解析:接口中属性为public static final。方法为public abstract
6.原题:设有下面两个赋值语句:D*
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述说法正确的是( )
A.a是整数类型变量,b是整数类对象
B.a是整数类对象,b是整数类型变量
C.a和b都是整数类对象并且它们的值相等
D.a和b都是整数类型变量并且它们的值相等
解析:parseInt得到的是基础数据类型int,valueof得到的是装箱数据类型Integer,然后再通过valueInt转换成int,所以选择D
7.原题:有以下一个对象:
public class DataObject implements Serializable{
private static int i=0;
private String word=" ";
public void setWord(String word){
this.word=word;
}
public void setI(int i){
Data0bject. i=I;
}
}
创建一个如下方式的DataObject:
DataObject object=new Data0bject ( );
object. setWord(“123”);
object. setI(2);
将此对象序列化为文件,并在另外一个JVM中读取文件,进行反序列化,请问此时读出的Data0bject对象中的word和i的值分别为: ( )D*
A.“”,0
B.“”,2
C.“123”,2
D.“123”,0
解析:Java在序列化时不会实例化static变量和transient修饰的变量,因为static代表类的成员,transient代表对象的临时数据,被声明这两种类型的数据成员不能被序列化。D
8.原题:以下代码执行后输出结果为( ) A*
A.blockAblockBblockA
B.blockAblockAblockB
C.blockBblockBblockA
D.blockBblockAblockB
解析:
.按顺序加载方法块与静态方法(此时方法块与静态方法优先级一致),即blockAblockB
2.实例化Test类时,由于静态方法只会在第一次加载类时初始化(无论实例化多少次,静态方法只初始化一次。),所以只有方法块blockA会打印。
综上所述:blockAblockBblockA
9.原题:请看以下代码,其中“c.getDeclaredMethods()”的作用是( )D*
A.取得类的公有方法对象
B.取得类的所有公有方法名称
C.取得类的所有方法对象
D.以上选项都不正确
解析:
public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,包括它所实现接口的方法。
public Method[] getDeclaredMethods()对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。包括它所实现接口的方法
10.原题:以下程序输出的结果是( )A*
A.ABDCBDCB
B.BCDABCD
C.编译错误
D.运行错误
解析:for循环执行开始 首先执行out(‘A’) 输出A; 然后执行out(‘B’)&&(i<2)此时输出B,i=0,判断条件为真,执行for循环的循环体; 执行i++,out(‘D’),输出D i=1; 执行out(‘C’),输出C 然后执行out(‘B’)&&(i<2) 此时输出B,i=1 判断条件为真 ,执行for循环的循环体; 执行i++,out(‘D’),输出D i=2; 执行out(‘C’),输出C 然后执行out(‘B’)&&(i<2) 此时输出B,i=2,不满足i<2 判断条件为假 ,跳出循环; 所以结果为ABDCBDCB
11.原题:导出类调用基类的构造器不许用到的关键字( ) C*
A.this
B.final
C.super
D.static
解析:基类和导出类在 《Think in java》 中文翻译是 《java编程思想》 第四版 里有这个概念。基类就是父类,导出类就是子类。子类调用父类的构造器使用super(),放在子类构造函数的首行。
12.原题:下列说法正确的是( ) B*
A.在类方法中可用this关键字来调用本类的类方法
B.在类方法中调用本类的类方法时刻直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
解析:A this指当前对象只能在实际方法和构造函数中调用。C 可以调用其他类的非私有类方法。D 不能直接调用,到先生成对象。通过对象即可调用实例方法
13.原题:下列关于管道(Pipe)通信的叙述中,正确的是( )B*
A.进程对管道进行读操作和写操作都可能被堵塞
B.一个管道只能有一个读进程或一个写进程对其操作
C.一个管道可实现双向数据传输
D.管道的容量仅受磁盘容量大小限制
解析:管道是 单向的、先进先出的 ,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的 尾部写入数据 ,另一个进程(读进程)从管道的 头部读出数据
14.原题:下列叙述哪个是正确的( )B*
A. Java中的集合类(如vector)可以用来存储任何类型的对象,但是要事先知道所存储对象的类型,才能正常使用
B.在Java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销
C.Java接口包含函数声明和变量声明
D.Java中,子类不可以访问父类的私有成员和受保护的成员
解析:vector是线程安全的ArrayList,在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果Vector定义为保存Object则可以存放任意类型。
B.try{}catch{}会增加额外的开销
C.接口中声明的’变量’必须为public final static,所以为常量
D.子类可以访问父类受保护的成员
15.原题:在异常处理中,以下描述不正确的是( )D*
A.try 块不可以省略
B.可以使用多重catch块
C.finally块可以省略
D.catch块和finally块可以同时省略
解析:用try-catch 捕获异常;用try-finally 清除异常;用try-catch-finally 处理所有的异常. 三者选一种即可
16.原题:关于String,StringBuilder以及StringBuffer,描述错误的是( )C
A.对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
B.StringBuffer是线程安全的
C.StringBuilder是线程安全的
D.可以修改StringBuffer和StringBuilder的内容
解析:String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。
17.原题:以下说法错误的是( )D
A.虚拟机中没有泛型,只有普通类和普通方法
B.所有泛型类的类型参数在编译时都会被擦除
C.创建泛型对象时请指明类型,让编译器尽早的做参数检查
D.泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型
解析:
Java泛型是使用擦除来实现的,这意味着当你在使用泛型时,任何具体的类型信息都被擦除了,你唯一知道的就是你在使用一个对象。因此List和List在运行时实际上是相同的类型。这两种类型都被擦除成它们的“原生”类型,即List。
18.原题:关于以下application,说法正确的是( )B*
A.4行与9行不能通过编译,因为缺少方法名和返回类型
B.编译通过,执行结果是x=5
C.编译通过,执行结果是x=3
D.9行不能通过编译,因为只能有一个静态初始化器
解析:test类加载的时候首先进行静态成员初始化,之后进行静态代码块初始化,x=10,x=10+5,x=15/3
19.原题:多个线程可同时操作一个数据,为了保证该数据的准确性,可将操作该数据的部分改为( )A*
A.同步
B.异步
C.只读
D.只写
解析:对该数据进行加锁,放在同步代码块中
20.原题:下面说法正确的是( )A*
A.Set 中至多只能有一个空元素
B.List中至多只能有一个空元素
C.List和Set都是可以包含重复元素的有序集合
D.List和Set都是有序集合
解析:Set 不能有重复的元素,且是无序的,要有空值也就只能有一个。因为它不允许重复。 L ist 可以有重复元素,且是有序的,要有空值也可以有多个,因为它可重复
21.原题:下列叙述中,错误的是( )B*
A.File类能够存储文件属性
B.File类能够读写文件
C.File类能够建立文件
D.File类能够获取文件目录信息
解析:文件File是java. io包中的一个重要的非流类,以一种系统无关的方式表示一个文件对象的属性。通过File所提供的方法,可以得到文件或目录的描述信息(包括名字、路径、长度、可读和可写等),也可以生成新文件、目录,修改文件和目录,查询文件属性,重命名文件或者删除文件。File描述了文件本身的属性,File类中封装了对文件系统进行操作的功能。
22.原题:下面代码的输出是什么?( )A*
A.null
B.sub
C.base
解析:考察的是java的初始化顺序,先初始化父类的成员变量,再初始化父类的构造函数,因为父类里面的构造函数里面的方法在子类中已经进行了重写所以会调用子类的这个方法,但是子类成员变量还没初始化,所以其为null
23.原题:关于继承的说法正确的是( )A*
A.子类将继承父类所有的数据域和方法
B.子类将继承父类的其可见的数据域和方法
C.子类只继承父类public方法和数据域
D.子类只继承父类的方法,而不继承数据域
解析:当子类继承父类后,子类可以访问父类中除私有成员外的全部成员。父类的构造函数和析构函数是不能被子类继承的
24.原题:哪个类可用于处理Unicode( ) A*
A.InputStreamReader
B.BufferedReader
C.Writer
D.PipedInputStream
解析:Unicode是由两个字节组成的,而InputStreamReader是将字节流转换成字符流供我们使用。同时InputStreamReader也可以指定字符集的编码
25.原题:下面有关 JAVA 异常类的描述,说法正确的有( ) ABC*
A. 异常的继承结构:基类为 Throwable,Error 和 Exception 实现 Throwable,RuntimeException 和 IOException 等继承 Exception
B. 非 RuntimeException 一般是外部错误(不考虑Error的情况下),其必须在当前类被 try{}catch 语句块所捕获
C. Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不 需要捕捉
D. RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获
解析:类型转换以及数组越界访问是无法被try{}catch 语句块所捕获的
26.原题:java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?( ) AB*
A. Hashtable
B. Vector
C. TreeSet
D. LinkedList
解析:vector :就比 arraylist 多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。statck :堆栈类,先进后出;hashtable :就比 hashmap 多了个线程安全,enumeration :枚举,相当于迭代器,StringBuffer 是线程安全,而 StringBuilder 是线程不安全的。
27.原题:下面有关java类加载器,说法正确的是?( )ABCD*
A. 引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
B. 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
C. 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
D. tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用
解析:启动类加载器(Bootstrap ClassLoader):这个类加载器负责将存放在<JAVA_HOME>\lib目录中的。 扩展类加载器(Extension ClassLoader): 它负责加载<JAVA_HOME>\lib\ext目录中的,或者被java.ext.dirs系统变量所指定的路径中的所有类库,开发者可以直接使用扩展类加载器。应用程序类加载器(Application ClassLoader): 它负责加载用户类路径(ClassPath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义自己的类加载器,一般情况下这个就是程序中默认的类加载器。
28.原题:对 Map 的用法,正确的有:( )CD*
A. new java.util.Map().put(“key” , “value”) ;
B. new java.util.SortedMap().put(“key” , “value”) ;
C. new java.util.HashMap().put( null , null ) ;
D. new java.util.TreeMap().put( 0 , null ) ;
解析:
29.原题: java中 String str = "hello world"下列语句错误的是?( )ABC*
A. str+=’ a’
B. int strlen = str.length
C. str=100
D. str=str+100
解析:数组有length属性,字符串只有length()方法
30.原题:下面有关java的引用类型,说法正确的有?( )ABCD*
A. 对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中
B. 如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 能被垃圾回收器回收。
C. 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如 果内存空间不足了,就会回收这些对象的内存
D. 一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的 空间
解析:强引用:一个对象赋给一个引用就是强引用,比如new一个对象,一个对象被赋值一个对象。软引用:用SoftReference类实现,一般不会轻易回收,只有内存不够才会回收。弱引用:用WeekReference类实现,一旦垃圾回收已启动,就会回收。虚引用:不能单独存在,必须和引用队列联合使用。主要作用是跟踪对象被回收的状态。
31.原题:在java中重写方法应遵循规则的包括( )BC*
A.访问修饰符的限制一定要大于被重写方法的访问修饰符
B.可以有不同的访问修饰符
C.参数列表必须完全与被重写的方法相同
D.必须具有不同的参数列表
解析:A选项的一定要大于错误,而是子类重写方法的访问权限不能低于父类重写方法的访问权限
32.原题:实现或继承了Collection接口的是( ) BCE*
A.Map
B.List
C.Vector
D.Iterator
E.Set
解析:A,Map接口未实现Collection接口
B,List接口的定义为public interface List<E>extends Collection<E>C,Vector定义为
public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
Vector实现了List接口自然实现了Collection接口
D,Iterator接口未实现Collection接口
E,public interface Set<E>extends Collection<E> Set接口继承自Collection接口
33.原题:对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。( )F
解析:运行异常由虚拟机解决,非运行异常需要手动解决,声明或者异常捕捉
34.原题:我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。( )F
解析:System是java.lang中的一个类,out是System内的一个成员变量,这个变量是一个java.io.PrintStream类的对象,println呢就是一个方法了
35.原题:在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。( )F
解析:泛型机制顶多影响编译,不会影响运行速度
36.原题:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端。( )T
解析:
37.原题:子类可以继承父类的构造函数。( )F
解析:java子类不能继承父类的构造方法(可以调用,但不是继承)
38.原题:protected访问权限要小于包访问权限。( )F
解析:
39.原题:只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数。( )F
解析:如果类没有构造方法,JVM会生成一个默认构造方法,如果定义了任意类型的构造方法,编译器都不会自动生成构造方法
40.原题:使用( )关键字来定义接口。interface
解析:
41.原题:Java中当两个程序需要通信时,使用( )类建立套接字连接。Socket
解析:
42.原题:( )类综合了Java程序中一个线程需要拥有的属性和方法。Thread
解析:
43.原题: Java程序的运行环境简称为( )。JRE
解析:
44.原题:若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是( )double
解析:
45.原题:在socket编程中,可以使用( )方法获取本机的ip地址。getLocalAddress();解析:
46.原题: Java不直接支持多继承,但可以通过( )实现多继承。接口
解析: