zoukankan      html  css  js  c++  java
  • 2.18Java专项测试复盘

    • 结构型模式中最体现扩展性的模式是()
      A. 装饰模式
      B. 合成模式
      C. 桥接模式
      D. 适配器

      解析:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
      答案:A

    • 以下描述正确的是()
      A. CallableStatement是PreparedStatement的父接口
      B. PreparedStatement是CallableStatement的父接口
      C. CallableStatement是Statement的父接口
      D. PreparedStatement是Statement的父接口

      解析:继承关系如图:
      在这里插入图片描述
      答案:B

    • 在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。()
      A. 正确
      B. 错误

      解析:在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的.
      答案:B

    • 对文件名为Test.java的java代码描述正确的是()

    	class Person {
    	    String name = "No name";
    	    public Person(String nm) {
    	        name = nm;
    	    }
    	}
    	class Employee extends Person {
    	    String empID = "0000";
    	    public Employee(String id) {
    	        empID = id;
    	    }
    	}
    	public class Test {
    	    public static void main(String args[]) {
    	        Employee e = new Employee("123");
    	        System.out.println(e.empID);
    	    }
    	}
    	```
    	A. 输出:0000
    	B. 输出:123
    	C. 编译报错
    	D. 输出:No name
    
    	**解析:父类没有无参的构造函数,所以子类需要在自己的构造函数中显式调用父类的构造函数,添加super("nm");否则报错。**
    	答案:C
    
    - 关于ThreadLocal类 以下说法正确的是
    	A. ThreadLocal继承自Thread
    	B. ThreadLocal实现了Runnable接口
    	C. ThreadLocal重要作用在于多线程间的数据共享
    	D. ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本
    	E. ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏
    
    	**解析:ThreadLocal并没有继承自Thread,也没有实现Runnable接口。所以AB都不对。ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,C选项错。**
    	答案:DE
    
    - 以下JAVA程序的运行结果是什么(  )
    ```java
    	public static void main(String[] args) {
    		Object o1 = true ? new Integer(1) : new Double(2.0);
    		Object o2;
    		if (true) {
    		    o2 = new Integer(1);
    		} else {
    		    o2 = new Double(2.0);
    		}
    		System.out.print(o1);
    		System.out.print(" ");         
    		System.out.print(o2);
    	}
    	```
    	A. 1 1
    	B. 1.0 1.0
    	C. 1 1.0
    	D. 1.0 1
    
    	**解析:三元操作符如果遇到可以转换为数字的类型,会做自动类型提升。若两个操作数都是直接量数字,则返回值类型为范围较大者**
    	答案:D
    
    - 下列关于Java并发的说法中正确的是()
    	A. CopyOnWriteArrayList适用于写多读少的并发场景
    	B. ReadWriteLock适用于读多写少的并发场景
    	C. ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
    	D. 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了
    
    	**解析:A,CopyOnWriteArrayList适用于写少读多的并发场景
    B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,读与读之间可以并发执行。在读多写少的情况下可以提高效率
    C,ConcurrentHashMap是同步的HashMap,读写都加锁
    D,volatile只保证多线程操作的可见性,不保证原子性**
    	答案:B
    
    - 下列哪个说法是正确的()
    	A. ConcurrentHashMap使用synchronized关键字保证线程安全
    	B. HashMap实现了Collction接口
    	C. Array.asList方法返回java.util.ArrayList对象
    	D. SimpleDateFormat是线程不安全的
    
    	**解析:ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。C中,应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类:java.util.Arrays.ArrayList  **
    	答案: D
    
    - URL u =new URL("http://www.123.com");。如果www.123.com不存在,则返回______。
    	A. http://www.123.com
    	B. ””
    	C. null
    	D. 抛出异常
    
    	**解析:new URL()时必须捕获检查异常,但这个异常是由于字符串格式和URL不符导致的,这个异常属于IOException,与网址是否存在无关。URL的toString方法返回字符串,无论网址是否存在。**
    	答案:A
    
    - 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )
    	A. args[0] = "MyTest a b c"
    	B. args[0] = "MyTest"
    	C. args[0] = "a"
    	D. args[1]= "b"
    
    	**解析:对于java命令,类名后面跟着的就是main函数的参数,多个参数则用空格隔开。 main方法的形参是一个string数组所以对于java mytest a b c传入的参数算是一个string数组。 即args[0]=a args[1]=b args[2]=c**
    	答案:CD
    
    - Given the following code:
    ```java
    	import EnclosingOne.InsideOne
    	class Enclosingone
    	{
    	    public class InsideOne {}
    	
    	}
    	public class inertest
    	{
    	   public static void main(string[]args)
    	    {
    	        EnclosingOne eo = new EnclosingOne();
    	        //insert code here
    	    }
    	}
    	```
    	A. InsideOne ei=eo.new InsideOne();
    	B. eo.InsideOne ei=eo.new InsideOne();
    	C. InsideOne ei=EnclosingOne.new InsideOne();
    	D. EnclosingOne.InsideOne ei=eo.new InsideOne();
    
    	**解析:因为import EnclosingOne.InsideOne,所以A正确。内部类其实和类的属性没什么区别,只是在声明的时候必须是Outer.Inner a,所以D正确。**
    	答案:AD
  • 相关阅读:
    go 学习成长之路
    多个ssh key 配置多个网址
    ubuntu 安装 gightingale
    关于open falcon 与nightingale 的一些调研
    kubeadm 命令简介
    windows kubectl 远程操作k8s
    ubuntu18.04 kuebadm 安装 k8s-1.15.9
    kubeadm 如何将节点加入集群
    centos7 kubeadm 搭建k8s
    docker 常用命令
  • 原文地址:https://www.cnblogs.com/l999q/p/12325509.html
Copyright © 2011-2022 走看看