4.百度健康
- Java有哪些基本数据类型:
Java有8种基本数据类型:byte, short, int, long, float, double, char(16bit), boolean(内存1bit 数组32bit)。
-
接口和抽象类的区别:
-
接口只能包含抽象方法和默认方法(Java 8+),属性默认是public static final的;抽象类可以包含具体实现的方法和属性。
-
一个类可以实现多个接口,但只能继承一个抽象类。
-
接口主要用于定义公共的方法规范;抽象类可以包含具体实现,提供更灵活的抽象。
-
-
介绍JVM内存模型:
JVM内存模型主要包括程序计数器、虚拟机栈、本地方法栈、堆和方法区(或元空间)。
- 介绍虚拟机栈:
虚拟机栈是线程私有的,每个方法执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
-
栈溢出和堆溢出抛出什么类型的异常:
-
栈溢出抛出
StackOverflowError
或OutOfMemoryError
。 -
堆溢出抛出
OutOfMemoryError
。
-
-
介绍堆和栈的内存释放机制(垃圾回收)。启动堆的时候可以指定堆大小吗?有什么参数指定的?
-
栈的内存释放是自动的,方法执行完毕,对应的栈帧就会出栈,内存随之释放。
-
堆的内存释放是通过垃圾回收器来进行的。
-
可以通过JVM参数
-Xms
和-Xmx
来指定堆的初始大小和最大大小。
-
- 介绍类加载的过程:
包括加载、链接(验证、准备、解析)、初始化、使用、卸载。
-
介绍Spring的ioc和aop,项目中怎么使用aop的:
-
IOC(控制反转)是通过依赖注入实现对象之间的解耦。
-
AOP(面向切面编程)用于在不修改源代码的情况下,添加额外的功能。
-
项目中可以通过定义切面(Aspect)和通知(Advice)来使用AOP,例如日志记录、事务管理。
-
-
Bean的作用域有哪些,项目中常用什么作用域:
-
作用域:singleton(单例)、prototype(原型)、request、session、application、websocket。
-
常用:singleton。
-
- 依赖注入的方式:
构造器注入、setter注入、字段注入。
-
MySQL中char和varchar的区别:
-
char是固定长度的,varchar是可变长度的。
-
char在存储时会用空格填充至固定长度,varchar则不会。
-
-
MySQL有哪些索引类型:
- B-Tree索引、哈希索引、全文索引、R-Tree索引。
-
常见的join类型。使用左连接的方式连接A/B两张表,若B中某数据行缺失,但在A中改行存在,最终结果能查出来这一行数据吗?
-
常见的join类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)。
-
能,左连接会返回左表(A表)的所有行,即使在右表(B表)中没有匹配的行。
-
-
聚簇索引和非聚簇索引有什么区别:
- 聚簇索引的叶节点包含了完整的数据行;非聚簇索引的叶节点包含指向数据行的指针。
-
什么情况下应该使用索引,什么情况不该使用索引。某字段只有十种数据值,应当对其使用索引吗?
-
应该使用索引的情况:数据量大、经常查询的字段。
-
不应该使用索引的情况:数据量小、更新频繁的字段。
-
如果字段只有十种数据值,但数据量大且查询频繁,可以考虑使用索引。
-
-
redis为什么快:
- 基于内存、单线程模型、优化的数据结构。
-
redis怎么在项目中使用的:
- 用于缓存、会话管理、消息队列等。
-
redis持久化怎么实现的:
- RDB(快照持久化)、AOF(追加文件持久化)。
-
redis常见的数据结构。其中list是双向链表还是单向:
-
常见数据结构:字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希(hashes)。
-
List是双向链表。
-
-
HTTP状态码的401和403表示什么意思:
-
401:未授权,请求需要用户验证。
-
403:禁止,服务器理解请求但拒绝执行。
-
-
如何设计token?token如何鉴权?介绍项目中使用到的SA-Token框架:
- Token设计应该包含唯一标识、发行者、过期时间等信息,通常使用JWT(JSON Web Tokens)格式。 - 鉴权通常通过在请求头中携带Token,服务器端验证Token的有效性。 - SA-Token是一个轻量级Java权限认证框架,提供了诸如登录认证、权限验证、Session会话、单点登录、OAuth2.0、微服务网关鉴权等功能。
八股文分类整理 老哥们点点赞,订阅一下,纯福利做数据。