Java基础面试题-5day

泛型

  1. 什么是泛型?有什么用?

泛型是jdk5引入的新特性,通过泛型可以提高代码的可读性和稳定性;当我们使用泛型时,传入的对象类型必须是指定的泛型类型,否则就会报错

  1. 泛型的使用方式有哪些?

一是泛型类
二是泛型接口
三是泛型方法
泛型类,一般在实例化的时候需要指定泛型的类型

public class Person<T>{private String name ;public Person<T>{}
}
实例化
Person<ming> person = new Person<ming>

泛型接口,

public interface Generator<T> {public T method();
}
// 实现接口,指定泛型类型
class GeneratorImpl<T> implements Generator<String>{@Overridepublic String method() {return "hello";}
}// 实现接口,不指定泛型类型
class GeneratorImpl<T> implements Generator<T>{@Overridepublic T method() {return "hello";}
}
泛型方法
   public static < E > void printArray( E[] inputArray ){for ( E element : inputArray ){System.out.printf( "%s ", element );}System.out.println();}

在泛型方法中,泛型只是一个占位符,使用了泛型的方法是一个静态方法,表示我们使用这个方法可以是任意类型的数组
作为一个静态的方法,由于静态方法是先于类加载的,所有对于泛型方法,是不能使用泛型类指定的类型的,只能使用自己声明的泛型

  1. 项目中哪里用到泛型?

一是自定义的通用接口返回类,使用泛型可以做到返回结果的统一化
二是定义Excel处理类,用于动态的导出数据类型
三是构建集合处理类(比如Collections 中的 sort, binarySearch 方法)

反射

  1. 什么是反射?优缺点
    反射在很多框架都有体现,主要的作用就是在运行时,可以分析类或者执行类的方法,并且可以直接通过获取到一个类的所有方法和属性,给我们提供了便利。
    缺点就是会有安全的问题出现,比如反射会无视泛型类型的安全检查,因为泛型类型的安全检查是在编译时期执行的。
    根据反射的概念,反射是在运行时分析类和执行类的方法的
  2. 反射的应用场景?
    Java的注解
    Spring 的注解
    基于反射的分析类,获取到类,属性,方法,方法上的参数 上的注解,获取到注解之后,可以进行进一步的处理。

SPI

  1. 什么是SPI?
    SPI就是服务提供者接口,是专门提供给开发者的接口,一般提供一些扩展框架功能
  2. SPI和API的区别?
    API 应用程序编程接口,一个API 表示的是,接口的功能有服务的提供者来实现,包括一些接口的规则,详细的功能,提供一个接口给外界的人使用,调用方不需要知道内部的核心,只需要知道怎么使用调用接口即可
    SPI 服务提供者接口,接口的规则有调用方来确认,提供给不同的服务开发者进行开发,开发出来的结果都是符合接口调用方的要求。

序列化和反序列化

  1. 序列化和反序列化分别是什么?
    序列化在Java中是对 对象 进行序列化。
    当我们要进行网络传输的时候,我们就需要将数据结果或者对象进行序列化,或者是要将文件存储到数据库的之前,存储到缓存之前都需要进行序列化。
    反序列化就是当我们要从数据库,缓存,redis等取出数据的时候,都需要进行反序列化。
  2. 序列化对应TCP/IP4层模型的哪一层?
    TCP/IP4层模型从上到下分别是 应用层,传输层,网络层,网络接口层。
    OSI 七层模型从上到下分别是 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
    OSI模型中的表现层是将应用层的数据进行解码,数据处理的,也就是将对象,数据接口转化为二进制流,所以,序列化对应的是OSI模型的表现层,对应TCP/IP则是应用层。
    TCP/IP 4层模型 的应用层 包含了 OSI模型的应用层,表示层和会话层
  3. 如果有些字段不想序列化怎么办?
    给不想序列化的字段(变量)添加transient关键字。
    transient关键字不能用在类和方法上。
    static 修饰的变量无论有没有添加关键字transient都是不支持序列化的。
  4. 常见的序列化协议
    Hessian、Kryo、Protobuf、ProtoStuff
  5. 为什么不使用JDK自带的序列化?
    因为不支持跨语言调用
    性能差
    存在安全问题

Java IO流

  1. 什么是IO流
    IO流就是输入输出流,在Java中分为输入流和输出流
    根据数据的处理方式又分为 字符流 和 字节流

语法糖

代指的是编程语言为了方便程序员开发程序而设计的一种特殊语法,这种语法对编程语言的功能并没有影响。实现相同的功能,基于语法糖写出来的代码往往更简单简洁且更易阅读。

Java虚拟机不能够识别Java的语法糖,必须相同Java的编译器进行解糖之后才能被Java虚拟机识别。

  1. 常见的语法糖有哪些?
    泛型,自动装箱,自动拆箱,变长参数,枚举,内部类,增强for循环等等。

根据javaguide总结
https://javaguide.cn/home.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文笔记】GPT,GPT-2,GPT-3

参考&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3【论文精读】 GPT Transformer的解码器&#xff0c;仅已知"过去"&#xff0c;推导"未来" 论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 半监督学习&#xff1…

HPE ProLiant MicroServer Gen8更新固件

前几天因为没有shutdown OMV NAS便关了电源&#xff0c;导致其中一个硬盘损坏&#xff08;用DG检查有9个坏区&#xff09;&#xff0c;从而整个硬盘数据都没法读取&#xff0c;于是想着装个windows server会不会更好点&#xff0c;至少对windows熟悉点&#xff0c;硬盘扫描恢复…

postman参数提取+加密

目录 常见提取方式 1. json格式提取 2. 正则表达式提取 3. cookie提取-提取响应返回的cookie值 4. 请求头提取值--提取响应头所需要的值 加密 1. MD5加密 2. base64位加密 响应示例 {"code": 0,"data": {"pageListData": [{"creat…

代码随想录算法刷题训练营day16

代码随想录算法刷题训练营day16&#xff1a;LeetCode(104)二叉树的最大深度 、LeetCode(559)n叉树的最大深度、LeetCode(111)二叉树的最小深度、LeetCode(222)完全二叉树的节点个数 LeetCode(104)二叉树的最大深度 题目 代码 /*** Definition for a binary tree node.* publ…

springboot事务管理

/*spring事务管理注解:Transactional位置:业务(service)层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理&#xff0c;方法执行前&#xff0c;开启事务:成功执行完毕&#xff0c;提交事务:出现常&#xff0c;回滚事务需要在配置文件是加上开启spring事务yml文件…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

PHP伪协议使用姿势

php支持的伪协议 1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; 5 zlib:// — 压缩流 6 data:// — 数据&#xff08;RFC 2397&#xff09; 7 glob:// —…

为什么在使用类成员函数指针时,需要 Myclass::myfunc ,而不是直接 Myclass::myfunc

我们知道一个函数的函数名就是这个函数的地址&#xff0c;那么我们使用类成员函数的地址时&#xff0c;为什么还要在前面加上取地址符号& 原因如下&#xff1a; 成员函数指针类型是一种特殊的指针类型&#xff0c;用于指向类的成员函数。在 C 中&#xff0c;对于非静态成员…

我的软件测试内卷之路

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 现在的大环境下&#xff0c;各行各业都开始内卷起来&#xff0c;测试也不例外&#xff0c;企业要…

STM32 HAL库 SysTick->VAL和SysTick->LOAD 实现us延时

本文使用HAL库和STM32CubeMX配置时钟&#xff0c;使用 SysTick->LOAD 和 SysTick->VAL 来实现延时us和延时ms M3内核中&#xff0c;SysTick计数器是24位递减计数器 计数范围2^24-1 到 0 &#xff0c;然后重装载寄存器的值给SysTick计数器&#xff0c;重复下去 每来一个…

解释Go中常见的I/O模式

在这篇文章中&#xff0c;我想介绍一下常见的I/O&#xff08;输入和输出&#xff09;模式。我想在这篇文章中用浅显的语言澄清这些概念&#xff0c;这样人们就可以在他们的应用程序中使用优雅的Go I/O API。 让我们看看开发人员在日常生活中需要的常见用例。 写到标准输出 每…

npm install出错的各种情况

1.npm不再支持签名证书&#xff0c;npm install 走的是http协议&#xff0c;需要通过数字证书保证 解决方法&#xff1a; 解决方法&#xff1a;1、取消ssl验证&#xff1a;npm config set strict-ssl false 这个方法一般就可以解决了。 2、更换npm镜像源&#xff1a;npm confi…

分布式数据实现跨设备数据同步的N个秘密 | 分布式数据管理解析(二)

上期我们给大家带来分布式数据管理如何完成数据存储&#xff0c;数据同步&#xff0c;数据跨端访问&#xff0c;并保证整个过程中跨设备数据安全的解读。 这都得益于分布式数据管理平台抽象出的三大关键技术——分布式数据库&#xff0c;分布式文件系统和融合搜索。 那么这三…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域&#xff0c;无明细路由&#xff0c;容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中&#xff0c;所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连&#xff0c;不同 level-1 区域之间不能直接…

ACDSee 2024旗舰版 下载安装汉化教程,ACDSee 最新版,附安装包和工具,全网最简单,轻松搞的安装,无套路

前言 ACDSee是一款数字资产管理、图片管理编辑工具软件&#xff0c;提供良好的操作界面&#xff0c;简单人性化的操作方式&#xff0c;优质的快速图形解码方式&#xff0c;支持丰富的RAW格式&#xff0c;强大的图形文件管理功能等。 准备工作 1、提前准备好 ACDSee 2024 安装…

第20届纪念款-牛客周赛 Round 20 B.C简单构造

B 答案要么是0 要么是1 所以你全部填0或者要么填1然后算就好了 #include<bits/stdc.h> using namespace std; using ll long long; const int N 1e510; int n;void solve() {//全0 全1&#xff1f;string str;cin>>str;n str.size();string str1 str;int ans…

阿蒂亚(M.F.Atiyah)与黎曼猜想

&#xff08;注意&#xff1a;黑板上写的数不止20位数&#xff09; 德国柏林时间2018年9月24日上午9点45分&#xff0c;菲尔兹奖与阿贝尔奖双料得主、英国皇家学会院士迈克尔阿蒂亚爵士在德国海德堡举行的海德堡奖诺贝尔奖获得者论坛上&#xff0c;讲述了他对黎曼猜想的证明。…

设计模式⑩ :用类来实现

文章目录 一、前言二、Command 模式1. 介绍2.应用3. 总结 三、Interpreter 模式1. 介绍2. 应用3. 总结 参考文章 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系…

springboot mongodb简单教程

&#xff08;1&#xff09;依赖 compile(org.springframework.boot:spring-boot-starter-data-mongodb) &#xff08;2&#xff09;application.properties配置文件 spring.data.mongodb.host127.0.0.1 spring.data.mongodb.port27017 spring.data.mongodb.databasetest &a…

docker由浅入深

一、什么是docker docker 顾名思义就是轮船的意思&#xff0c;轮船我们知道是通过集装箱运载货物的东西&#xff0c;那么docker其实也是类似的东西&#xff0c;只是装载的是虚拟的运行程序罢了。其中集装箱在docker里面被称为container&#xff08;后面以容器称之&#xff09;…