当前位置: 首页 > news >正文

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

相关文章:

Java基础面试题-5day

泛型 什么是泛型&#xff1f;有什么用&#xff1f; 泛型是jdk5引入的新特性&#xff0c;通过泛型可以提高代码的可读性和稳定性&#xff1b;当我们使用泛型时&#xff0c;传入的对象类型必须是指定的泛型类型&#xff0c;否则就会报错 泛型的使用方式有哪些&#xff1f; 一…...

软通智慧启动鲲鹏原生应用开发合作

1月25日&#xff0c;软通智慧科技有限公司启动鲲鹏原生应用开发合作&#xff0c;将基于鲲鹏硬件底座、openEuler、开发套件Kunpeng DevKit和应用使能套件Kunpeng BoostKit开展面向智慧园区、政务、水利水务等行业场景的软硬件原生应用开发&#xff0c;并持续发布性能更优的鲲鹏…...

【STM32】STM32F4中USB的CDC虚拟串口(VCP)使用方法

文章目录 一、前言二、STM32CubeMX生成代码2.1 选择芯片2.2 配置相关模式2.3 设置时钟频率2.4 生成代码2.5 编译并下载代码2.6 结果2.7 问题 三、回环测试3.1 打开工程3.2 添加回环代码3.3 编译烧录并测试 四、出现问题和解决方法4.1 烧录总是要自己插拔USB4.2 自己生成的工程没…...

网络协议与攻击模拟_06攻击模拟SYN Flood

一、SYN Flood原理 在TCP三次握手过程中&#xff0c; 客户端发送一个SYN包给服务器服务端接收到SYN包后&#xff0c;会回复SYNACK包给客户端&#xff0c;然后等待客户端回复ACK包。但此时客户端并不会回复ACK包&#xff0c;所以服务端就只能一直等待直到超时。服务端超时后会…...

CPU,内存和硬盘之间的关系

计算机三大件&#xff1a;CPU&#xff0c;内存&#xff0c;硬盘。从运算速度来看&#xff0c;CPU>内存>固态硬盘>机械硬盘。 电脑卡顿怎么解决&#xff1f; 1、清理垃圾&#xff1b; 2、释放C盘空间&#xff0c;因为系统需要C盘空间当作虚拟内存&#xff1b; 3、增…...

Java面试题之基础篇

文章目录 一&#xff1a;谈谈你对面向对象的理解二&#xff1a;JDK、JRE、JVM三者区别和联系三&#xff1a;和equals比较四&#xff1a;hashCode与equals五&#xff1a;final六&#xff1a;String、StringBuffer、StringBuilder七&#xff1a;重载与重写的区别&#xff1f;八&a…...

Bitbucket第一次代码仓库创建/提交/创建新分支/合并分支/忽略ignore

1. 首先要在bitbucket上创建一个项目&#xff0c;这个我没有权限创建&#xff0c;是找的管理员创建的。 管理员创建之后&#xff0c;这个项目给了我权限&#xff0c;我就可以创建我的代码仓库了。 2. 点击这个Projects下的具体项目名字&#xff0c;就会进入这样一个页面&#…...

c#反射用法

在 C# 中&#xff0c;反射是一种能够在运行时检查类型信息、访问属性和调用方法的机制。通过反射&#xff0c;你可以动态地操作类型、对象和程序集&#xff0c;而无需在编译时知道这些类型的具体信息。 反射提供了一组 API&#xff0c;可以让你在运行时获取和操作类型的信息。…...

WPF行为

背景&#xff1a;实现按钮鼠标移动到上方有点交互效果或变一下有阴影。这样使用触发器就行了&#xff0c;但是如果是每个控件都有效果的话使用行为更加合适 1、下载NuGet包&#xff1a;Microsoft.xaml.behavior.wpf 2、创建行为类EffectBehavior&#xff0c;对Behavior进行重写…...

N-141基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…...

Unity之Cinemachine教程

前言 Cinemachine是Unity引擎的一个高级相机系统&#xff0c;旨在简化和改善游戏中的相机管理。Cinemachine提供了一组强大而灵活的工具&#xff0c;可用于创建令人印象深刻的视觉效果&#xff0c;使开发人员能够更轻松地掌控游戏中的摄像机行为。 主要功能和特性包括&#x…...

java面面试面经(面试过程)

一、校招一面面经 1.1 自我介绍(2min) 1.2 要求介绍项目一项目亮点以及做的具体工作 根据介绍项目进行细挖&#xff0c;其中包括方案设计、场景设计等等等 由于项目一种涉及数据库源的转换问题和限流方案&#xff0c;所以面试官拷打的是这两块&#xff0c;其中包括场景题&…...

大语言模型-大模型基础文献

大模型基础 1、Attention Is All You Need https://arxiv.org/abs/1706.03762 attention is all you need 2、Sequence to Sequence Learning with Neural Networks https://arxiv.org/abs/1409.3215 基于深度神经网络&#xff08;DNN&#xff09;的序列到序列学习方法 3、…...

【RH850U2A芯片】Reset Vector和Interrupt Vector介绍

目录 前言 正文 1. 什么是Reset Vector 1.1 S32K144芯片的Reset Vector 1.2 RH850芯片的Reset Vector 2. 什么是Interrupt Vector 2.1 S32K144芯片的Interrupt Vector 2.2 RH850芯片的Interrupt Vector 3. Reset Vector等价于Interrupt Vector吗 4. 总结 前言 最近在…...

Zabbix交换分区使用率过高排查

Zabbix High swap space usage 问题现象 Zabbix 出现Highswap space usage(less than 50% free)告警&#xff0c;提示交换分区空间使用率超过50% 处理过程 1. 确定swap分区是否已占满 free -h登录Zabbix服务器检查内存情况&#xff0c;检查发现Linux服务器空闲的内存还有不少…...

‘HEAD‘ 是 HTTP 请求的一种方法

一、名词解释 ‘HEAD’ 是 HTTP 请求的一种方法&#xff0c;它与 ‘GET’ 方法类似&#xff0c;但有一些关键区别。 当你使用 ‘GET’ 请求时&#xff0c;服务器会返回请求的资源&#xff08;例如 HTML 页面或文件内容&#xff09;。而当你使用 ‘HEAD’ 请求时&#xff0c;服务…...

go语言(十七)----json

1、结构体转json package mainimport ("encoding/json""fmt" )type Movie struct{Title string json:"title"Year int json:"year"Price int json:"rmb"Actors []string json:"actors" }func main() {movie : Mo…...

Java笔记 --- 四、异常

四、异常 Java.lang.Throwable Error Exception&#xff08;异常&#xff09; 异常的作用 异常的处理方式 JVM默认的处理方式 捕获异常&#xff08;自己处理&#xff09; try里面没有出现异常&#xff0c;就不会运行catch里面的代码 如果出现多个异常&#xff0c;需要多个c…...

Ubuntu20.04配置grub ,不必每次都输入 nomodeset

一、查看原来的grub配置&#xff1a; grep menuentry /boot/grub/grub.cfg 重点注意以下类似的核心版本号 gnulinux-5.15.0-92-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 gnulinux-5.15.0-67-generic-advanced-86a86651-8070-4338-92ee-8a1a13a98a05 …...

PBM模型学习(七)核化模型

Nucleation Rate 返回的是成核速率&#xff1a;单位时间内&#xff0c;多少个小颗粒生成&#xff0c;单位&#xff0c;个&#xff0c;/对于fluent而言&#xff0c;这个是对于网格而言&#xff0c;所以单位是&#xff1a;个/m3*s 成核&#xff1a;从无到有&#xff0c;形成一个…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

ubuntu中安装conda的后遗症

缘由: 在编译rk3588的sdk时&#xff0c;遇到编译buildroot失败&#xff0c;提示如下&#xff1a; 提示缺失expect&#xff0c;但是实测相关工具是在的&#xff0c;如下显示&#xff1a; 然后查找借助各个ai工具&#xff0c;重新安装相关的工具&#xff0c;依然无解。 解决&am…...

理想汽车5月交付40856辆,同比增长16.7%

6月1日&#xff0c;理想汽车官方宣布&#xff0c;5月交付新车40856辆&#xff0c;同比增长16.7%。截至2025年5月31日&#xff0c;理想汽车历史累计交付量为1301531辆。 官方表示&#xff0c;理想L系列智能焕新版在5月正式发布&#xff0c;全系产品力有显著的提升&#xff0c;每…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符&#xff0c;最后运行&#xff1a;npm run lint --fix...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

智能体革命:企业如何构建自主决策的AI代理?

OpenAI智能代理构建实用指南详解 随着大型语言模型&#xff08;LLM&#xff09;在推理、多模态理解和工具调用能力上的进步&#xff0c;智能代理&#xff08;Agents&#xff09;成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同&#xff0c;智能代理能够自主执行工…...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...