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.mfbz.cn/a/600365.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

就业班 第三阶段(redis) 2401--5.7 day2 redis2 哨兵(前提是做好了主从)+redis集群

1、设置密码(redis) 先在redis.conf里面找到这个 后面写上要设置的密码即可 2、哨兵模式 监控redis集群中master状态的的工具 在做了主从的前提下 主 从1 从2 作用 1):Master状态检测 2):如果Master异常,则会进行…

2-5 任务:打印九九表

本次实战的目标是通过编写程序实现打印九九乘法表、字符矩形、字符平行四边形和字符菱形等图形,以及解决百钱买百鸡问题和输出素数等实际问题。在实战过程中,我们将学习并掌握以下知识点。 双重循环的使用:通过双重循环实现九九乘法表的打印&…

告别杂乱桌面,开启纯净视界!DeskCover Pro,Mac用户的桌面神器!

DeskCover Pro for Mac是一款专为macOS设计的桌面图标隐藏软件,其主要功能和特点包括: 桌面图标隐藏:通过单击鼠标或按全局热键,可以快速隐藏桌面上的所有图标,为您提供一个干净整洁的工作环境。窗口聚焦:…

证券基金信创联盟研讨会:YashanDB分享金融核心数据库技术实践

4月26日,由证券基金行业信息技术应用创新联盟主办、WG3稽核风控系统工作组承办、国信证券股份有限公司协办的信创联盟2024年度系列研讨会第三期-稽核风控系统信创实践成功举办。国内头部企业国信证券、申万宏源证券、信达证券、国金证券、广发证券等单位共计300余人…

【数据结构】链表经典OJ题目练习(2)

面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) 思路1:先计算出链表的长度,在将链表中的值存在数组中,在返回第k个节点。 思路2:利用快慢指针,先让快指针走k步,在让快慢指针分…

[译]Elasticsearch _source Doc_values And Store Performance

原文地址 https://sease.io/2021/02/field-retrieval-performance-in-elasticsearch.html 在这篇博文中,我想从性能的角度探讨 Elasticsearch 为我们存储字段和查询时检索字段提供了哪些可能性。 事实上,Lucene(Elasticsearch 和 Solr 构建的…

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)

目录 前言1. Mybatis2. MybatisPlus3. 实战 前言 更多的知识点推荐阅读: 【Java项目】实战CRUD的功能整理(持续更新)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 本章节主要以Demo为例&#xff…

122. Kafka问题与解决实践

文章目录 前言顺序问题1. 为什么要保证消息的顺序?2.如何保证消息顺序?3.出现意外4.解决过程 消息积压1. 消息体过大2. 路由规则不合理3. 批量操作引起的连锁反应4. 表过大 主键冲突数据库主从延迟重复消费多环境消费问题后记 前言 假如有家公司是做餐饮…

3行代码,实现一个取色器

前言 今天发现了一个很好玩的 API ——EyeDropper。 EyeDropper API 提供了一种创建拾色器工具的机制。使用该工具,用户可以从屏幕上取样颜色,包括浏览器窗口之外的区域。 这是 MDN 上对它的介绍,可以取包括浏览器窗口之外的区域。我们一起看看是怎么个事 什么是取色器 取…

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接:https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码:0b8x

【C 数据结构-图】2. 图的存储结构

文章目录 【 1. 图的顺序存储结构 】1.1 基本原理1.2 顺序存储结构的 C 实现 【 2. 图的链式存储结构 】2.1 图的临接表存储结构2.1.1 临接表的 基本原理2.1.2 临接表的 链表节点2.1.3 邻接表 各结构体的C实现2.1.4 临接表 计算顶点的出度和入度邻接表计算 无向图的出度和入度邻…

【Fastadmin】后台角色组权限问题(multi,开关switch,控制器新增方法)

1.列表开关类型的权限 如图: 此类开关请求的方法为multi 开关在点击的时候默认是只允许修改数据库的status字段的,如果我们开关不是status字段,我们需要在服务端对应的控制器中定义protected $multiFields"id,name,swith";&#x…

一个物业管理服务项目的思考——智慧停车场无人值守呼叫系统到电梯五方对讲再到呼叫中心

目录 起源智慧停车场无人值守呼叫系统然后电梯五方对讲系统又然后物业呼叫中心集控E控中心怎么做 起源 小区里新装了智慧停车场系统,马上展现出了科技化、现代化的新形象。一个显著的好处是:停车场的出入口,再也看不到司机和保安争吵的场景了…

四川景源畅信:抖音的运营策略有哪些?

在数字营销的大潮中,抖音以其巨大的用户基础和强大的传播力成为众多品牌和商家的必争之地。那么,抖音的运营策略有哪些呢?这个问题涉及到内容创作、用户互动、数据分析和品牌合作等多个方面。 一、内容创作与优化在抖音,内容是吸引用户的关键…

C++ 数据内存分布揭秘:从栈到堆的探索之旅

目录 1. 栈(Stack) 2. 堆(Heap) malloc和new的区别 堆与栈在C中的异同点详解 3. 数据段(Data Segment) 4. 代码段(Code Segment) 5. 动态内存分配的陷阱 当我们谈论C编程时,对内存布局的理解至关重要。本文将深入探讨C中各种变量和数据结构在内存中的分布情况…

这些CTF,不仅学技术,还有巨额奖金!

前言: 不会吧,不会吧,不会还有安全er不知道CTF是什么吧? 在程序员的世界里,也有ACM这样的编程大赛,成为各路编程高手一较高下展示能力的平台。 那在网络安全的圈子里,各路黑客红客白帽子们又…

rag-embeddings基础流程

什么是检索增强的生成模型 LLM 固有的局限性 LLM 的知识不是实时的LLM 可能不知道你私有的领域/业务知识 检索增强生成 RAG(Retrieval Augmented Generation)顾名思义,通过检索的方法来增强生成模型的能力。 类比:你可以把这个…

linux 内核编译

目录 Linux操作系统框架 Linux内核的主要功能: Linux的内核目录结构: 结构图: 详细介绍: uname - a 补充 编译之前 UTC 时间补充 Linux内核编译流程: 方法一: 官方内核编译: 1. 运行 build.sh 脚本, 记得加 sudo 权…

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

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

linux或ubuntu环境下需要自行安装vivado USB Program下载程序驱动

如果在linux或ubuntu环境下,不安装驱动是无法下载FPGA程序的。在linux或ubuntu环境下安装程序不要自动安装。 johnjohn-wang:~/vitis2021.2/Vivado/2021.2/data/xicom/cable_drivers/lin64/install_script/install_drivers$ sudo ./install_drivers
最新文章