常见面试题08

简介: 反射是Java在运行时动态操作类的机制,可加载类、获取成员信息并调用方法,广泛用于Spring、MyBatis等框架。泛型实现类型参数化,提升代码通用性与安全性。加密算法包括对称(如AES、SM4)、非对称(如RSA、SM2)和哈希摘要(如SHA-3、SM3),各具特点,保障数据安全。

什么是反射

  • 反射是 java 提供的一套 API,通过这套 API 能够在运行期间
  • 根据类名加载类
  • 获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口 ...
  • 类型参数化,根据类型创建对象
  • 方法、属性参数化,以统一的方式来使用方法和属性
  • 反射广泛应用于各种框架实现,例如
  • Spring 中的 bean 对象创建、依赖注入
  • JUnit 单元测试方法的执行
  • MyBatis 映射查询结果到 java 对象
  • ...
  • 反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响

什么是 Java 泛型

  • 泛型的主要目的是实现类型参数化,java 在定义类、定义接口、定义方法时都支持泛型
  • 泛型的好处有
  • 提供编译时类型检查,避免运行时类型转换错误,提高代码健壮性
  • 设计更通用的类型,提高代码通用性

请介绍一下你知道的加密算法

一般分类如下

  1. 对称加密
  2. 非对称加密
  3. 哈希摘要
  4. 电子签名
  5. 密码存储

其中

  • 对称加密常见的有:DES、AES 等,国家标准有 SM4
  • 非对称加密常见的有:RSA,ECDSA 等,国家标准有 SM2
  • 哈希摘要有:MD5、SHA-2、SHA-3 等,国家标准有 SM3
  • 电子签名有:通常会结合 RSA、ECDSA 和哈希摘要完成签名,或者是 HMAC
  • 密码存储:直接使用哈希摘要作为密码存储、加盐存储、BCrypt

解释对称加密、非对称加密、哈希摘要

  • 对称加密
  • 加密和解密的密钥使用同一个
  • 因为密钥只有一个,所以密钥需要妥善保管
  • 加解密速度快
  • 非对称加密
  • 密钥分成公钥、私钥,其中公钥用来加密、私钥用来解密
  • 只需将私钥妥善保管,公钥可以对外公开
  • 如果是双向通信保证传输数据安全,需要双方各产生一对密钥
  • A 把 A公钥 给 B,B 把 B公钥 给 A,他们各自持有自己的私钥和对方的公钥
  • A 要发消息给 B,用 B公钥 加密数据后传输,B 收到后用 B私钥 解密数据
  • 类似的 B 要发消息给 A,用 A公钥 加密数据后传输,A 收到后用 A私钥 解密数据
  • 相对对称加密、加解密速度慢
  • 哈希摘要,摘要就是将原始数据的特征提取出来,它能够代表原始数据,可以用作数据的完整性校验
  • 举个例子,张三对应着完整数据
  • 描述张三时,会用它的特征来描述:他名叫张三、男性、30多岁、秃顶、从事 java 开发、年薪百万,这些特征就对应着哈希摘要,以后拿到这段描述,就知道是在说张三这个人
  • 为什么说摘要能区分不同数据呢,看这段描述:还是名叫张三、男性、30多岁、秃顶、从事 java 开发、月薪八千,有一个特征不符吧,这时可以断定,此张三非彼张三

比较一下 DES、AES、SM4

它们都是对称加密算法

  • DES(数据加密标准)使用56位密钥,已经不推荐使用
  • AES(高级加密标准)支持 128、192、256位密钥长度,在全球范围内广泛使用
  • SM4(国家商用密码算法)支持 128位密钥,在中国范围内使用

比较一下 RSA、ECDSA 和 SM2

它们都是非对称加密算法

  • RSA 的密钥长度通常为 1024~4096,而 SM2 的密钥长度是 256
  • SM2 密钥长度不需要那么长,是因为它底层依赖的是椭圆曲线、离散对数,反过来 RSA 底层依赖的是大数分解,前者在相同安全级别下有更快的运算效率
  • SM2 是中国国家密码算法,在国内受政策支持和推广
  • ECDSA 与 SM2 实现原理类似


目录
相关文章
|
2月前
|
消息中间件 监控 Java
Apache Kafka 分布式流处理平台技术详解与实践指南
本文档全面介绍 Apache Kafka 分布式流处理平台的核心概念、架构设计和实践应用。作为高吞吐量、低延迟的分布式消息系统,Kafka 已成为现代数据管道和流处理应用的事实标准。本文将深入探讨其生产者-消费者模型、主题分区机制、副本复制、流处理API等核心机制,帮助开发者构建可靠、可扩展的实时数据流处理系统。
279 4
|
2月前
|
人工智能 物联网 BI
诊断设备企业必看!垂直医疗行业的CRM软件有哪些?
2025年,诊断设备企业竞争核心转向精细化服务。传统CRM难堪重任,垂直医疗CRM成破局关键。本文深度解析八骏医疗云等五大解决方案,揭秘如何通过设备全周期管理、代理商管控、智能耗材预警与私有化部署,构建以客户为中心的服务体系,抢占增长制高点。
258 124
|
2月前
|
SQL Java 索引
常见面试题12
通过SkyWalking链路追踪或MySQL慢查询日志定位慢SQL,结合explain分析执行计划,优化索引与表设计,提升SQL性能。Spring中IOC实现对象托管,DI完成依赖注入,Bean默认单例非线程安全,作用域可配置,初始化时机分情况而定。
107 7
|
2月前
|
缓存 Java 数据库
常见面试题13
本文详解Spring核心机制:Bean生命周期(实例化、依赖注入、初始化、销毁)、三级缓存无法解决构造函数循环依赖(需@Lazy解决)、AOP原理(动态代理实现日志、权限控制)及事务管理(@Transactional与传播行为),并梳理常用注解分类。
144 5
|
2月前
|
存储 网络协议 关系型数据库
常见面试题10
HTTP是超文本传输协议,基于TCP,规定客户端与服务器通信规则。常见请求方式有GET和POST,区别在于参数传递、安全性和用途。HTTPS通过SSL加密更安全,但耗资源。常用状态码如200成功、404未找到、500服务器错误。转发在服务端完成,重定向由浏览器发起两次请求。MySQL中char定长、varchar变长;事务具ACID特性,隔离级别解决并发问题。
73 3
|
2月前
|
缓存 搜索推荐 算法
常见面试题09
排序算法分为比较类(如快排、归并、堆排)和非比较类(如计数、桶、基数)。快排平均最快但不稳定,归并稳定且复杂度恒定,插入排序适合小规模或近有序数据。工业级常混合多种算法优化性能。
52 2
|
2月前
|
缓存 安全 Java
常见面试题05
本内容介绍了Java中常见概念的区别与原理,包括重载与重写、==与equals、String相关类的区别,以及HashMap的结构与执行流程。内容详实,适合Java开发者巩固基础知识。
30 0
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
8月前
|
缓存 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot中使用监听器——监听器介绍和使用
本文介绍了在Spring Boot中使用监听器的方法。首先讲解了Web监听器的概念,即通过监听特定事件(如ServletContext、HttpSession和ServletRequest的创建与销毁)实现监控和处理逻辑。接着详细说明了三种实际应用场景:1) 监听Servlet上下文对象以初始化缓存数据;2) 监听HTTP会话Session对象统计在线用户数;3) 监听客户端请求的Servlet Request对象获取访问信息。每种场景均配有代码示例,帮助开发者理解并应用监听器功能。
509 0
|
数据采集 传感器 机器学习/深度学习
人工智能在农业中的应用:从数据采集到智能决策
本篇文章将详细探讨人工智能(AI)技术在现代农业中的应用,包括从数据采集、分析到智能决策的全过程。通过具体案例,展示AI如何帮助提高农业生产效率、降低成本并增强环境可持续性。
1873 0