面经-基础篇-四

本文最后更新于:2021年3月31日 晚上

以下内容并非博主亲身经历的面试问题,只是对网络中的面经做一个总结、记录。

1.31 什么是向下转型和向上转型?

  • 面向对象的转型只会发生在具有继承关系的父子类中(接口也是继承的一种)
  • 向上转型:其核心目的在于参数的统一上,根本不需要强制类型转换。
    向下转型:是为了操作子类定义的特殊功能,需要强制类型转换,可是现在存在的问题是:向下转型其实是一种非常不安全的操作,因为为编译的时候,程序不会报错,而在运行的时候会报错。

1.32 在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。

  • 泛型是用来解决向下转型时所带来的安全隐患

  • 泛型的核心意义在于:类在进行定义的时候可以使用一个标记,此标记就表示类中属性或者方法以及参数的类型,标记在使用的时候,才会去动态的设置类型。

1.33 Java中的HashSet内部是如何工作的。

  • HashSet 的内部采用 HashMap来实现。
  • 由于 Map 需要 key 和 value,所以HashSet中所有 key 的都有一个默认 value。
  • 类似于 HashMap,HashSet 不允许重复的 key,只允许有一个null key,意思就是 HashSet 中只允许存储一个 null 对象。
  • HashSet 把存储的值作为 key。

1.34 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?

  • 序列化:把对象转换为字节序列的过程称为对象的序列化。
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
  • 为什么序列化:序列化是为了将一个对象的状态(各个属性值)保存起来,然后在适当的时候再获得。
  • 怎么序列化:实现Serializable接口即可
  • 反序列化会遇到什么问题:随着版本的迭代,可能出现不认识旧数据的bug
  • 解决办法:实现 Serializable 接口的时候,一定要给这个 serialVersionUID 赋值,赋值为 1L 即可。

1.35 java8的新特性

  • Lambda表达式和函数式接口
  • 接口的默认方法和静态方法
  • 方法引用
  • 重复注解
  • 更好的类型推断

详解:JAVA8十大新特性

00. 参考链接


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!