笔试题目解析(一)

题目一: 

 

解析:

在这道题中,我们要知道ArrayList、LinkedList、HashMap 的区别:

 1. List 是一个有序集合,可以存放重复的数据 (有序:存进是什么顺序,取出时还是什么顺序)

继承了list接口的类有:

(1)ArrayList:数组结构,线程不安全,增加删除慢,查询快、底层是数组适合查询,不适合增删元素。

(2)Linkedlist: 双向链表结构,线程不安全,增加删除快,查询慢、底层是双向链表适合增删元素,不适合查询操作。

(3)Vector:数组结构  线程安全 增加删除慢,查询快、底层和ArrayList相同,但是Vector是线程安全的,效率较低很少使用


   2. Set 是一个无序集合,不允许放重复的数据 (无序可重复,存进和取出的顺序不一样)
   (1).HashSet 底层是哈希表/散列表
   (2).TreeSet 继承sartedSet接口(无需不可重复,但存进去的元素可以按照元素的大小自动排序)

   3. Map 是一个无序集合,以键值对的方式存放数据,键对象不允许重复,值对象可以重复。

   (1).HashMap实现不同步,线程不安全。  HashTable线程安全

   (2).HashMap中的key-value都是存储在Entry中的。

   (3).HashMap可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性

 题目二:

解析: 

重载(Overload),多态在编译期的表现形式。出现在一个类中,判定重载的条件只有方法名一致,方法形参列表不同。其他的(如返回值,访问修饰符)都不可以判定。

重写,多态在运行期的表现形式。出现在子父类,实现类与接口中。判定重载有一个规律:“两同两小一大”

两同:方法名和形参列表一致;

两小:抛出的异常和返回值相容于被重写的方法。(一旦返回值是基本数据类型,那重写的方法返回值必须一致或者是Object)

一大:访问修饰符大于等于被重写方法。

注意:对于重写而言,只有可见的实例方法才可以被重写。静态方法和私有方法都是隐藏,不是重写!!!

重写(Override)

重写的前提:必须存在继承关系

什么是重写?子类和父类中出现了同名的方法名,我们就称之为重写

什么情况下需要重写?父类中的方法无法满足于子类的需求

重写的要求:方法名和参数列表必须一致,子类方法的修饰符必须大于或等于父类方法的修饰符,子类方法的返回值必须小于或等于父类方法的返回值,子类方法抛出的异常必须小于或等于父类方法抛出的异常!

注:声明为final的方法不能重写但可重载

题目三: 

 解析:

concat方法:

 slice方法:

 

题目四:

 

解析: 

1.饿汉式(线程安全,调用效率高,但是不能延时加载);

2.懒汉式(线程安全,调用效率不高,但是能延时加载);

3.Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用);

4.静态内部类实现模式(线程安全,调用效率高,可以延时加载);

5.枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值