2024最全Android面试题及答案整理3【持续更新】
每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容,接下来具体展示,完整版可直接下方扫码领取。第一章 算法和数据结构面试题汇总第二章 Java核心基础面试题汇总第三章 Java深入泛型与注解面试题汇总第四章 Java并发编程面试题汇总第五章 Java虚拟机原理面试题汇总第六章 Java反射类
前言
深入讨论Java的泛型与注解在面试中,有助于展示面试者对Java高级特性的掌握程度和应用能力。通过具体例子和实际应用场景来展示这些特性的优势和应用方式,将有助于提升面试者在面试中的竞争力。继上一篇2024最全Android面试题及答案整理2【持续更新】之后,今天给大家分享2024最全Android面试题及答案整理3【持续更新】,有需要的朋友可以收藏了。
Java深入泛型与注解面试题汇总
3.1 泛型是什么,泛型擦除呢?
- 这道题想考察什么?
泛型 - 考察的知识点
泛型的特点和优缺点以及泛型擦除 - 考生应该如何回答
泛型就是一种就是一种不确定的数据类型。在Java中有着重要的地位,在面向对象编程及各种设计模式
中都有非常广泛的应用。
泛型的优点
我们为什么需要使用泛型:
- 适用于多种数据类型执行相同的代码,例如两个数据相加:
不同的类型,我们就需要增加不同的方法,但是使用泛型那我们的代表将变为: - 编译检查,例如下面代码
因为我们指定了List泛型类型为String,因此在代码1处编译时会报错。而在代码2处,不再需要做类型强
转。
泛型的缺点 - 静态域或者方法里不能引用泛型变量,因为泛型是在new对象的时候才知道,而类的构造方法是在
静态变量之后执行。 - 不能捕获泛型类对象
泛型擦除
Jdk中实现的泛型实际上是伪泛型,例如泛型类 Fruit ,编译时 T 会被擦除,成为 Object。但是泛型
擦除会带来一个复杂的问题:
public int addInt(int x,int y){
return x+y;
}
public float addFloat(float x,float y){
return x+y;
}
public <T> T addInt(T x,T y){
return x+y;
}
List<String> list = new ArrayList();
list.add(10);//①
list.add("享学");
String name = list.get(2);//②
Parent类是一个泛型类,在经过编译时泛型擦除后其中 setSrc(T) 将会变为 setSrc(Object) ;而
Child类继承与Parent并且指定了泛型类型为String。那么经过编译后这两个类应该变为:
父类存在 setSrc(Object) ,而子类则是 setSrc(String) 。这明显是两个不同的方法,按照Java的重
写规则,子类并没有重写父类的方法,而是重载。
3.2 List能否转为List
- 这道题想考察什么?
掌握PECS原则,灵活运用泛型 - 考察的知识点
泛型上下边界 - 考生应该如何回答
在Java的泛型语法中,可以使用super和extends关键字指定泛型的上下边界。
extends
? extends T 为上界通配符,也就是说限制类型只能是T 或者 T 的派生类,比如我们存在代表水果的
Fruit类,代表苹果的Apple类以及代表香蕉的Banana类。苹果与香蕉都是水果,因此:
那么下面我们使用List集合作为盘子来装水果:
但是当我们希望往plates中放入苹果或者香蕉时会发现,plates中无法放入任何元素,只能从plates中取
出元素。
3.3 Java的泛型中super 和 extends 有什么区别?
List<? super Fruit> plates = new ArrayList<>();
Fruit fruit = plates.get(0);//Error
Apple apple = plates.get(0);//Error
Object object = plates.get(0);
plates.add(new Apple());
plates.add(new Banana());
下界<? super T>不影响往里存,但往外取只能放在Object对象里。因为List<? super Fruit> 代表该容器
元素是Fruit或者Fruit的超类。向容器中存储数据,只需要数据类型是Fruit的派生类即可,因为苹果是水
果Fruit,香蕉也是水果Fruit。但是取数据时,无法得知取出来的数据到底时什么类型,所以只能使用
Object来表示。
PECS原则
PECS原则即Producer Extends Consumer Super ,生产使用extends,消费使用super。结合上下界的
特点可知:
经常读取数据,使用Extends;
经常加入数据,使用Super;
3.4 注解是什么?有哪些使用场景?(滴滴)
- 这道题想考察什么?
Java基础,高级语言特性 - 考察的知识点
注解与其应用场景 - 考生如何回答
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 注解是元数据的一种形式,
提供有关于程序但不属于程序本身的数据。注解本身没有特殊意义,对它们注解的代码的操作没有直接
影响。
按照@Retention 元注解定义的注解保留级,注解可以一般常见于以下场景使用:
SOURCE
RetentionPolicy.SOURCE ,作用于源码级别的注解,在类中使用 SOURCE 级别的注解,其编译之后的
class中会被丢弃。可提供给Lint 检查、APT等场景使用。
写在最后
每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容,接下来具体展示,完整版可直接下方扫码领取。
第一章 算法和数据结构面试题汇总
第二章 Java核心基础面试题汇总
第三章 Java深入泛型与注解面试题汇总
第四章 Java并发编程面试题汇总
第五章 Java虚拟机原理面试题汇总
第六章 Java反射类加载与动态代理面试题汇总
第七章 网络编程面试题汇总
第九章 高级UI面试题汇总
第十章 Framework内核解析面试题汇总
第十一章 Android组件内核面试题汇总
第十二章 程序性能优化与数据持久化面试题汇总
第十三章 开源框架面试题汇总
更多推荐
所有评论(0)