![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java试题库
文章平均质量分 91
包含Java SpringCloud、设计模式、SpringBoot、MyBatis、Spring、SpringMVC、Redis、Kafka、MySQL、Docker\RabbitMQ 相关面试题
code gong
code
展开
-
Java 基础面试题
在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的⽂件),它不⾯向任何特定 的处理器,只⾯向虚拟机。Java 语⾔通过字节码的⽅式,在⼀定程度上解决了传统解释型语⾔执⾏ 效率低的问题,同时⼜保留了解释型语⾔可移植的特点。所以, Java 程序运⾏时相对来说还是⾼效 的(不过,和 C++,Rust,Go 等语⾔还是有⼀定差距的),⽽且,由于字节码并不针对⼀种特定的 机器,因此,Java 程序⽆须重新编译便可在多种不同操作系统的计算机上运⾏。原创 2024-07-03 21:49:42 · 783 阅读 · 0 评论 -
数据库-综合⾯试题汇总系列 002
关系是指多表在数据库中的关联。有4种关系。1对1,多对⼀,多对多,⼀对多。唯⼀标识⼀条记录,不能有重复的,不允许为空。表的外键是另⼀表的主键, 外键可以有重复的, 可以是空值。SQL(结构化查询语⾔)是⼀种设计⽤于检索和操作数据的数据库。它属于美国国家标准协会(ANSI)的⼀种标准,可⽤于执⾏Select(选择)、Update(更新)、Delete(删除)和Insert(插⼊)等数据任务。索引⽤于加速查询的性能。它可以更快地从表中检索数据。可以在⼀组列上创建索引。它是⼀个返回单个值的数学函数。原创 2024-06-23 17:28:48 · 1372 阅读 · 0 评论 -
数据库-SqlServer面试题系列 001
一、数据库基础知识(通用)篇1.说说主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属 性组合在一起也可以作为一个超键。超键包含候选键和主键。 候选键:是最小超键,即没有冗余元素的超键。 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个 主键,且主键的取值不能缺失,即不能为空值(Null)。 外键:在一个表中存在的另一个表的主键称此表的外键。2.为什么用自增列作为主键?如果我们定义了主键原创 2024-07-06 14:09:23 · 15 阅读 · 0 评论 -
数据库-综合⾯试题汇总系列 001
其实这个不是⼀定的,有些场景下,⼩系统或者没什么⽤的表,不设置主键也没关系,mysql最好是⽤⾃增 主键,主要是以下两个原因:如果定义了主键,那么InnoDB会选择主键作为聚集索引、如果没有显式定义 主键,则innodb 会选择第⼀个不包含有NULL值的唯⼀索引作为主键索引、如果也没有这样的唯⼀索引, 则innodb 会选择内置6字节⻓的ROWID作为隐含的聚集索引。MySQL ⽬前不⽀持 PL/SQL 的。由于最左前缀原则,在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前 ⾯。原创 2024-06-22 13:24:33 · 600 阅读 · 0 评论 -
数据库-MySQL面试题系列 001
(RC和RR级别工作)InnoDB的MVCC,是通过在每行记录后面保存系统版本号(可以理解为事务的ID),每开始一个新的事务,系统版本号就会自动递增,事务开始时刻的系统版本号会作为事务的ID。哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置存执该值所在行数据的物理位置,因为使用散列算法,因此访问速度非常快,但是一个值只能对应一个hashCode,而且是散列的分布方式,因此哈希索引不支持范围查找和排序的功能。数据库中的所有记录,都会被查询出来,载入到 JVM 的内存中。原创 2024-06-24 23:14:15 · 937 阅读 · 0 评论 -
Redis 面试题锦集001
列表类型是用来储存多个有序的字符串,列表中的每个字符串成为元素,一个列表最多可以储存 2 ^ 32 - 1 个元素,在 Redis 中,可以队列表两端插入和弹出,还可以获取指定范围的元素列表、获取指定索引下的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色。集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素,Redis 除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。二进制:图片、音频、视频。原创 2024-06-22 13:37:26 · 741 阅读 · 0 评论 -
RabbitMQ面试题系列 002
RocketMQ 的路由发现不是实时的,NameServer 不会主动向客户端推送,而是客户端定 时拉取主题最新的路由,然后更新。step1:调用 RouterInfoManager 的方法,从路由表 topicQueueTable、brokerAddrTable、 filterServerTable 分别填充信息;step2:如果主题对应的消息为顺序消息,则从 NameServerKVconfig 中获取关于顺序消 息相关的配置填充路由信息;原创 2024-07-01 11:13:46 · 980 阅读 · 0 评论 -
RabbitMQ面试题系列 001
这种模式,才是所谓的RabbitMQ的高可用模式,跟普通集群模式不一样的是,你创建的queue,无论元数据(元数据指RabbitMQ的配置数据)还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue的时候,都会自动把消息到多个实例的queue里进行消息同步。: 在消息进入队列之前,通过交换器来路由消息。rabbit_amqqueue_process:负责协议相关的消息处理,即接收生产者发布的消息、向消费者交付消息、处理消息的确认(包括生产端的 confirm 和消费端的 ack) 等。原创 2024-06-28 13:30:31 · 286 阅读 · 0 评论 -
JVM面试题大全
(1)标记和清除两个过程都比较耗时,效率不高 (2)会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无 法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。更关键的是,如果不 想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都有 100%存活的极端情况,所以老年代一般不能直接选用这种算法。对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任 何指针对其引用,它就是垃圾。原创 2024-07-01 11:42:33 · 663 阅读 · 0 评论 -
Redis 面试题锦集002
列表类型是用来储存多个有序的字符串,列表中的每个字符串成为元素,一个列表最多可以储存 2 ^ 32 - 1 个元素,在 Redis 中,可以队列表两端插入和弹出,还可以获取指定范围的元素列表、获取指定索引下的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色。集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素,Redis 除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。二进制:图片、音频、视频。原创 2024-06-28 13:27:57 · 608 阅读 · 0 评论 -
kafka面试题系列 001
Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动, 这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析, 或者装载到hadoop、数据仓库中做离线分析和挖掘。Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘, 以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。包括收集各种分布式应用的数据,生产各种操作的集中反 馈,比如报警和报告。原创 2024-06-29 09:25:13 · 523 阅读 · 0 评论 -
Redis 面试题锦集003
缓存穿透:指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这 将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。解决方案:1.查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短;2.布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的 数据会被这个 bitmap 拦截掉,从而避免了对 DB 的查询。缓存雪崩:设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到 DB,DB 瞬时压力过重雪崩。原创 2024-07-01 10:47:08 · 855 阅读 · 0 评论 -
docker 面试题
基础概念什么是Docker? 答:Docker是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,从而在任何Docker运行的环境中实现一致的运行。 Docker容器和虚拟机的区别是什么? 答:Docker容器在操作系统级别进行虚拟化,共享宿主机的内核,而虚拟机在硬件级别进行虚拟化,拥有独立的内核。容器通常更轻量级、启动更快,资源占用更少。 什么是Docker镜像? 答:Docker镜像是一个轻量级、只读的模板,用于创建Docker容器。它包含运行容器所需的代码原创 2024-07-07 12:28:47 · 7 阅读 · 0 评论 -
数据库-MySQL面试题系列 005
InnoDB的⻚和操作系统的⻚⼤⼩不⼀致,InnoDB⻚⼤⼩⼀般为16K,操作 系统⻚⼤⼩为4K,InnoDB的⻚写⼊到磁盘时,⼀个⻚需要分4次写。如果存储引擎正在写⼊⻚的数据到磁盘时发⽣了宕机,可能出现⻚只写了 ⼀部分的情况,⽐如只写了4K,就宕机了,这种情况叫做部分写失效 (partial page write),可能会导致数据丢失。双写缓冲区 Doublewrite Buffer。原创 2024-07-03 00:44:44 · 774 阅读 · 0 评论 -
数据库-MySQL面试题系列 002
Page是整个InnoDB存储的最基本构件,也是InnoDB磁盘管理的最⼩单 位,与数据库相关的所有内容都存储在这种Page结构⾥。Page分为⼏种类型,常⻅的⻚类型有数据⻚(B+tree Node)Undo⻚ (Undo Log Page)系统⻚(System Page) 事务数据⻚(Transaction System Page)等Page 各部分说明。原创 2024-07-02 00:30:59 · 780 阅读 · 0 评论 -
数据库-MySQL面试题系列 003
MySQL Server架构⾃顶向下⼤致可以分⽹络连接层、服务层、存储引擎层 和系统⽂件层。原创 2024-07-03 01:18:13 · 673 阅读 · 0 评论 -
数据库-MySQL面试题系列 004
什么是分库分表简单来说,就是指通过某种特定的条件,将我们存放在同⼀个数据库中的 数据分散存放到多个数据库(主机)上⾯,以达到分散单台设备负载的效 果。分库分表的⽬的是为了解决由于数据量过⼤⽽导致数据库性能降低的问 题,将原来单体服务的数据库进⾏拆分.将数据⼤表拆分成若⼲数据表组 成,使得单⼀数据库、单⼀数据表的数据量变⼩,从⽽达到提升数据库 性能的⽬的。单机存储容量遇到瓶颈连接数,处理能⼒达到上限.原创 2024-07-03 07:59:19 · 1000 阅读 · 0 评论 -
Java面试题Spring MVC
在Spring MVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。2.请求参数的接收方式不一样。struts2是通过类的成员变量接收请求的参数,是基于类的开发,线程不安全,只能设计为多例的开发。原创 2024-06-25 08:57:51 · 866 阅读 · 0 评论 -
Java 设计模式面试题
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未 经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计。大部分设计模式要解决的都是代码的可重用性、可扩展性问题如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维 护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。原创 2024-07-03 19:51:02 · 521 阅读 · 0 评论 -
Java SpringCloud面试题
假设我们仍然设定1秒内允许 通过的请求是200个,但是在这里我们需要把1秒的时间分成多格,假设分成5格(格数越多,流量过 渡越平滑),每格窗口的时间大小是200毫秒,每过200毫秒,就将窗口向前移动一格。如果单位时间已经结束,则将计数器清零,开启下一轮的计数。在分布式系统中,网络无法100%可靠,分区其实是一个必然现象,如果我们选择了CA而放弃了P, 那么当发生分区现象时,为了保证一致性,这个时候必须拒绝请求,但是A又不允许,所以分布式系 统理论上不可能选择CA架构,只能选择CP或者AP架构。原创 2024-07-03 20:50:12 · 975 阅读 · 0 评论 -
Java Spring面试题
先介绍Spring是怎么来的,发展中有哪些核心的节点,当前的最新版本是什么等通过上图可以比较清晰的看到Spring的各个时间版本对应的时间节点了。也就是Spring从之前单纯的 xml的配置方式,到现在的完全基于注解的编程方式发展。原创 2024-07-01 14:27:37 · 930 阅读 · 0 评论 -
Java MyBatis的面试题
1.介绍MyBatis的基本情况:ORMMyBatis框架的初始化操作处理SQL请求的流程1.系统启动的时候会加载解析全局配置文件和对应映射文件。加载解析的相关信息存储在 Configuration 对象@Test// 1.获取配置文件// 2.加载解析配置文件并获取SqlSessionFactory对象// SqlSessionFactory 的实例我们没有通过 DefaultSqlSessionFactory直接来获取// 而是通过一个Builder对象来建造的。原创 2024-07-03 08:37:15 · 532 阅读 · 0 评论 -
Java SpringBoot面试题
Spring Boot 是由 Pivotal 团队提供的基于 Spring 的全新框架,旨在简化 Spring 应用的初始搭建和开发 过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。约定大于 (优于)配置1、 spring-boot-starter-web :提供web开发需要servlet与jsp支持 + 内嵌的 Tomcat。2、 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate。原创 2024-07-03 13:01:51 · 1003 阅读 · 0 评论