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

    • 下列程序的运行结果

      public static void main(String args[]) {
              Thread t = new Thread() {
                  public void run() {
                      pong();
                  }
              };
              t.run();
              System.out.print("ping");
          }
          static void pong() {
              System.out.print("pong");
          }
      }

      A. pingpong
      B. pongping
      C. pingpong和pongping都有可能
      D. 都不输出

      解析:在第7行的时候,调用的是t.run();方法,之间调用run方法就是普通的方法调用而已,所以肯定是先执行pong()再执行System.out.print(“ping”);
      如果第7行换成t.start()方法,答案就应该选择c,因为t.start()后,线程变为就绪状态,什么时候开始执行时不确定的,可能是主程序先继续执行,也可能是新线程先执行。

      答案:B

    • 要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
      A. 让该类不使用任何关键字
      B. 使用private关键字
      C. 使用protected关键字
      D. 使用void关键字

      解析:
      在这里插入图片描述
      protected接受包外的子类访问
      答案:A

    • 在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
      A. Servlet对象
      B. HTTP服务器
      C. Web容器
      D. JSP网页

      解析:web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。
      答案:C

    • Hashtable 和 HashMap 的区别是:
      A. Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口
      B. HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
      C. Hashtable 线程安全的,而 HashMap 是线程不安全的
      D. Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
      E. HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。

      解析:Hashtable:
      (1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
      (2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。
      (3)HashTable直接使用对象的hashCode。
      HashMap:
      (1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。
      (2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。
      (3)HashMap重新计算hash值
      Hashtable,HashMap,Properties继承关系如下:

      public class Hashtable<K,V> extends Dictionary<K,V>
          implements Map<K,V>, Cloneable, java.io.Serializable
          
      public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable

       

      java.lang.Objecct
        java.util.Dictionary<K,V>        
             java.util.Hashtable<Object,Object>
                        java.util.Properties

      答案:BCDE

    • 下列说法错误的有( )
      A. Java面向对象语言容许单独的过程与函数存在
      B. Java面向对象语言容许单独的方法存在
      C. Java语言中的非静态方法属于类中的成员(member)
      D. Java语言中的方法必定隶属于某一类(对象),调用方法与C语言的过程或C++语言的函数相同

      解析: java不允许单独的方法,过程或函数存在,需要隶属于某一类中。——AB错;java语言中的方法属于对象的成员,而不是类的成员。不过,其中静态方法属于类的成员。——C错;D问的是java调用方法和C调用过程,C+ + 的函数一样?肯定不一样。错
      答案:ABCD

    • 下列哪项不属于jdk1.6垃圾收集器?
      A. Serial收集器
      B. parNew收集器
      C. CMS收集器
      D. G1收集器

      解析:G1收集器是jdk1.7引入的
        
      在这里插入图片描述

      答案:D

    • Test.main()函数执行后的输出是( )

      class Test {
          public static void main(String[] args) {
              System.out.println(new B().getValue());
          }
          static class A {
              protected int value;
              public A (int v) {
                  setValue(v);
              }
              public void setValue(int value) {
                  this.value= value;
              }
              public int getValue() {
                  try {
                      value ++;
                      return value;
                  } finally {
                      this.setValue(value);
                      System.out.println(value);
                  }
              }
          }
          static class B extends A {
              public B () {
                  super(5);
                  setValue(getValue()- 3);
              }
              public void setValue(int value) {
                  super.setValue(2 * value);
              }
          }
      }

       

      A. 6 7 7
      B. 22 34 17
      C. 22 74 74
      D. 11 17 34

      解析:new B()第一步执行B的构造方法,先调用super(5),父类构造器中执行setValue()方法,由于B重写了setValue()方法,所以执行的是B中的setValue()方法,此时value = 2×5 = 10。
      new B()第二步setValue(getValue()- 3);,先调用getValue()方法,B没重写getValue方法,所以调用A中的getValue方法。value++; return value;此时返回的value = 11。但是由于getValue块被try finally块包围,因此finally中的语句无论如何都将被执行,所以11这个返回值会先暂存起来,到finally语句块执行完毕后再真正返回出去。finally块中this.setValue(value);调用的是B的setValue方法,此时value = 2×11=22,打印输出。但不影响返回值为11。此时B构造器中setValue的参数为11-3=8,执行完之后value = 2 × 8 =16。
      主函数中输出的是new B().getValue(),我们还要执行getValue方法。同之前一样,getValue中的返回值为16+1=17,打印值为2×17=34,主函数中输出的是返回值17.
      所以输出为22 34 17

      答案:B

    • java8中,下面哪个类用到了解决哈希冲突的开放定址法
      A. LinkedHashSet
      B. HashMap
      C. ThreadLocal
      D. TreeMap

      解析:ThreadLocal的set方法可能会有的情况。
      1.探测过程中slot都不无效,并且顺利找到key所在的slot,直接替换即可
      2.探测过程中发现有无效slot,调用replaceStaleEntry,效果是最终一定会把key和value放在这个slot,并且会尽可能清理无效slot
      2.1 在replaceStaleEntry过程中,如果找到了key,则做一个swap把它放到那个无效slot中,value置为新值
      2.2 在replaceStaleEntry过程中,没有找到key,直接在无效slot原地放entry
      3.探测没有发现key,则在连续段末尾的后一个空位置放上entry,这也是线性探测法的一部分。放完后,做一次启发式清理,如果没清理出去key,并且当前table大小已经超过阈值了,则做一次rehash,rehash函数会调用一次全量清理slot方法也即expungeStaleEntries,如果完了之后table大小超过了threshold – threshold / 4,则进行扩容2倍。

      答案:C

    • 在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。( )

      解析:java 虚拟机,对于方法的调用采用的是栈帧(方法调用和方法执行),调用则入栈,完成之后则出栈。不就回收了内存资源。而针对于其他,GC回收的时间不定。
      答案:ב’

    • Java数据库连接库JDBC用到哪种设计模式?
      A. 生成器
      B. 桥接模式
      C. 抽象工厂
      D. 单例模式

      解析:桥接模式是结构型模式,关注点在依赖关系的维护。对于jdbc技术来说,它解耦了业务与数据库通信协议这两个纬度之间的关系,所以这两个纬度之间的关系就需要一个桥,即Driver,至于DriverManager把这个关系接到哪里就是运行时的事情了。
      微观上,从connection的创建来看,它更像一个抽象工厂模式,特定的Driver创建对应的connection。
      宏观上,从业务代码与connection的关系来看,关键点在于一个sql怎么转化为对应的通信协议,就属于桥接。

      答案:B

    • 关于下面的一段代码,以下哪些说法是正确的:

      public static void main(String[] args) {
          String a = new String("myString");
          String b = "myString";
          String c = "my" + "String";
          String d = c;
          System.out.print(a == b);
          System.out.print(a == c);
          System.out.print(b == c);
          System.out.print(b == d);
      }

       

      A. System.out.print(a == b)打印出来的是false
      B. System.out.print(a == c)打印出来的是true
      C. System.out.print(b == c)打印出来的是false
      D. System.out.print(b == d)打印出来的是true

      解析:A:a指向堆内存,b指向常量池,因此地址不相等,false
      B:java有常量优化机制,c也指向常量池,且与b指向同一个,则a与c地址不相等,false;
      C:b与c地址相等,true
      D:d是c的副本,地址相同,所以b与d地址相等,true

      答案:AD

  • 相关阅读:
    x-pack-crack
    ELK获取用户真实IP
    多层代理获取用户真实IP
    ELK帮助文档
    logstash filter plugin
    开源实时日志分析ELK平台部署
    消息队列集群kafka安装配置
    日志采集客户端 filebeat 安装部署
    rsync + inotify 同步
    【转】OpenWrt 防火墙/etc/config/firewall介绍
  • 原文地址:https://www.cnblogs.com/l999q/p/12293145.html
Copyright © 2011-2022 走看看