2.16Java专项测试复盘

  • 运行代码,输出的结果是()

      public class P {
          public static int abc = 123;
              static{
              System.out.println("P is init");
              }
          }
          public class S extends P {
              static{
                  System.out.println("S is init");
              }
          }
          public class Test {
              public static void main(String[] args) {
                  System.out.println(S.abc);
          }
      }

    A. P is init
    123
    B. S is init
    P is init
    123
    C. P is init
    S is init
    123
    D. S is init
    123

    解析:子类引用父类的静态字段,只会触发子类的加载、父类的初始化,不会导致子类初始化
    答案:A

  • 后端获取数据,向前端输出过程中,以下描述正确的是
    A. 对于前端过滤过的参数,属于可信数据,可以直接输出到前端页面
    B. 对于从数据库获得的数据,属于可信数据,可以直接输出到前端页面
    C. 对于从用户上传的Excel等文件解析出的数据,属于可信数据,可以直接输出到前端页面
    D. 其它选项都不属于可信数据,输出前应该采用信息安全部发布的XSSFilter做进行相应编码

    解析:后端获取数据,向前端输出的过程中,输出前应该采用信息安全部发布的XSSFilter进行相应编码。
    答案:D

  • ArrayList和Vector主要区别是什么?
    A. Vector与ArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步
    B. Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步
    C. Vector是通过链表结构存储数据,ArrayList是通过数组存储数据
    D. 上述说法都不正确

    解析:Vector支持线程的同步,也就是内部加锁的。但是效率低,因此在新版jdk中加入线程不安全的Arraylist
    答案:A

  • 关于匿名内部类叙述正确的是? ( )
    A. 匿名内部类可以继承一个基类,不可以实现一个接口
    B. 匿名内部类不可以定义构造器
    C. 匿名内部类不能用于形参
    D. 以上说法都不正确

    解析:由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器。
    答案:B

  • 下列叙述中,错误的是( )
    A. File类能够存储文件属性
    B. File类能够读写文件
    C. File类能够建立文件
    D. File类能够获取文件目录信息

    解析:能够读写文件的是数据流(OutputStream和InputStream),File类能操作文件本身,但不能对文件内容进行修改。
    答案:B

  • 关于多线程和多进程,下面描述正确的是():
    A. 多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。
    B. 线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护。
    C. 线程的通信速度更快,切换更快,因为他们在同一地址空间内。
    D. 一个线程可以属于多个进程。

    解析:
    A.子进程得到的是除了代码段是与父进程共享以外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,子进程可获得父进程的所有堆和栈的数据,但二者并不共享地址空间。两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行;进程的线程之间共享由进程获得的资源,但线程拥有属于自己的一小部分资源,就是栈空间,保存其运行状态和局部自动变量的。
    B.线程之间共享进程获得的数据资源,所以开销小,但不利于资源的管理和保护;而进程执行开销大,但是能够很好的进行资源管理和保护。
    C.线程的通信速度更快,切换更快,因为他们共享同一进程的地址空间。
    D.一个进程可以有多个线程,线程是进程的一个实体,是CPU调度的基本单位。

    答案:AC

  • 如果Child extends Parent,那么正确的有()?
    A. 如果Child是class,且只有一个有参数的构造函数,那么必然会调用Parent中相同参数的构造函数
    B. 如果Child是interface,那么Parent必然是interface
    C. 如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface
    D. 如果Child是class,并且没有显示声明任何构造函数,那么此时仍然会调用Parent的构造函数

    解析:A 可以调用父类无参的构造函数,子类的有参构造函数和是否调用父类的有参数的构造函数无必然联系。
    答案:BCD

  • 下面哪些情况可以引发异常:
    A. 数组越界
    B. 指定URL不存在
    C. 使用throw语句抛出
    D. 使用throws语句

    解析:throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
    答案:ABC

  • 当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?
    A. CountDownLatch
    B. CyclicBarrier
    C. Semaphore
    D. Future

    解析:CountDownLatch 允许一个线程或多个线程等待特定情况,同步完成线程中其他任务。举例:百米赛跑,就绪运动员等待发令枪发动才能起步。
    CyclicBarrier 和CountDownLatch一样都可以协同多个线程,让指定数量的线程等待期他所有的线程都满足某些条件之后才继续执行。举例:排队上摩天轮时,每到齐四个人,就可以上同一个车厢。

    答案:A

  • What results from the following code fragment?
      int i = 5;
      int j = 10;
      System.out.println(i + ~j);

    A. Compilation error because”~”doesn’t operate on integers
    B. -5
    C. -6
    D. 15

    解析:公式-n=~n+1可推出~n=-n-1,所以~10=-11再加5结果为-6
    答案:C

  • 下面代码的输出是什么?
      public class Base
      {
          private String baseName = "base";
          public Base()
          {
              callName();
          }
    
          public void callName()
          {
              System. out. println(baseName);
          }
    
          static class Sub extends Base
          {
              private String baseName = "sub";
              public void callName()
              {
                  System. out. println (baseName) ;
              }
          }
          public static void main(String[] args)
          {
              Base b = new Sub();
          }
      }

    A. null
    B. sub
    C. base

    解析:new Sub();在创造派生类的过程中首先创建基类对象,然后才能创建派生类。创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法,此时派生类还未构造,所以变量baseName的值为null
    答案:A

  • 下面关于变量及其范围的陈述哪些是不正确的()
    A. 实例变量是类的成员变量
    B. 实例变量用关键字static声明
    C. 在方法中定义的局部变量在该方法被执行时创建
    D. 局部变量在使用前必须被初始化

    解析:B.类变量(静态变量)用关键字static声明,B错误
    C.方法中的局部变量在方法被调用加载时开始入栈时创建,方法入栈创建栈帧包括局部变量表操作数栈,局部变量表存放局部变量,并非在执行该方法时被创建,C错误

    答案:BC

  • final、finally和finalize的区别中,下述说法正确的有?
    A. final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    B. finally是异常处理语句结构的一部分,表示总是执行。
    C. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
    D. 引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。

    解析:A,D考的一个知识点,final修饰变量,变量的引用(也就是指向的地址)不可变,但是引用的内容可以变(地址中的内容可变)。
    B,finally表示总是执行。但是其实finally也有不执行的时候,但是这个题不要扣字眼。
    1.在try中调用System.exit(0),强制退出了程序,finally块不执行。
    2.在进入try块前,出现了异常,finally块不执行。
    C,finalize方法,这个选项错就错在,这个方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。第二次进入回收队列的时候,不会再执行其finalize方法,而是直接被二次标记,在下一次GC的时候被GC。

    答案:AB

原文地址:https://www.cnblogs.com/l999q/p/12318244.html

时间: 2024-10-09 16:01:05

2.16Java专项测试复盘的相关文章

2.12Java专项测试复盘

以下哪个接口的定义是正确的?( ) A. interface B { void print() { } ;} B. interface B { static void print() ;} C. abstract interface B extends A1, A2 //A1.A2为已定义的接口 { abstract void print(){ };} D. interface B { void print();} 解析:接口中方法的默认修饰符时public abstract,抽象方法可是没有方

2.14Java专项测试复盘

在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( ). A. System.out.print (buffer[i]); B. DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename)); C. DataInputStream din = new DataInputStream(new FileInputStream(this.filename));. D. System

2.18Java专项测试复盘

结构型模式中最体现扩展性的模式是() A. 装饰模式 B. 合成模式 C. 桥接模式 D. 适配器 解析:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 答案:A 以下描述正确的是() A. CallableStatement是PreparedStatement的父接口 B. PreparedStatement是CallableStatement的父接口 C. CallableStatement是Stateme

2.20专项测试复盘

对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理. A. 正确 B. 错误 解析:运行异常,可以通过java虚拟机来自行处理.非运行异常,我们应该捕获或者抛出. 答案:B 下面哪些类可以被继承? Java.lang.Thread.java.lang.Number.java.lang.Double.java.lang.Math. java.lang.ClassLoader A. Thread B. Number C. Double D. Math E. ClassLoader

2.21专项测试复盘

以下哪几种方式可用来实现线程间通知和唤醒:( ) A. Object.wait/notify/notifyAll B. ReentrantLock.wait/notify/notifyAll C. Condition.await/signal/signalAll D. Thread.wait/notify/notifyAll 解析:Condition是在java 1.5中才出现的,它用来替代传统的Object的wait().notify()实现线程间的协作,相比使用Object的wait().n

2.23专项测试复盘

将关键字序列50,40,95,20,15,70,60,45,80调整成一个小根堆,堆结构是15,20,60,45,40,70,95,50,80(). 解析:创建堆的基本思想:先把无序的关键字按顺序构造成完全二叉树,从最后一个分支节点开始往前,不断地利用筛选算法,将一棵棵子树调整为一个堆(让根与其左右子节点比,将他们三个最小的值选出来作为根,反复交换使所有结点满足小根),一直进行到完全二叉树的根节点为止. 答案:√ 设某强连通图中有 n 个顶点,则该强连通图中最小的边数为n,最大边数为n(n-1)

2.24专项测试复盘

以下与数据的存储结构无关的术语是() A. 循环队列 B. 链表 C. 哈希表 D. 栈 解析:存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有: 顺序存储 , 链式存储 , 索引存储 ,以及 散列存储 .其中散列所形成的存储结构叫 散列表(又叫哈希表) ,因此哈希表也是一种存储结构.栈只是一种抽象数据类型,是一种逻辑结构,栈逻辑结构对应的顺序存储结构为顺序栈,对应的链式存储结构为链栈,循环队列是顺序存储结构,链表是线性表的链式存储结构 答案:D 下面的一些说法哪些是正确的:( )

【金阳光测试】KK公益讲座第63期-5月30号(周六晚八点) 分享主题: IOS专项测试基础

[金阳光测试]KK公益讲座第63期-5月30号(周六晚八点)分享主题: IOS专项测试基础听课地点:http://www.chuanke.com/1983382-110713.html主讲:小白老师老师简介:前风行网.腾讯测试,现为一流互联网公司任职高级开发测试时间:5月30号 晚上8点开始

Android性能专项测试测试点指导(二)

Android性能专项测试测试点指导(一) 上一篇文章通过导图的方式介绍了性能专项的几个测试点,那么今天将会详细阐述下. 内存: 内存泄漏: 老生常谈的最多就是这货,这家伙的测试方法其实是最简单也是最难的,为什么简单,因为你要定位到路径,只需要重复操作即可,比如你怀疑播放器泄漏了,重复进入退出N次,那么就可以确定是播放器出问题了,可以提单了:说难,你需要进一步分析到底是哪里泄漏了,通过MAT工具去对比,去分析定位到类,那就需要精力和时间了,通常还吃力不讨好-最近,出现了这样一个工具LeakCan