面试题小总结

news2024/11/15 21:00:35

一、为什么要使用Redis?

  1. 因为它是内存数据库,运行速度快
  2. 因为它的工作线程是单线程,具有串行化,原子性
  3. 具有IO模型,天生支撑高并发
  4. 是kv模型,v具有多个数据结构
  5. 具有本地方法,可以计算数据移动
  6. 是二进制安全的,value最大为512MB

二、在百万级的Redis中如何查找key?

查找key有两种方法,第一种是用keys,第二种是scan。keys在数据量比较多的时候,会阻塞服务器,浪费服务器资源,所以通常情况下用scan,scan是一个基于游标的迭代器,它会在用户每次调用时,返回一个包含两个元素的数组,一个是下次迭代的游标,一个是所有迭代的元素,当返回的游标为0时,表示迭代结束。

三、Redis键的过期删除策略

Redis键的过期删除策略有两种:

  1. 惰性删除:在键过期后不会立即删除,而是在下次请求时扫描这个键是否过期,如果过期就删除,反之,则返回该键
  2. 定期删除:每隔一段时间扫描数据库,删除里面的过期键,扫描键的数量和数据库数量由算法决定

四、Spring MVC的执行流程

请添加图片描述
流程大致是:

  1. 用户向前端控制器发送请求
  2. 前端控制器接收到请求后调用处理映射器
  3. 处理器映射器找到具体的处理器,生成处理器对象以及处理器拦截器,再一起返回给前端控制器
  4. 然后前端控制器调用处理器适配器
  5. 处理器适配器调用具体的处理器
  6. 处理器适配器将处理器执行结果ModelAndView返回给前端控制器
  7. 然后前端控制器ModelAndView传给视图解析器解析View
  8. 前端控制器视图解析器返回的View进行渲染,然后响应给用户

五、Spring Boot自动装载原理

Spring Boot的自动装载主要是通过**@SpringBootApplication注解实现,它包含了==@EnableAutoConfiguration==,该注解从META-INF/spring。factories**文件中读取自动装置类,这些类通过条件注解决定是否要被激活。另外,Spring Boot允许通过配置文件调整自动配置

六、如何解决session问题

JWT将用户的信息封装到一个token令牌中,当每次请求时需要携带token令牌访问
JWT由三个部分组成:头部、负载、签名
头部中就是使用加密算法的签名,负载中存放着需要传递的数据信息
基于Cookie,用户登录后,将Session信息保存在客户端,用户在每次请求的时候,通过客户端的cookie把Session信息带过来

七、布隆过滤器的作用

布隆过滤器是由位数组和哈希函数组成的,通过过个哈希函数将元素映射到位数组的随机位置,主要作用是处理大量任务的筛选任务,主要应用到时预防缓存穿透中,而缓存穿透指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪。但是通常使用的办法是使用黑名单防止缓存穿透

八、Rabbion中常用的负载均衡算法

主要有四种:轮询、随机、权重、响应时长

九、Rabbion第一次调用为什么会很慢

因为Rabbion默认的是懒加载,它在第一次访问的时候才会去创建LoadBalanceClient,就会导致调用很慢
优化方法就是使用饥饿加载,饥饿加载会在项目启动时加载,降低了第一次访问到耗时时长

十、为什么要使用双token拦截器

双token就是使用了两个token令牌,访问令牌和刷新令牌,这种方法会在提高安全性的同时,优化用户的体验,会更加灵活,更好的管理用户权限

十一、什么是CAP原则

C就是一致性,A是可用性,P是分区容忍性,这三个属性最多只能同时保证其中两个

十二、Nacos配置中心动态刷新原理

  1. 客户端发起请求:客户端通过后台线程发起一个 HTTP 请求到 Nacos 服务端,用于监听配置变化。
  2. 服务端挂起连接:Nacos 服务端接收到请求后,会挂起(hold)这个 HTTP 连接一段时间(例如 30 秒),在此期间服务端监控配置文件的变化。
  3. 无变化情况:若在这段时间内没有检测到配置文件有任何变更,服务端将释放连接并向客户端返回一个指示,表明配置没有更新。
  4. 配置变更情况:如果在挂起期间检测到配置文件发生变化,服务端会立即释放连接并将最新的配置推送给客户端。
  5. 循环轮询:无论哪种情况,客户端在接收完响应后,会在短暂延迟(如 10 毫秒)之后重新发起一个新的 HTTP 请求,从而形成循环轮询机制以持续监听配置更新。

十三、负载方案有哪些?

负载方案有两种:

  1. 服务端负载均衡:在消费者和服务提供放中间使用独立的代理方式进行负载,有硬件(F5)和软件(Nginx、OpenResty)
  2. 客户端负载均衡:客户端根据自己的请求做负载均衡,Rabbion就属于客户端自己的负载均衡

十四、ES使用场景

  1. 全文搜索
  2. 数据分析
  3. 日志分析与监控
  4. NoSQL JSON文档数据库
  5. 搜索推荐
  6. 地理位置信息
  7. 大规模监控系统

十五、MongoDB应用场景

做了一个拼车微信小程序,里面用到了MongoDB,用来存储定位信息和订单信息等,还有其他的应用场景比如:

  1. 网站数据存储
  2. 游戏开发
  3. 物流与电商
  4. 社交网络
  5. 物联网
  6. 内容管理系统
  7. 大数据分析

十六、MyBatis执行流程

在这里插入图片描述

  1. 读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息
  2. 加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
  3. 构造会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。
  4. 创建会话对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。
  5. Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。
  6. MappedStatement对象。在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。
  7. 输入参数映射。输入参数类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输入参数映射过程类似于JDBC对preparedStatement对象设置参数的过程。
  8. 输出结果映射。输出结果类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输出结果映射过程类似于JDBC对结果集的解析过程。

十七、MyBatis拦截器

有四个拦截器

  1. Executor(执行器拦截器)
  2. StatementHandler(语句拦截器)
  3. ParameterHandler(参数拦截器)
  4. ResultHandler(结果集拦截器)
    拦截的执行顺序也是如上面顺序

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

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

相关文章

Mac用户必备:轻松添加Git SSH密钥全攻略

最近新买了一台MacBook笔记本,然后安装了git,准备下载代码,正好遇到配置GitHub的ssh密钥,记录一下整个操作流程。 操作步骤 在Mac上添加Git SSH密钥的步骤如下: 检查是否已有SSH密钥: 打开终端&#xff0…

Nginx: https解决安全问题

https原理 1 )http协议存在的问题 数据使用明文传输,可能被黑客窃取 (需要信息加密)报文的完整性无法验证,可能被黑客篡改 (需要完整性校验)无法验证通信双方的身份,可能被黑客伪装 (需要身份认证) 2 ) https 原理 所谓 https,…

新160个crackme - 043-riijj_cm_20041121

运行分析 除了主程序还有一个dll文件,应该是要加载pf1.dll这个动态链接库运行主程序,需破解Name和Serial,点击注册无反应 PE分析 C程序,32位,无壳 静态分析&动态调试 尝试ida动调加载动态链接库pf1.dll&#xff0c…

全能型AI“草莓”:未来趋势还是市场泡沫?

你好,我是三桥君 近日,OpenAI宣布将在秋季推出代号为“草莓”的新AI模型。这一消息迅速引起了科技界和市场的广泛关注。 OpenAI的新项目“草莓”(Strawberry)是一个备受关注的人工智能模型,预计将在今年秋季发布。这个…

算法复盘——LeetCode hot100:哈希

文章目录 哈希表哈希表的基本概念哈希表的使用1. 插入操作2. 查找操作3. 删除操作 哈希表的优点和缺点1.两数之和复盘 242.有效的字母异位词复盘 49.字母异位词分组复盘 128. 最长连续序列复盘HashSet 哈希表 先来搞清楚什么是哈希表吧~ 概念不清楚方法不清楚怎么做题捏 哈希表…

MongonDB-索引

一、索引-index (一) 概述 索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时&am…

firewalld 防火墙常用命令,新手必看

firewalld 防火墙常用命令 防火墙状态命令 systemctl start firewalld #启动防火墙 systemctl stop firewalld #关闭防火墙 systemctl restart firewalld #重启防火墙 systemctl enable firewalld #设置开机自启 systemctl disable firewalld #禁用开机自启 systemctl s…

自己开发完整项目一、登录功能-03(使用springSecurity安全框架,查询用户角色权限)

一、说明 在前面两章节,实现了通过springsecurity来进行用的登录认证,当用户输入用户名和密码之后,通过额数据库中的信息比对,比对成功那么放行。但是还存在一个问题:因为系统的所有页面包括按钮都是有各自的权限&…

全网最全robotframework自动化测试环境搭建

一、前言 1、在2019年之前,robotframework-ride的版本一直是1.5.2.1,是2016年1月份的版本,只能安装在python2.7的环境上,导致如果想同时使用robotframework做测试且又需要python3环境编写python代码的小伙伴都需要在操作系统上安…

Golang 读取文件

GoLang读取文件需要用到os类去打开文件,然后再用其他方式分析文件里的内容。打开文件比较简单,使用os.Open就可以了,记住用defer关闭就行。但是读取文件内容就头疼了,以文本文件为例子,就有各种方式 读取到byte数组 首…

渐进式衰老?医美三剑客的“市梦率”幻灭了

医美股神话彻底幻灭了。 从股价蒸发到业绩失速,“医美三剑客”上演着繁华落幕,回归平凡的剧本。 近一年来,爱美客、华熙生物、昊海生科股价分别累计下跌52.97%、46.03%、16.09%。 “医美三剑客”近一年累计跌幅(资料来源&#x…

分水岭算法简介

分水岭算法是一种经典的图像分割技术,广泛应用于图像处理领域。它的名称源自地理学中的“分水岭”概念,即在地形中,水从高处流向低处,最终汇聚成河流的过程。在图像分割中,分水岭算法将灰度图像视为地形,将…

STM32(八):定时器——输入捕获实验

目录 输入捕获模式测频率: 结构图: 步骤: 部分函数详解: 源码: PWMI模式测频率占空比: 结构图: ​编辑 举例说明 源码: 输入捕获模式测频率: 结构图&#xf…

using showdown js with openAi streaming response

题意:"使用 Showdown.js 处理 OpenAI 流式响应" 问题背景: I tried using showdownjs to translate streamed markdown from OpenAi to HTML "我尝试使用 Showdown.js 将来自 OpenAI 的流式 Markdown 转换为 HTML" I changed the …

机器学习第五十四周周报 MAGNA

文章目录 week54 MAGNA摘要Abstract一、文献阅读1. 题目2. Abstract3. 文献解读3.1 Introduce3.2 创新点 4. MAGNA4.1 基础4.2 多跳注意力扩散机制4.3 网络架构4.4 图注意力扩散机制的分析 5. 实验分析5.1 节点分类5.2 知识图谱 6.结论 二、若依系统1. 权限管理2. 数据字典3. 其…

【Linux修行路】进程通信——共享内存

目录 ⛳️推荐 一、直接原理 1.1 共享内存的的申请 1.2 共享内存的释放 二、代码演示 2.1 shmget 2.1.1 详谈key——ftok 2.2 创建共享内存样例代码 2.3 获取共享内存——进一步封装 2.4 共享内存挂接——shmat 2.5 共享内存去关联——shmdt 2.6 释放共享内存——s…

gitee版本控制

前置要求: 安装Git git下载地址:https://git-scm.com/download/win 注册gitee gitee官网:Gitee - 基于 Git 的代码托管和研发协作平台 创建普通项目 目录 git推送远程仓库基本操作 克隆仓库到本地 项目上传 版本管理 分支管理版本…

紧急 浮毛正在挑战免疫系统?推荐榜TOP3浮毛空气净化器使用体验

作为一名多猫家庭的铲屎官,出门路人必知道我养猫,不是把铲屎官三个字大大的打在我脑门上了。而是衣服、裤子上无处不在的猫毛,以前我就靠着人力与各种工具与猫毛斗争,但效果总是差强人意。直到有一天,我因忽视浮毛而患…

Linux 用户缓冲区

1. 文件描述符的分配规则 我们知道Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入stdin--0, 标准输出stdout--1, 标准错误stderr--2。0,1,2对应的物理设备一般是:键盘,显示器,显示器.接下…

字符串原始字面量

简介:C11中添加定义了原始字符串的字面量,定义方式为:R"xxx(原始字符串)xxx",其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转译或链接等操作 …