• Java基础错题集(一)


    1.(360-2020春季招聘笔试-Java方向)

    以下说法对于集合类底层实现错误的是?(D)

    • A.HashMap 底层存储使用到数组、链表、树等数据结构。

    • B. ArrayList 的底层采用的数据结构是数组

    • C.HashSet 是依靠 HashMap 来实现的。

    • D. TreeMap 的底层存储采用的是 AVL-树 数据结构

    解析: TreeMap 的底层存储采用的是红黑树(自平衡的排序二叉树)

    2.下面程序的运行结果是(B)

    String str1 = "hello";

    String str2 = "he" + new String("llo");

    System.err.println(str1 == str2);

    • A.exception

    • B.无输出

    • C.false

    • D.true

    解析:str1指向的是常量池里的对象,代表的是一个常量,而str2指向的是堆里面的对象,因为new生成的字符串对象会占用堆空间,所以他们的指向不同,判断结果为false。

    3.关于String,StringBuffer,StringBuider的说法,下列正确的是(D)

    • A. StringBuffer线程不安全,StringBuilder线程安全

    • B.String str = new String("123");该过程产生了一个String对象

    • C. String是一个不可变类,可以被继承

    • D.String str = new String("123");该过程产生了两个或一个String对象

    解析:StringBuffer线程安全,StringBuilder线程不安全,所以StringBuilder性能高一些。String类被final修饰,不能被继承。

    对于String str = new String("123");JVM首先在常量池中查找是否存在“123”如果存在就啥也不做,如果不存在,就创建一个对象,并将它放入常量池,那么这就算了一个;当JVM遇到new时,又会在堆上创建一个String对象,并将其引用返回给str,这又是一个,加起来就是2个了。

    4.【2020】奇安信秋招Java方向试卷3

    String s = new String("xyz");创建了几个StringObject(C)

    • A. 一个

    • B. 三个

    • C.两个或一个都有可能

    • D.两个

    解析:这题跟上题考的是一个知识点,如果常量池中存在"xyz",则只创建一个对象,如果常量池中不存在"xyz",则需要创建两个对象。

    5.(百度2021校招Java研发工程师笔)

    关于线程池ThreadPoolExecutor生命周期的说法错误是:(C)

    • A.RUNNING: 可以接受新的请求并执行排队的任务。

    • B.SHUTDOWN: 不接受新的任务,打断空闲线程,但是继续执行完内部队列中排队的任务。

    • C.WAITING: 将新的任务加入任务队列,打断空闲线程,并挂起所有正在执行的线程。    

    • D.STOP: 不接受新的任务,打断所有线程,清空任务队列,并返回队列中未完成的任务。

    解析:ThreadPoolExecutor 的五种状态

    1. RUNNING : 线程池创建之后的初始状态,在该状态下可以执行任务

    2.SHUTDOWN 该状态下线程池不再接收新任务,但是会将工作队列中的任务执行完毕

    3. STOP : 该状态下线程池不再接收新任务,也不会处理工作队列中的剩余任务,并且将会中断所有工作进程

    4. TIDYING : 该状态下所有任务都已终止或处理完成,将会执行terminated()钩子方法

    5. TERMINATED : 执行完terminated方法之后的状态

    6. (单选题,5.0分)以下关于Java传递方法参数说法正确的是?(C)

    • A. Java的参数传递在参数为基本数据类型时是值传递,在参数为对象时传递的是参数的引用

    • B. Java中的参数传递是引用传递,其传递的是参数的引用

    • C. Java的参数传递是值传递,其传递的是引用的地址值,所以是值传递

    解析:Java只存在值传递!!!不存在引用传递!!!C++里引入了&作为引用特性,所以C++有值传递和引用传递两种方式。C语言严格意义上来说也只有值传递。

    7. (单选题,5.0分)ArrayList和Vector主要区别是什么?(C)

    • A.Vector是通过链表结构存储数据,ArrayList是通过数组存储数据

    • B.Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步

    • C.Vector与ArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步

    • D.上述说法都不正确

    解析:Vector与ArrayList底层都是通过数组实现的,但是Vector是线程安全的,即支持线程的同步

    8.(填空题,5.0分)创建线程的三种方式:继承(Thread)类、实现(Runnable)接口、实现(Callable)接口

    9. (填空题,5.0分)Java语言中,子类继承父类时使用(extends)关键字,而类实现接口时采用(implements)关键字。实例化对象时,使用(new)运算符为对象分配存储空间。

    10. (填空题,5.0分)事务的四大特性:(原子性)、(隔离性)、(一致性)、(持久性

    11. (多选题,5.0分)下面MySQL中表示时间的数据类型有哪些?(ABCDE)

    • A. year

    • B. timestamp

    • C. time

    • D. date

    • E. datetime

    12. (多选题,5.0分)(中国系统2021校园招聘-Java笔试)
    在Java接口中,下面哪些方法是有效的方法声明(BC)

    • A.private void function1()

    • B.public void function1()

    • C.void function1()

    • D.protected void function1()

    解析:接口中的方法前的访问权限控制符默认为public,并且只能是public

               C选项 无修饰符 此处默认应该为 public

    13. (多选题,5.0分)关于Java中的数组,下面的一些描述,哪些描述是准确的:(BDE)

    • A.数组长度是可以动态调整的

    • B.数组是一个对象,不同类型的数组具有不同的类

    • C.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较

    • D.数组是一个连续的存储结构

    • E.可以二维数组,且可以有多维数组,都是在Java中合法的

    • F.一个固定长度的数组可类似这样定义: int array[100]

    解析:两个数组用Object 里equals方法比较时,比较的是内存地址是否相同,用Arrays.equals()才会比较两个数组中的每个元素的值。

    14. (多选题,5.0分)【2021】小米秋招软件开发方向第二场笔试

    有关java静态初始化块说法正确(ABD)

    • A. 在创建第一个实例前,将自动调用静态初始化块来初始化

    • B. 静态初始化块没有访问修饰符和参数

    • C. 用户可以控制何时执行静态初始化块

    • D. 无法直接调用静态初始化块

    解析:初始化模块用户是不能直接调用的,都是系统自动初始化,且静态初始化块没有访问修饰符和参数

    15. (多选题,5.0分)下面哪些容器是线程安全的(CDFI)

    • A. ArrayList

    • B. HashMap

    • C. Vector

    • D. HashTable

    • E. TreeSet

    • F. ConcurrentHashMap

    • G. HashSet

    • H. LinkedHashMap

    • I.Stack

    16. (多选题,5.0分)关于equals和hashCode描述正确的是 (ACD)

    • A.两个不同的obj, hashCode()可能相等

    • B.其他都不对

    • C.两个obj,如果hashCode()相等,equals()不一定相等

    • D.两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)

    17. (多选题,5.0分)(中国系统2021校园招聘-Java笔试)List有哪些实现类(ABC)

    • A.ArrayList

    • B.LinkedList

    • C.Vector

    • D.Arrays

    解析:

  • 相关阅读:
    【JAVA基础】数组详解
    注册器模式
    连接Mumu模拟器使用ADB
    【附源码】Python计算机毕业设计特大城市地铁站卫生防疫系统
    使用Kafka构建一个文本数据流
    C#学习系列相关之多线程(四)----async和await的用法
    python字符串总结
    Excel的简单操作基础
    ESP8266-Arduino编程实例-三路红外寻迹传感器驱动
    PDF能编辑修改吗?教你必备的几种编辑方法
  • 原文地址:https://blog.csdn.net/qq_62767608/article/details/125594489