【Java】Java选择题错题集(四)

java用()机制实现了进程之间的同步执行
正确答案: A   你的答案: D (错误)
监视器
虚拟机
多个CPU

异步调用

同步的两种方式:同步块和同步方法 
对于同步来说都是使用synchronized方法

每一个对象都有一个监视器,或者叫做锁

下面哪些属于JSP内置对象及方法?
正确答案: A B C D   你的答案: A C (错误)
request
out
application

config

JSP内置对象有:
1.request对象
     客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
     response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
     session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
     out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
     page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
     application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
   exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9.config对象

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

下面的代码运行的结果是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class extends Object
{
     static
     {
         System.out.println( "Load B" );
     }
     public B()
     {
         System.out.println( "Create B" );
     }
}
class extends B
{
     static
     {
         System.out.println( "Load A" );
     }
     public A()
     {
         System.out.println( "Create A" );
     }
}
 
public class Testclass
{
     public static void main(String[] args)
     {
         new A();
     }
}

正确答案: B   你的答案: D (错误)
Load B ->Create B->Load A -> Create A
Load B -> Load A  ->Create B  ->Create A
Load B -> Create B-> Create A -> Load A
Create B ->Create A ->Load B ->Load A

静态初始化块 ”先于 “非静态初始化” 先于 “构造函数执行

扫描二维码关注公众号,回复: 1457738 查看本文章


下面有关java object默认的基本方法,说法错误的是?
正确答案: B   你的答案: D (错误)
equals(Object obj) 指示某个其他对象是否与此对象“相等”
copy() 创建并返回此对象的一个副本
wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法
toString() 返回该对象的字符串表示

Object中没有copy方法,是clone

 

java中下面哪个能创建并启动线程()
public class MyRunnable implements Runnable          { 
     public void run()             { 
         //some code here 
     } 
 }
正确答案: C   你的答案: D (错误)
new Runnable(MyRunnable).start()
new Thread(MyRunnable).run()
new Thread(new MyRunnable()).start()
new MyRunnable().start()


1
Web程序中,当前用户上下文信息应该保存在下面哪个对象中()

正确答案: C   你的答案: B (错误)
page
request
session

Application

重点在 当前用户

JSP 四大作用域: page (作用范围最小)、requestsessionapplication(作用范围最大)

  • 存储在application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问。(属性作用范围最大)
  • 存储在session对象中的属性可以被属于同一个会话(浏览器打开直到关闭称为一次会话,且在此期间会话不失效)的所有Servlet和JSP页面访问。
  • 存储在request对象中的属性可以被属于同一个请求的所有Servlet和JSP页面访问(在有转发的情况下可以跨页面获取属性值),例如使用PageContext.forward和PageContext.include方法连接起来的多个Servlet和JSP页面。
  • 存储在pageContext对象中的属性仅可以被当前JSP页面的当前响应过程中调用的各个组件访问,例如,正在响应当前请求的JSP页面和它调用的各个自定义标签类。
如下代码的输出结果是什么?
public class Test {
    public int aMethod(){
        static int i = 0;
        i++;
        return i;
    }
public static void main(String args[]){
    Test test = new Test();
    test.aMethod();
    int j = test.aMethod();
    System.out.println(j);
    }
}
正确答案: D   你的答案: C (错误)
0
1
2

编译失败

静态变量只能在类主体中定义,不能在方法中定义

线程安全的map在JDK 1.5及其更高版本环境 有哪几种方法可以实现?
正确答案: C D   你的答案: A B C D (错误)
Map map = new HashMap()
Map map = new TreeMap()
Map map = new ConcurrentHashMap();

Map map = Collections.synchronizedMap(new HashMap());

1. HashMap,TreeMap 未进行同步考虑,是线程不安全的
2.
HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。
3.
Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,
List  list = Collections.synchronizedList(new ArrayList());

Set  set = Collections.synchronizedSet(new HashSet());

JAVA反射机制主要提供了以下哪些功能?
正确答案: A B C D   你的答案: A B D (错误)
在运行时判断一个对象所属的类
在运行时构造一个类的对象
在运行时判断一个类所具有的成员变量和方法

在运行时调用一个对象的方法

下面有关JAVA swing的描述,说法错误的是?
正确答案: C   你的答案: C (正确)
Swing是一个基于Java的跨平台MVC框架。使用单线程模式。
Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的
Swing优化了AWT,运行速度比AWT快

Swing是一个基于组件的框架,所有的组件都是从javax.swing.JComponent类继承来的

Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢

下面这三条语句
System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));
的输出结果分别是? ( )


正确答案: D   你的答案: B (错误)
is 1005, 1005 is, is 1005
is 105, 105 is, is 105
is 1005, 1005 is, is 105

is 1005, 105 is, is 105

1."is"说明后面的内容都会被强制转换为string,所以是最后结果是拼接起来的
2.100+5先得到105,然后与is拼接

3.先算括号内的

ArrayList list = new ArrayList(20);中的list扩充几次
正确答案: A   你的答案: B (错误)
0
1
2

3

ArrayList list=new ArrayList();   这种是默认创建大小为10的数组,每次扩容大小为1.5倍

ArrayList list=new ArrayList(20);  这种是指定数组大小的创建,没有扩充


下列说法正确的有( )
正确答案: A C D   你的答案: C (错误)
环境变量可在编译source code时指定
在编译程序时,所能指定的环境变量不包括class path
javac一次可同时编译数个Java源文件

javac.exe能指定编译结果要置于哪个目录(directory)

a选项-d即可设置系统属性
c选项一次编译多个java文件用javac *.java. 即可编译当前目录下的所有java文件

d选项-s指定存放生成的源文件的位置

下面关于垃圾收集的描述哪个是错误的?
正确答案: D   你的答案: C (错误)
使用垃圾收集的程序不需要明确释放对象
现代垃圾收集能够处理循环引用问题
垃圾收集能提高程序员效率

使用垃圾收集的语言没有内在泄漏问题

会有内存泄露问题,例如访问资源文件,流不关闭,访问数据库等连接不关闭

What will be printed when you execute the following code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class C {
     C() {
         System.out.print( "C" );
     }
}
 
class A {
    C c = new C();
 
     A() {
         this ( "A" );
         System.out.print( "A" );
     }
 
     A(String s) {
         System.out.print(s);
     }
}
 
class Test  extends A {
     Test() {
         super ( "B" );
         System.out.print( "B" );
     }
 
     public static void main(String[] args) {
         new Test();
     }
}

正确答案: B   你的答案: A (错误)
BB
CBB
BAB
None of the above

首先new了一个子类对象,那么就要调用构造方法来初始化该子类对象,但是该类继承自A,所以要先调用父类的构造方法,这里通过super("B")显示的调用了父类的带参构造。执行父类的带参构造前要先对父类中的对象进行初始化,对父类中的c成员进行初始化,调用了C类的无参构造,所以调用顺序为:
先调用C类的无参构造
再调用A类的带参构造
最后调用调用子类的构造

一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。
正确答案: A   你的答案: B (错误)
正确
错误


下面有关 JAVA 异常类的描述,说法正确的有()
正确答案: A C   你的答案: B C D (错误)
异常的继承结构:基类为 Throwable,Error 和 Exception 继承 Throwable,RuntimeException 和 IOException 等继承 Exception
非 RuntimeException 一般是外部错误(不考虑Error的情况下),其必须被 try{}catch 语句块所捕获
Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉
RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获


都是Throwable的子类: 
1.Exception(异常) :是程序本身可以处理的异常。 
2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。
3.检查异常编译器要求必须处置的异常) :  除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。

这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过
4.非检查异常(编译器不要求处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error)。


要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
正确答案: A   你的答案: C (错误)
让该类不使用任何关键字
使用private关键字
使用protected关键字
使用void关键字


下面有关java内存模型的描述,说法错误的是?
正确答案: D   你的答案: A (错误)
JMM通过控制主内存与每个线程的本地内存之间的交互,来为java程序员提供内存可见性保证
“synchronized” — 保证在块开始时都同步主内存的值到工作内存,而块结束时将变量同步回主内存
“volatile” — 保证修饰后在对变量读写前都会与主内存更新。
如果在一个线程构造了一个不可变对象之后(对象仅包含final字段),就可以保证了这个对象被其他线程正确的查看

D.final只是指向不变,但是指向的值有可能变,所以依然不是线程安全


下列关于容器集合类的说法正确的是?
正确答案: C   你的答案: A (错误)
LinkedList继承自List
AbstractSet继承自Set
HashSet继承自AbstractSet
WeakMap继承自HashMap


a选项linkedlist类是实现了List接口,而不是继承
b选项
AbstractSet类实现Set接口
c选项HashSet继承 AbstractSet类,同时也实现set


以下集合对象中哪几个是线程安全的?( )
正确答案: B C D   你的答案: B C (错误)
ArrayList
Vector
Hashtable
Stack

线程同步:喂,SHE
(Vector)
S(Stack)
H(hashtable)
E(enumeration)

在Web应用程序的文件与目录结构中,web.xml是放置在(    )中。
正确答案: A   你的答案: C (错误)
WEB-INF目录
conf目录
lib目录
classes目录



下面有关List接口、Set接口和Map接口的描述,错误的是?
正确答案: A   你的答案: B (错误)
他们都继承自Collection接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置
Set是一种不包含重复的元素的Collection
Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value

Map接口和Collection接口是同一等级的

It is an important feature of the Java language that it always provides a default constructor to a class.
正确答案: A   你的答案: B (错误)
FALSE
TRUE

题目:总是为一个类提供了一个默认的构造函数是Java语言的一个重要特性 。
事实上只有在我们没有显示声明任何构造方法时java才会为我们提供一个默认的无参构造函数。


以下说法错误的是()
正确答案: B C D   你的答案: D (错误)
其他选项均不正确
java线程类优先级相同
Thread和Runnable接口没有区别
如果一个类继承了某个类,只能使用Runnable实现线程


B选项,在java中线程是有分优先等级的所以优先级不能相同,错误
C选项,
Thread实现了Runnable接口是一个类不是接口,错误
D选项,实现多线程的三种方式,一种是继承Thread类使用此方式就不能继承其他的类了。还有
两种是实现Runnable接口或者实现Callable接口
,所以D错误。


Java的跨平台特性是指它的源代码可以在多个平台运行。()
正确答案: B   你的答案: A (错误)
正确
错误

Java的跨平台特性是因为JVM的存在, 它可以执行.class字节码文件,而不是.java源代码


下列关于计算机系统和Java编程语言的说法,正确的是()
正确答案: C   你的答案: A (错误)
计算机是由硬件、操作系统和软件组成,操作系统是缺一不可的组成部分。
Java语言编写的程序源代码可以不需要编译直接在硬件上运行。
在程序中书写注释不会影响程序的执行,可以在必要的地方多写一些注释。
Java的集成开发环境(IDE),如Eclipse,是开发Java语言必需的软件工具。


并不一定要安装操作系统,直接操作寄存器就可以了,操作系统不是必须


请问所有的异常类皆直接继承于哪一个类?()
正确答案: C   你的答案: B (错误)
java.applet.Applet
java.lang.Throwable
java.lang.Exception
java.lang.Error


以下J2EE中常用的名词解释错误的是?
正确答案: B   你的答案: 空 (错误)
EJB容器:Enterprise java bean 容器
JNDI:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JAF:JAVA安全认证框架。提供一些安全控制方面的框架。


JNDI:Java Naming and Directory Interface,Java命名和目录接口。


下列程序的运行结果

1
2
3
4
5
6
7
8
9
10
11
public void getCustomerInfo() {
         try {
             // do something that may cause an Exception
         catch (java.io.FileNotFoundException ex) {
             System.out.print( "FileNotFoundException!" );
         catch (java.io.IOException ex) {
             System.out.print( "IOException!" );
         catch (java.lang.Exception ex) {
             System.out.print( "Exception!" );
         }
     }

正确答案: A   你的答案: C (错误)
IOException!
IOException!Exception!
FileNotFoundException!IOException!
FileNotFoundException!IOException!Exception!

题目说抛出一个异常,但是没说具体是什么异常,那么就要分情况了:
1.如果抛出一个FileNotFoundException(或其子类),那么最终结果就打印FileNotFoundException
2.如果抛出一个IOException,或者IOException的子类(不包含FileNotFoundException及其子类),那么最终结果就打印IOException
3.如果抛出一个Exception(不包含IOException及其子类),那么最终结果就打印Exception.


下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;

正确答案: B   你的答案: D (错误)
dst=String.fromBytes(src,"GBK").getBytes("UTF-8")
dst=new String(src,"GBK").getBytes("UTF-8")
dst=new String("GBK",src).getBytes()
dst=String.encode(String.decode(src,"GBK")),"UTF-8" )


String没有decode和encode方法


Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
正确答案: A   你的答案: 空 (错误)
".*?(?=\\()"
".*?(?=\()"
".*(?=\\()"
".*(?=\()"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
答案是A
         String str =  "北京市(海淀区)(朝阳区)(西城区)" ;
 
         String patStr =  ".*?(?=\\()" ;
         
         Pattern pattern = Pattern.compile(patStr);
         
         Matcher matcher = pattern.matcher(str);
         
         if (matcher.find())
         {
             System.out.println(matcher.group( 0 ));
         }
         else
         {
             System.out.println(matcher.group( 0 ));
         }
正则表达式不太会呢


Why would a responsible Java programmer want to use a nested class?
正确答案: A B   你的答案: A (错误)
To keep the code for a very specialized class in close association with the class it works with.
To support a new user interface that generates custom events.
To impress the boss with his/her knowledge of Java by using nested classes all over the place.

A说的是使代码更紧凑。
B是支持一个新接口界面。


有以下程序段, 则下面正确的选项是()

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyThead  extends Thread{
     public static void main(String[] args) {
         MyThead t= new MyThead();
         MyThead s= new MyThead();
         t.start();
         System.out.println( "one." );
         s.start();
         System.out.println( "two." );
     }
     public void run() {
         System.out.println( "Thread" );
     }
}

正确答案: B C D   你的答案: B C (错误)

编译失败
程序运行可能结果为:
one.
Thread
two.
Thread
程序运行可能结果是:
one.
two.
Thread
Thread
程序运行结果不稳定
class A {}
class B extends A {}
class C extends A {}
class D extends B {}
Which four statements are true ?

正确答案: A C D G   你的答案: 空 (错误)

The type List<A>is assignable to List.
The type List<B>is assignable to List<A>.
The type List<Object>is assignable to List<?>.
The type List<D>is assignable to List<?extends B>.
The type List<?extends A>is assignable to List<A>.
The type List<Object>is assignable to any List reference.
The type List<?extends B>is assignable to List<?extends A>.

1. 只看尖括号里边的!!明确点和范围两个概念
2. 如果尖括号里的是一个类,那么尖括号里的就是一个点,比如List<A>,List<B>,List<Object>
3. 如果尖括号里面带有问号,那么代表一个范围, <? extends A> 代表小于等于A的范围,<? super A>代表大于等于A的范围,<?>代表全部范围
4. 尖括号里的所有点之间互相赋值都是错,除非是俩相同的点
5. 尖括号小范围赋值给大范围,对 ,大范围赋值给小范围,错。如果某点包含在某个范围里,那么可以赋值,否则,不能赋值
6. List<?>和List 是相等的,都代表最大范围
----------------------------------------------------------------------------------
7.补充:List既是点也是范围,当表示范围时,表示最大范围












猜你喜欢

转载自blog.csdn.net/wenyimutouren/article/details/80488505
今日推荐