JAVA面试常见面试问题01

1、队列系列

1.1、选型

ActiveMq ⼩规模场景,有较低概率丢失消息,官方社区维护少
RabbitMq ⼩规模场景,吞吐量⽐较低,消息积累会严重影响性能
RocketMQ ⼩规模场景,官⽅⽂档和周边⽣态还不够成熟
Kafka 大规模场景,⽇志分析、⼤数据采集、大数据实时计算

1.2、所有队列都是用来解耦和流量削峰从而实现异步处理

1.3、rabbitmq

Broker服务节点、生产者Publisher、消费者Consumer、Exchange:交换器

传输模式简单模式  1个生产者  1个消费者 1个队列

                  工作模式  1个生产者  2个消费者  1个队列

                  发布/订阅模式 点对点的key 发和接收 无限制生产者消费者

                  路由模式 1个生产者 2个消费者 2个队列 1个交换机,2个消费者同时绑定到不同队                          列,2个队列绑定到不同交换机,生产者发送消息到交换机,交换机转到消费者并消费

分发策略:轮询分发、不公平分发、预值分发

消息堆积:分析是否bug导致,如果不是则扩容

持久化:RabbitMQ 消息默认存在内存,不声明则不保存到硬盘,如果节点挂了消息会丢失,声明                在配置参数

              非必要消息无需持久化,在硬盘中效率低于内存

应答机制:自动应答 高吞吐下内存耗尽可能会失效。手动应答 可以写在try catch内 确定和否认

事务: 通过AMQP事务机制实现、通过将channel设置成confirm模式来实现

1.3、kafka

以前的版本需要装ZooKeeper 用于协调;新版本内置zk;

关键字: Producer、Broker、Consumer、Consumer Group、Topic、分区、副本

2、多线程

ab 两个线程,a线程怎么访问到b线程

答: 通过共享对象通信、忙等待

3、redis雪崩

redis缓存中大量的key同时失效,此时又刚好有大量的请求打进来,直接打到数据库层,造成数据库阻塞甚至宕机。

解决办法

事前:Redis 高可用,主从+哨兵,Redis cluster,避免全盘崩溃。
原有的失效时间基础上增加一个随机值,比如1-5分钟随机
加锁,当出现缓存失效的情况通过锁控制一定时间只有一个线程获取到资源从数据库拿到数据后写回缓存,后面基于缓存做查询
缓存预热
热点key设置永不过期。
事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死。
事后:Redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。

4、springboot 装配

4.1、初始化监听器:通过getrunlistners方法负责在启动的不同阶段,传播不同的信息给监听实体类。

4.2、构建上下文环境:通过preparenvironment方法对java环境和配置文件加载封装

4.3、初始化应用上下文:通过creatapplication方法创建上下文对象构建ioc容器

4.4、刷新上下文准备阶段: 通过preparecontext方法为前面的上下文对象设置属性,并完成一些bean对象创建包括启动类。

4.5、刷新上下文即自动装配

4.5.1、自动装配由启动类的springbootapplication注解实现,主要包括springbootconfiguration,enableautoconfiguration,componentscan注解。

4.5.2、springbootconfiguration注解包括:configuration和conponent注解

4.5.3、componscan:实现扫描功能

4.5.4、enableautoconfiguration:包含一个autoconfigurationpackge然后里面包含一个import注解传入registart.class类构建一个注册器。

4.5.5、enableautoconfiguration:还包含一个import注解,传入autoconfigurationimportselector.class类。会调用该类的getautoconfigurationentry方法即获取所有的候选配置类。然后调用getcandidateconfigurations方法即获取所有的候选配置。然后调用getspringfactoriesloaderfactoryclass方法,即获取标注了enableconfiguration注解的类即启动类。

4.5.6、getcandidateconfigurations:该方法去调用loadfactoryName方法,获取所有的加载配置,调用loadspringfactories方法,调用classloader.getresource和classloader.getsystemresource方法,会去找到meta-info-spring.factories文件,将里面的资源遍历封装成properties文件供我们使用
 

5、mysql

索引

5.1、按数据结构分类: B+Tree 索引、HASH 索引、Full-Text 索引

5.2、按物理存储分类:聚簇索引(主键索引)、二级索引(辅助索引)

5.3、按字段特性分类:主键索引、唯一索引、普通索引、前缀索引

5.4、按字段个数分类:单列索引、联合索引

关键字

explain 查询调用索引情况、分析慢查询
show profile 分析慢查询
show processlist 查看正在执行的慢查询

6、redis数据类型

  • String(字符串)
  • Hash(哈希)
  • List(列表)
  • Set(集合)
  • zset(有序集合)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32——基础篇

技术笔记! 一、初识STM32 1.1 ARM内核系列 A 系列:Application缩写。高性能应用,比如:手机、电脑、电视等。 R 系列:Real-time缩写。实时性强,汽车电子、军工、无线基带等。 M 系列:Microcont…

MCU做死循环时,到底应该用for(;;) 还是wihile(1)

MCU做死循环时 for while stm32中老工程师用forfor while背景for版本while版本正方观点:哪有好的编译器:反方观点:这种代码过时了工程师实地测试:和编译器和优化有关 建议还是用for参考 stm32中老工程师用for /* Start scheduler …

linux中相关压缩文件的便捷方式

1.压缩解压缩命令 tar命令 tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。 一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件 常…

MATLAB函数fir1的C语言移值

要移值的matlab函数: h3 = fir1(16,[0.25 0.50]); C语言版本 #include <iostream> #include <cmath>#define PI acos(-1)double sincEasy(double *x, int len, int index) {double temp = PI * x[index];if (temp == 0) {return 1.0; // sinc(0) = 1}return s…

【前端】HTML基础(1)

文章目录 前言一、什么是前端二、HTML基础1、 HTML结构1.1 什么是HTML页面1.2 认识HTML标签1.3 HTML文件基本结构1.3 标签层次结构1.4 创建html文件1.5 快速生成代码框架 三、Emmet快捷键 前言 这篇博客仅仅是对HTML的基本结构进行了一些说明&#xff0c;关于HTML的更多讲解以及…

华为机考入门python3--(23)牛客23- 删除字符串中出现次数最少的字符

分类&#xff1a;字符串 知识点&#xff1a; 访问字典中keychar的值&#xff0c;不存在则返回0 my_dict.get(char, 0) 字典的所有值 my_dict.value() 列表中的最小值 min(my_list) 题目来自【牛客】 import sysdef delete_min_freq_char(s):# 计算字母出现的频次…

【linux】dmesg工具

dmesg介绍 dmesg工具用途&#xff1a; dmesg - print or control the kernel ring buffer kernel ring buffer, 内核环形缓冲区&#xff0c;也叫环形队列&#xff0c;Linux内核日志就存储在一个环形队列中&#xff0c;环形队列满的时候&#xff0c;新的消息会覆盖掉旧的消息。…

《十八》QThread多线程组件

本章将重点介绍如何运用QThread组件实现多线程功能。 多线程技术在程序开发中尤为常用&#xff0c;Qt框架中提供了QThread库来实现多线程功能。当你需要使用QThread时&#xff0c;需包含QThread模块&#xff0c;以下是QThread类的一些主要成员函数和槽函数。 成员函数/槽函数 …

02-Fortran基础--Fortran操作符与控制结构

02-Fortran基础--Fortran操作符与控制结构 0 引言1 操作符1.1 数学运算符1.2 逻辑运算符1.3 关系运算符 2 控制流程2.1 条件结构2.2 循环结构2.3 分支结构 0 引言 运算符和控制流程对编程语言是必须的,Fortran的操作符和控制流程涉及到各种数学运算符、逻辑运算符以及控制结构。…

一文了解栈

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、栈是什么&#xff1f;二、栈的实现思路1.顺序表实现2.单链表实现3.双向链表实现 三、接口函数的实现1.栈的定义2.栈的初始化3.栈的销毁4.入栈5.出栈6.返回栈…

调用nvprof报错: No kernels were profiled. No API activities were profiled.

调用nvprof报错 1 nvprof介绍 nvprof 是 NVIDIA 提供的一款用于分析 CUDA 应用程序性能的命令行性能分析器。CUDA 是一种并行计算平台和编程模型&#xff0c;允许开发人员利用 NVIDIA GPU 进行通用处理。 nvprof 帮助开发人员分析其 CUDA 应用程序的性能&#xff0c;提供各种…

C++继承 - 下

目录 1. 继承和友元 2. 继承与静态成员 3. 菱形继承以及菱形虚拟继承 3.1. 单继承 3.2. 多继承 3.3. 菱形继承 3.4. 菱形虚拟继承 3.5. 菱形继承的底层细节 3.6. 菱形虚拟继承的底层细节 3.7. 虚拟继承 4. 继承的总结 5. 相关继承练习题 5.1. 如何定义一个无法被继…

【Vue3】Ref与Reactive

3.1【ref 创建&#xff1a;基本类型的响应式数据】 作用&#xff1a;定义响应式变量。语法&#xff1a;let xxx ref(初始值)。返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。注意点&#xff1a; JS中操作数…

Windows环境编译 VVenC 源码生成 Visual Studio 工程

VVenC介绍 Fraunhofer通用视频编码器(VVenC)的开发是为了提供一种公开可用的、快速和有效的VVC编码器实现。VVenC软件基于VTM&#xff0c;其优化包括软件重新设计以减轻性能瓶颈、广泛的SIMD优化、改进的编码器搜索算法和基本的多线程支持以利用并行。此外&#xff0c;VVenC支…

加索引导致表被锁的原因及处理方法

目录 为什么加索引会导致表被锁&#xff1f;什么情况下会被锁&#xff1f;要注意什么&#xff1f;被锁怎么处理&#xff1f;MySQL查询被锁的表查询被锁的库 PostgreSQL查询被锁的表查询被锁的库 Oracle查询被锁的表查询被锁的库 SQL Server查询被锁的表查询被锁的库 结语 在数据…

Mybatis plus update PG json 类型 报错解决

Mybatis plus update PG json 类型 报错解决 1. 定义的PG数据库对象2. 自定义 JSON Handler3. update Wrapper4. update 报错信息4.1 No hstore extension installed.4.2 Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for …

git commit 提交报错pre-commit hook failed (add --no-verify to bypass) 解决方法,亲测有效

问题截图 今天在执行 git commit 命令时报错&#xff1a;pre-commit hook failed (add --no-verify to bypass) 解决 参考文章&#xff1a;git commit报错&#xff1a;pre-commit hook failed的解决方法 具体原理什么的就不解释了&#xff0c;可以看看上面的参考文章 解决方…

TXT文本高效批量编辑,支持批量将每个单号间的空白行进行删除掉,文本内容管理更方便

TXT文本是一种常用的存储快递单号的数据格式。然而&#xff0c;当TXT文本中存在大量的空白行时&#xff0c;不仅浪费了存储空间&#xff0c;还可能导致批量编辑和查询变得低效。为了解决这一问题&#xff0c;我们推出了高效的TXT文本批量编辑功能&#xff0c;支持批量删除单号间…

PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM

本文首发于公众号&#xff1a;机器感知 PTQ4SAM、Mamba-Attention、AniTalker、IceFormer、U-DiTs、CogDPM PTQ4SAM: Post-Training Quantization for Segment Anything Segment Anything Model (SAM) has achieved impressive performance in many computer vision tasks. Ho…

Day 24 数据库管理及数据类型

数据库管理及数据类型 一&#xff1a;数据类型 1.数值类型 整数类型 ​ 整数类型&#xff1a;TINYINT SMALLINT MEDIUMINT INT BIGINT ​ 作用&#xff1a;用于存储用户的年龄、游戏的Level、经验值等 浮点数类型 ​ 浮点数类型&#xff1a;FLOAT DOUBLE ​ 作用&#xf…