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
解析:
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:表示秒