判断对错。List,Set,Map都继承自继承Collection接口。

正确答案: B 你的答案: B (正确)

解析:

图片说明


Given:

public class IfTest{
    public static void main(string[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println(“Not equal”);
        else
            System.out.println(“Equal”);
     }
}

What is the result?

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

The output is “Equal”
The output in “Not Equal”
An error at line 5 causes compilation to fall.
The program executes but does not print a message.


解析:

  1. Java中,赋值是有返回值的 ,赋什么值,就返回什么值。比如这题,x=y,返回y的值,所以括号里的值是1。
  2. Java跟C的区别,C中赋值后会与0进行比较,如果大于0,就认为是true;而Java不会与0比较,而是直接把赋值后的结果放入括号。但是int类型,不能转换为boolean,所以会报错:“ Type mismatch: cannot convert from int to boolean ”

以下程序的运行结果是:( )

TreeSet<Integer> set = new TreeSet<Integer>();
 TreeSet<Integer> subSet = new TreeSet<Integer>();
 for(int i=606;i<613;i++){
 if(i%2==0){
 set.add(i);
 }
 }
 subSet = (TreeSet)set.subSet(608,true,611,true);
 set.add(629);
 System.out.println(set+" "+subSet);

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

编译失败
发生运行时异常
[606, 608, 610, 612, 629] [608, 610]
[606, 608, 610, 612, 629] [608, 610,629]

解析:

        subset(form,true,to,true)是Treeset的非静态方法,该方法返回从form元素到to元素的一个set集合,两个boolean类型是确认是否包含边境值用的。subset方法是求set的范围内的子集,两个true是表示是否包含端点(608和611),故subSet的值为[608,610]
subSet = (TreeSet)set.subSet(608,true,611,true);  
//此时的subSet的值为[606,608,610,612] set.add(629);


jre 判断程序是否执行结束的标准是()

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

所有的前台线程执行完毕
所有的后台线程执行完毕
所有的线程执行完毕
和以上都无关

解析:

         main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。                                                                                    
前台线程和后台线程的区别和联系:
1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。
4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
说明:   
        应用程序的主线程以及使用Thread构造的线程都默认为前台线程                      
        使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,或是定时对某些系统资源进行扫描的程序

下面有关java类加载器,说法正确的是?

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

引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用

解析:

Java中的类加载器

Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由Java 应用开发人员编写的。系统提供的类加载器主要有下面三个:


引导类加载器(bootstrap class loader):

它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。主要负责jdk_home/lib目录下的核心api 或 -Xbootclasspath 选项指定的jar包装入工作(其中的jdk_home是指配置jdk环境变量是java_home的配置路径,一般是jdk/jre所在目录)。

扩展类加载器(extensions class loader):

它用来加载 Java 的扩展库。Java虚拟机的实现会提供一个扩展库目录,扩展类加载器在此目录里面查找并加载 Java 类,主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作。

系统类加载器(system class loader):

它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。主要负责CLASSPATH/-Djava.class.path所指的目录下的类与jar包装入工作.


        除了系统提供的类加载器以外,开发人员可以通过继承java.lang.ClassLoader类的方式实现自己的类加载器,从而进行动态加载class文件,以满足一些特殊的需求,这体现java动态实时类装入特性。
        除了引导类加载器之外,所有的类加载器都有一个父类加载器,通过getParent()方法可以得到。对于系统提供的类加载器来说,系统类加载器的父类加载器是扩展类加载器,而扩展类加载器的父类加载器是引导类加载器;对于开发人员编写的类加载器来说,其父类加载器是加载此类加载器 Java 类的类加载器。因为类加载器 Java 类如同其它的 Java 类一样,也是要由类加载器来加载的。一般来说,开发人员编写的类加载器的父类加载器是系统类加载器。类加载器通过这种方式组织起来,形成树状结构。树的根节点就是引导类加载器。下图中给出了一个典型的类加载器树状组织结构示意图,其中的箭头指向的是父类加载器。



以下说法错误的是()

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

其他选项均不正确
java线程类优先级相同
Thread和Runnable接口没有区别
如果一个类继承了某个类,只能使用Runnable实现线程

解析:

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

如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y);  的输出结果是()

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

2530
55
2052055
25255

解析:

x,y都是整型数,然后输出两个相加之和,但是中间出现了“”,代码默认将“”后面的变成了字符串想加,也就出现了25 25 5

运用下列哪个命令能够获取JVM的内存映像

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

jinfo
jmap
jhat
jstat

解析:

1、jps:查看本机java进程信息。

2、jstack:打印线程的信息,制作线程dump文件。

3、jmap:打印内存映射,制作dump文件

4、jstat:性能监控工具

5、jhat:内存分析工具

6、jconsole:简易的可视化控制台

7、jvisualvm:功能强大的控制台


下列程序执行后结果为( )

classA {
    publicintfunc1(inta, intb) {
        returna - b;
    }
}
classB extendsA {
    publicintfunc1(inta, intb) {
        returna + b;
    }
}
publicclassChildClass {
    publicstaticvoidmain(String[] args) {
    A a = newB();
    B b = newB();
    System.out.println("Result="+ a.func1(100, 50));
    System.out.println("Result="+ b.func1(100, 50));
    }
}

正确答案: A   你的答案: A (正确)

Result=150Result=150
Result=100Result=100
Result=100Result=150
Result=150Result=100

解析:

此题考查的是多态。
  对于多态,可以总结它为:       

     一、使用父类类型的引用指向子类的对象;

    二、该引用只能调用父类中定义的方法和变量;

    三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)

    四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。

多态的3个必要条件:

        1.继承   2.重写   3.父类引用指向子类对象。

向上转型: Person person = new Man() ; //向上转型不需要强制类型转化
向下转型: Man man = (Man)new Person() ; //必须强制类型转化

事务隔离级别是由谁实现的?

正确答案: C   你的答案: C (正确)

Java应用程序
Hibernate
数据库系统
JDBC驱动程序

解析:

    A. 我们写java程序的时候只是设定事物的隔离级别,而不是去实现它
    B. Hibernate是一个java的数据持久化框架,方便数据库的访问
    C. 事物隔离级别由数据库系统实现,是数据库系统本身的一个功能
    D. JDBC是java database connector,也就是java访问数据库的驱动
        在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别;为了解决更新丢失,脏读,不可重读(包括虚读和幻读)等问题在标准SQL规范中,定义了4个事务隔离级别,分别为未授权读取,也称为读未提交(read uncommitted);授权读取,也称为读提交(read committed);可重复读取(repeatable read);序列化(serializable).


判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。

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

解析:

java多态有两种情况:重载和重写
重写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法

下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。

正确答案: C   你的答案: C (正确)

java.exe
javadoc.exe
jdb.exe
javaprof.exe

解析:

        java.exe是java虚拟机
        javadoc.exe用来制作java文档
        jdb.exe是java的调试器
        javaprof,exe是剖析工具