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

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

  • A.HashMap 底层存储使用到数组、链表、树等数据结构。
  • B. ArrayList 的底层采用的数据结构是数组
  • C.HashSet 是依靠 HashMap 来实现的。
  • D. TreeMap 的底层存储采用的是 AVL-树 数据结构

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

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

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对象

解析:

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuffer线程安全,StringBuilder线程不安全,所以StringBuilder性能高一些。String类被final修饰,不能被继承。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

对于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 请描述下DI 在java中下列叙述错误的是_java

18. (单选题)定义如下类Base,( C  )是setNum()方法的重载方法。

class Base{     public void setNum (int a,int b,float c){  }  }

  • A. protected float setNum (int a,int b,float c){return c;}
  • B. void setNum (int a,int b,float c){  }
  • C. int setNum (int a,int b,int c){ return a;}
  • D. protected int setNum (int x,int y,float z){return b;}

解析:方法重载的返回值的类型可以不同,因为判断方法重载的方法主要是根据方法的参数不同来判定

19.(单选题)在Java的JDBC编程中,用于表示数据库连接的对象是(   D   )。

  • A. DriverManager
  • B. PreparedStatement
  • C. Statement
  • D. Connection

20.(填空题)属性类Properties在配置文件中比较常用,该文件可以是(文本)文件,也可以是(XML)文件。

21. (单选题)日期是1978年6月25日,与模式字符串“dd年MM日yyyy月”对应的日期格式是(C)。

  • A. 1978年06月25日
  • B. 06月25日1978年
  • C. 25年06日1978月
  • D. 25日06月1978年

解析: y:表示年
            M:表示月
            d:表示日
            H:表示时
            m:表示分
            s:表示秒