3.3测试补题

  • volatile关键字的说法错误的是()
    A. 能保证线程安全
    B. volatile关键字用在多线程同步中,可保证读取的可见性
    C. JVM保证从主内存加载到线程工作内存的值是最新的
    D. volatile能禁止进行指令重排序

    解析:volatile不能保证原子性,也就不能保证线程安全。
    答案:A

  • java语言的下面几种数组负责方法中,哪个效率最高?
    A. for 循环逐一复制
    B. System.arraycopy
    C. Array.copyOf
    D. 使用clone方法

    解析:复制的效率System.arraycopy>clone>Arrays.copyOf>for循环
    答案:B

  • 假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()

    boolean isOdd = false;
    
    for(int i=1;i<=2;++i)
    {
    	if(i%2==1)isOdd = trueelse isOdd = false;
    	a+=i*(isOdd?1:-1)}
    

    A. -1
    B. -2
    C. 0
    D. 1

    解析:每个线程对a 均做了两次读写操作,分别是 “ +1 ” 和 “ -2 ”,所以a的可能取值为-1、0、-2。
    答案:D

  • 下面哪个不是标准Statement类?
    A. Statement
    B. PreparedStatement
    C. CallableStatement
    D. BatchedStatement

    解析:Statement在JDBC中相当于SQL语句的载体
    A,Statement是最基本的用法,采用字符串拼接的方式,存在注入漏洞
    B,PreparedStatement对Statement中的SQL语句进行预编译,同时检查合法性,效率高
    C,CallableStatement接口扩展 PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。

    答案:D

  • 假定str0,…,str4后序代码都是只读引用。Java 7中,以上述代码为基础,在发生过一次FullGC后,上述代码在Heap空间(不包括PermGen)保留的字符数为()

    static String str0="0123456789";
    static String str1="0123456789";
    String str2=str1.substring(5);
    String str3=new String(str2);
    String str4=new String(str3.toCharArray());
    str0=null;
    

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

    解析:str1在常量池里,常量池是在PermGen中,不属于Heap空间
    答案:C

  • Java.Thread的方法resume()负责重新开始被一下哪个方法中断的线程的执行()
    A. stop
    B. sleep
    C. wait
    D. suspend

    答案:D

  • 关于异常的编程,以下描述错误的是:()
    A. 在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
    B. int i=Integer.parseInt(”123a”);将产生NumberFormatException
    C. int a[]=null; a[0]=1; 将产生NullPointerException
    D. 输入输出流编程中,读和写时都要抛出IOException

    解析:分母为0 为运行时异常,jvm帮我们补货,无需代码里面显式捕获
    答案:A

  • 关于ASCII码和ANSI码,以下说法不正确的是()?
    A. 标准ASCII只使用7个bit
    B. 在简体中文的Windows系统中,ANSI就是GB2312
    C. ASCII码是ANSI码的子集
    D. ASCII码都是可打印字符

    解析:ASCII码包含一些特殊空字符
    答案:D

  • 下面哪种情况会导致持久区jvm堆内存溢出?
    A. 循环上万次的字符串处理
    B. 在一段代码内申请上百M甚至上G的内存
    C. 使用CGLib技术直接操作字节码运行,生成大量的动态类
    D. 不断创建对象

    解析: http://blog.csdn.net/sivyer123/article/details/17139443
    持久代溢出原因 动态加载了大量Java类而导致溢出

    答案:C

  • 抽象类方法的访问权限默认都是public的(×)

  • 对于子类的构造函数说明,下列叙述中错误的是()
    A. 子类不能继承父类的无参构造函数。
    B. 子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。
    C. 在创建子类的对象时,若不含带参构造函数,将先执行父类的无参构造函数,然后再执行自己的无参构造函数。
    D. 子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。

    解析:构造函数不能被继承,构造方法只能被显式或隐式的调用。
    答案:D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值