java面试基础(三)

21. static关键的独特之处?

答:static修饰类的成员变量被所有实例所共享。

student类定义了静态变量schoolName,被所有实例所共享。

static修饰方法不需要创建对象,直接通过类名调用

static修饰了静态的代码块,当类被加载时,由于类被加载一次,静态代码块只执行一次

22. 谈谈你对java集合的理解?

答:set,list,quque,map是java集合中的四大类。set, list, quque都继承自collection接口。set是无序的、元素不可重复,list有序,元素可以重复,quque是队列。map是key-value映射关系,常见集合的实现类:hashset, treeset, arraylist, linkedlist, arraydeque, hashmap, treemap。以上这是集合实现类都是java.util包,实现大多数是非线程安全。

23. 谈谈你了解的设计模式?

答:spring中的单例模式、工厂模式。单例模式是创建型设计模式,确保一个类只有一个实例存在。单例模式最重要的构造函数私有化(private),通过公有的静态方法获取对象实例。工厂模式(Factory Method Pattern)也叫虚拟构造函数模式或多态性工厂模式。实现思路: 定义一个工厂类,根据传入参数不同返回不同的实例,被创建实例具有共同的父类或接口。

24. mysql字段数据类型和java属性数据类型的区别?

mysql字段数据类型:数值类型:tinyint, smallint, int, float, double

日期时间类型:year, time, date, datetime

字符串类型:char, varchar, text

java类属性数据类型:基本数据类型和引用类型

基本数据类型:整型(byte, int, short, long),浮点型(float, double),字符型(char),逻辑型(boolean)

引用类型:数组

25. list和set的区别?

答:list和set都是collection的子接口,它们的区别是在有序性和重复性。list的元素代表有序可重复的集合,集合的每个元素对应的顺序索引,通过索引访问指定位置的集合元素。set代表的是无序不可重复的集合。虽然set是一个无序集合,但是它有支持排序的实现类treeset,treeset确保集合元素处于排序状态,它是由treemap 实现的,treeset是非线程安全的,但是它内部元素值不能为null。

26. arraylist和linkedlist的区别?

答:arraylist基于数组的,linkedlist基于双向链表。对于随机访问arraylist优于linkedlist,arraylist根据下标O(1)时间复杂度进行随机访问,linkedlist依靠地址指针和下一个元素查找元素的时间复杂度O(n)。插入删除操作linklist优于arraylist。linkedlist比arraylist更占内存。

27. 说说重载和重写的区别?

答:重载要求发生在同一个类中,多个方法之间方法名相同且参数列表不同。重载与方法的返回值和访问修饰符无关。重写发生在父类子类中,子类方法和父类方法构成重写关系,子类的方法名,参数列表必须与父类方法相同。返回值要小于等于父类方法,抛出异常小于等于父类方法,访问修饰符大于等于父类方法。 同一个类有多个构造器,多个构造器形参列表不同称为构造器重载。构造器重载让java类包含多个初始化逻辑。构造方法不能重写。因为构造方法需要和类保持同名,而重写要求子类方法和父类方法保持同名。

关注关注,主页更多的java课程学习路线,笔记,面试等架构资料


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值