当前位置: 首页 > 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;形成一个…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...