• 2.19Java专项测试复盘


    • 关于Java内存区域下列说法不正确的有哪些
      A. 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器.
      B. Java虚拟机栈描述的是java方法执行的内存模型,每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表、类信息、动态链接等信息
      C. Java堆是java虚拟机所管理的内存中最大的一块,每个线程都拥有一块内存区域,所有的对象实例以及数组都在这里分配内存。
      D. 方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据。

      解析: B.没有类信息,类信息是在方法区中。C中线程共享。
      答案:BC

    • 往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:

    	public class OuterClass{
    	    private float f=1.0f;
    	    //插入代码到这里
    	}
    	```
    	A.
    ```java
    	class InnerClass{
    			public static float func(){return f;}
    	}
    	```
    	B.
    ```java
    	abstract class InnerClass{
    		public abstract float func(){}
    	}
    	```
    	C.
    ```java
    	static class InnerClass{
    		protected static float func(){return f;}
    	}
    	```
    	D. 
    ```java
    	public class InnerClass{
    	 	static float func(){return f;}
    	}
    	```
    
    	**解析:静态内部类才可以声明静态方法
    静态方法不可以使用非静态变量
    抽象方法不可以有函数体,故B错。
    ACD中函数func都是静态函数,而变量f是非静态的。静态函数直接访问非静态变量会有问题。**
    	答案:ABCD
    
    - 哪个是不正确的字符常量?
    	A. ”
    ”
    	B. ”1”
    	C. ”a”
    	D. ”101”
    
    	**解析:字符文字表示为字符或转义序列,用ASCII单引号括起来。**
    	答案:ABCD
    
    - 下面代码的输出结果是什么?
    ```java
    	public class ZeroTest {
    	    public static void main(String[] args) {
    	     try{
    	       int i = 100 / 0;
    	       System.out.print(i);
    	  }catch(Exception e){
    	       System.out.print(1);
    	       throw new RuntimeException();
    	  }finally{
    	       System.out.print(2);
    	  }
    	      System.out.print(3);
    	 }
    	 }
    	```
    	A. 3
    	B. 123
    	C. 1
    	D. 12
    
    	**解析:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了。**
    	答案:D
    
    - 有如下一段代码,请选择其运行结果()
    ```java
    	public class StringDemo{
    	  private static final String MESSAGE="taobao";
    	  public static void main(String [] args) {
    	    String a ="tao"+"bao";
    	    String b="tao";
    	    String c="bao";
    	    System.out.println(a==MESSAGE);
    	    System.out.println((b+c)==MESSAGE);
    	  }
    	}
    	```
    	A. true true
    	B. false false
    	C. true false
    	D. false true
    
    	**解析:首先判断a==MESSAGE 同一份字符串常量在内存中只有一份,因此是同一地址,返回true
    再次比较(b+c)==MESSAGE 这相当于 new String(b+c)==MESSAGE 这里new了一个String对象,所以返回false**
    	答案:C
    
    - 在下列排序算法中,哪一个算法的时间复杂度与初始序列无关( )
    	A. 直接插入排序
    	B. 冒泡排序
    	C. 快速排序
    	D. 直接选择排序
    
    	**解析:每次需要遍历一遍选择无序部分最大的,无论是否有序,都要遍历才能找到,所以其时间复杂度与初始序列无关。**
    	答案:D
  • 相关阅读:
    MySQL 优化实施方案
    MySQL Replication 主从复制全方位解决方案
    CentOS 7.X 系统安装及优化
    W25Q32的使用
    Word分栏
    转载:STM32之中断与事件---中断与事件的区别
    常见贴片电阻的分类、功率、封装、标注规则
    导线时延
    重装系统流程
    MFC应用程序向导生成的文件
  • 原文地址:https://www.cnblogs.com/l999q/p/12331854.html
Copyright © 2020-2023  润新知