JAVA 水平测试

本贴最后更新于 1801 天前,其中的信息可能已经物是人非

想知道自己的 Java 水平吗?这里有一份精心准备的测试题,只有 10 道题,但难度不低。
答对 4 题,说明你刚入门;
答对 6 题,说明还不错;
答对 8 题,说明你基础很好;
答对 10 题,说明你对 Java 非常熟悉。

1 (单选)下列代码的输出是什么?


final char a = 'A', d = 'D';
   char grade = 'B';

   switch(grade) {
     case a:
     case 'B': System.out.print("great");
     case 'C': System.out.print("good"); break;
     case d:
     case 'F': System.out.print("not good");
   }

A.great
B.greatgood
C.greatnot good
D.not good
E.good

2 (单选)下列代码会依次输出:

Integer num1 = 10;
Integer num2 = 10;
Integer num3 = 500;
Integer num4 = 500;

System.out.println(num1 == num2);
System.out.println(num3 == num4); 

A.true false
B.false true
C.true true
D.false false

3 (单选)下列代码的输出是什么?


 public class DataModel {
       static {
           x = 15;
       }

       static int x = 0;

       public DataModel() {
           x = 5;
       }

       static {
           x = 10;
       }

       public static void main(String[] args) {
           DataModel dataModel = new DataModel();
           System.out.println(x);
       }

   }

A.0
B.5
C.10
D.15

4 (单选)下列说法不正确的是:

A.CountDownLatch 允许一个或多个线程等待其他线程完成操作
B.CyclicBarrier 可让一组线程互相等待,直到最后一个线程到达屏障时,所有被屏障拦截的线程才会继续运行
C.CountDownLatch 和 CyclicBarrier 中的计数器均可通过 reset()重置循环利用
D.Semaphore 可以用来控制同时访问某个 特定资源的线程数量

5 (单选)下列说法不正确的是:

A.JDK 动态代理需实现 InvocationHandler,对代理对象方法的调用,会分派到其 invoke 方法真正实现调用
B. JDK 动态代理通过 Proxy 类,调用其 newProxyInstance 方法,生成一个实现了相应基础接口的代理类实例
C.cglib 是一个高性能的代码生成库,cglib 实现动态代理对象与 JDK 动态代理模式一样都要求对象实现接口
D.cglib 实现动态代理是为了解决接口依赖的代理问题,采取的是创建目标类子类的方式

6 (单选)下列说法不正确的是:

A.wait 方法属于 Object 方法,而 sleep()方法属于 Thread 类方法
B.wait 方法即可以有参数传入也可无参数传入,sleep 方法必须有参数传入
C.无论是 wait 方法还是 sleep 方法均需要考虑对 InterruptedException 的异常处理
D.无论是调用 sleep 方法还是 wait 方法的时候,对象的锁将释放,其他任务可以获得这个锁

7 (多选)下列说法正确的是:

A. volatile,synchronized 都可以修饰变量,方法以及方法块
B.对一个 volatile 变量的写操作 happen-before 于后续对于这个 volatile 变量的读操作
C.volatile 和 synchronized 机制均可确保变量在多个线程之间的可见性和原子性,但 volatile 是更轻量级的同步机制
D.volatile 只能确保可见性,加锁机制即可以确保可见性又可以确保原子性

8 (多选)关于类加载器 ClassLoader(Java 9 以前版本),下列说法正确的是:

A.启动类加载器(Bootstrap ClassLoader):用来加载 jre/lib 下面的 jar 包,如 rt.jar
B. 扩展类加载器(Extensions ClassLoader):用来加载 jre/lib/ext/下的 jar 包
C.应用类加载器(Application ClassLoader):用来根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
D.由于父加载器的类型对于子加载器可见,所以 j 父加载器加载过的类型不会在子类加载器中重复加载

9 (多选)下列说法正确的是:

A. TCP 重传机制会导致 HTTP 服务端收到重复的报文
B.TCP 协议提供可靠的连接服务,采用三次握手建立一个连接,而终止一个连接需要四次挥手
C.在 TCP 连接建立过程中,服务器端通过创建 socket,bind,listen 完成连接准备工作,通过调用 accept 等待连接的建立。客户端通过创建 socket,调用 connect 发起连接建立请求
D.只有主动发起关闭 TCP 连接的一方才会进入 TIME_WAIT 状态

10 (多选)执行下列代码,选出所有可能被打印出的选项:


public class MyClass {
  public String name;
  public void execute() {
    System.out.print("1");
    try {
      System.out.print("2");
         name.toString();
         System.out.print("3");
    } catch (NullPointerException e) {
      System.out.print("4");
      throw e;
    }
     System.out.print("5");
   }
   public static void main(String[] args) {
     MyClass myClass = new MyClass();
    myClass.execute();
     System.out.print("6");

    } 
}

A.1
B.2
C.3
D.4
E.5
F.6
G.NullPointerException stack trace

在线考试:
https://quiz.xiedaimala.com/quizzes/3

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    10 分

  • someone
    作者

    明明 1 分说什么 10 分!!!!