20230919后台面经整理
1.你认为什么是操作系统,操作系统有哪些功能
os是:管理资源、向用户提供服务、硬件机器的扩展
1.进程线程管理:状态、控制、通信等
2.存储管理:分配回收、地址转换
3.文件管理:目录、操作、磁盘、存取
4.设备管理:设备驱动、分配回收、缓冲技术
5.用户接口:系统命令、编程接口
2.简单linux命令使用:top ps netstat df less grep
top: 性能分析工具,能够实时显示系统中各个进程的资源占用状况,进程
ps:列出运行的进程
netstat:显示网络状态,所有连线的socket
df:显示系统上的文件系统磁盘使用情况统计
less:随机浏览文件,支持翻页和搜索
grep:用于查找文件里符合条件的字符串或正则表达式
tail:看日志最后
3.innodb和myisam区别,统计记录的数量会怎么做
区别:
1.InnoDB中不保存表的具体行数,而MYISAM对是单独存起来的
2.InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据;MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。
3.InnoDB支持外键,而MyISAM不支持。
4.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持;myisam强调性能
5.InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表;高并发insert,innodb完胜
全量count操作:
myisam中把表的总行数存储在磁盘上,直接返回
innodb一条条读出来,再加起来(因为innodb的事务特性mvcc导致多少行不确定)
myisam更快
count带where筛选:myisam不一定快了
4.tcp是用什么保证可靠性的
TCP协议主要通过以下七点来保证传输可靠性:连接管理,校验和,序列号,确认应答,超时重传,流量控制,拥塞控制。
连接管理 即三次握手和四次挥手。连接管理机制能够建立起可靠的连接,这是保证传输可靠性的前提。
校验和 发送方对发送数据的二进制求和取反,然后将值填充到TCP的校验和字段中,接收方收到数据之后,以相同的方式计算校验和并进行对比。如果结果不符合预期,则将数据包丢弃。
注意:即便二者相等,也并不能确保数据包一定是正确无误的,基于某些巧合,会出现数据包错误,但发送端和接收端的校验和相等的场景。
序列号 TCP将每个字节的数据都进行了编号,这就是序列号。序列号的具体作用如下:能够保证可靠性,既能防止数据丢失,又能避免数据重复。能够保证有序性,按照序列号顺序进行数据包还原。能够提高效率,基于序列号可实现多次发送,一次确认。
确认应答 接收方接收数据之后,会回传ACK报文,报文中带有此次确认的序列号,用于告知发送方此次接收数据的情况。在指定时间后,若发送端仍未收到确认应答,就会启动超时重传。
超时重传 具体来说,超时重传主要有两种场景:数据包丢失:在指定时间后,若发送端仍未收到确认应答,就会启动超时重传,向接收端重新发送数据包。确认包丢失:当接收端收到重复数据(通过序列号进行识别)时将其丢弃,并重新回传ACK报文。
流量控制 接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,就会导致接收端的缓冲区溢出,进而导致丢包……为了避免上述情况的发生,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这就是流量控制。流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。
拥塞控制 拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。可以得出,发送端的发送速度,受限于滑动窗口和拥塞窗口中的最小值。
拥塞控制方法分为:慢开始,拥塞避免快重传和快恢复
5.如果发现cpu飙升,怎么排查
线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时)
线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口超时报警等。

top确认进程 -》 top确认线程 -〉 线程hex -》jstack堆栈信息 -〉 jstat gcutil信息
原因:
1.内存消耗过大,gc次数过多(生成大量对象,导致溢出),也可能system.gc过多
2.耗cpu操作,无限递归等
3.死锁
4.大量进程访问阻塞的接口
5.某个线程进入waiting状态,导致不可用
6.redis怎么实现去重
基于set:SISMEMBER key member
基于bit:Redis 的 bit 可以用于实现比 set 内存高度压缩的计数,它通过一个 bit 1 或 0 来存储某个元素是否存在信息,用userid作为访客偏移,网站访客计数,setbit,getbit,bitcount等
基于hyperloglog:实现超大数据量精确的唯一计数,基于概率论近似计数,12 k左右的内存,实现上亿的唯一计数,而且误差控制在百分之一左右
基于BloomFilter:是利用类似位图或者位集合数据结构来存储数据,利用位数组来简洁的表示一个集合,并且能够快速的判断一个元素是不是已经存在于这个集合。虽然BloomFilter不是100%准确(需要安装插件)
7.如果去重的时候查询redis时网络波动导致查超时怎么办
假设场景:redis 响应变慢,查看日志,发现大量 TimeoutException。
大量TimeoutException,说明当前redis服务节点上已经堆积了大量的连接查询,超出redis服务能力,再次尝试连接的客户端,redis 服务节点直接拒绝,抛出错误。
1.cpu资源竞争,要与上层应用进行资源隔离
2.swap导致redis内存交换磁盘,关闭swap
3.对于网络波动
a.配置文件优化,如timeout时间300s,tcp-keepalive心跳机制60
b.数据备份和容错,主节点和备份节点,用sentinel自动故障检测和转移,保证可用
c.数据aof持久化,避免数据丢失;replication,同步
8.kafka在什么情况下会导致消息丢失
参考https://huaweicloud.csdn.net/637ee65ddf016f70ae4c905f.html?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125605128-blog-131979567.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125605128-blog-131979567.235%5Ev38%5Epc_relevant_sort&utm_relevant_index=1

1.生产过程丢失,网络原因,重发解决(try catch;异常消息表异步任务重试;kafka自动重试有次数限制,一般手动)
2.服务端持久化丢失,kafa异步刷盘,broker在刷盘前宕了,丢失了

每个partition多副本,leader和follower,加快持久化的性能和安全性,ISR + OSR = AR
3.消费过程丢失,offset的概念,消费者从partition拉取后本地处理完需要commit一下offset说明消费完成,关闭自动commit offset,要处理完逻辑后再commit

9.kafka和rabbitmq有什么区别
1.开发语言,rabiitmq用erlang,kafa用scala和java用于活跃的流式数据,大数据量
2.结构不同,rabbitmq的broker有exchange,biding和queue,kafka的broker有part分区
3.交互式:rabbitmq用push,kafka用pull
4.负载均衡:rabbitmq单独的loadbalncer,kafka用zookeeper对broker和consumer进行管理
5.使用场景:rabbit支持消息可靠传递,支持事务,不支持批量;kafka高吞吐,内部采用消息的批量处理
10.explain参数

id,select_type,type,possible_key, key,key_len,ref,rows_filtered,extra

11.http报文参数有哪些吗?

请求行:方法等
请求头部:kv对
空行
请求数据

状态行
响应头:kv对
空行
响应体
12.消息队列如何保证可靠性和消息幂等性?
消费者多次受到信息,要保证消费的幂等性

唯一id、分布式锁只有一个消费者,消费清单,消费状态记录
可靠性:
1.异常捕获机制try catch
2.事务机制
3.发送端确认confirm
4.持久化存储
5.消费者ack
6.消息积压的话得进行限流
7.幂等性
13.消息队列优缺点
优点:解耦异步削峰
缺点:可用性降低(挂了)、复杂度上升(重复、丢失、顺序)、一致性
14.接口幂等性如何保证?
参考https://www.21ic.com/article/883663.html
幂等性:它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),使用幂等性最大的优势在于使接口保证任何幂等性操作,免去因重试等造成系统产生的未知的问题
问题:前端重复提交表单,用户恶意进行刷单,接口超时重复提交,消息进行重复消费
影响:改成串行降低效率,业务复杂
get满足,post不满足
实现方法:
1.数据库唯一主键的实现主要是利用数据库中主键唯一约束的特性,一般来说唯一主键比较适用于“插入”时的幂等性,其能保证一张表中只能存在一条带该唯一主键的记录,使用分布式id,雪花id之类
2.数据库乐观锁实现幂等性:多加一个字段作为数据的版本标识,多次更新无影响
3.防重 Token 令牌实现幂等性:对于点许点击或超时充实,提交订单,调用方在调用接口的时候先向后端请求一个全局 ID(Token),请求的时候携带这个全局 ID 一起请求(Token 最好将其放到 Headers 中),后端需要对这个 Token 作为 Key,用户信息作为 Value 到 Redis 中进行键值内容校验,如果 Key 存在且 Value 匹配就执行删除命令,然后正常执行后面的业务逻辑。如果不存在对应的 Key 或 Value 不匹配就返回重复执行的错误信息,这样来保证幂等操作。

要保持检查and删除的原子性,使用lua脚本
4.下游传递唯一序列号实现幂等性:请求序列号,其实就是每次向服务端请求时候附带一个短时间内唯一不重复的序列号,该序列号可以是一个有序 ID,也可以是一个订单号,redis加上过期时间

相关文章:
20230919后台面经整理
1.你认为什么是操作系统,操作系统有哪些功能 os是:管理资源、向用户提供服务、硬件机器的扩展 1.进程线程管理:状态、控制、通信等 2.存储管理:分配回收、地址转换 3.文件管理:目录、操作、磁盘、存取 4.设备管理&…...
画一个时钟(html+css+js)
这是一个很简约的时钟。。。。。。。 效果: 代码: <template><div class"demo-box"><div class"clock"><ul class"mark"><liv-for"(rotate, index) in rotatedAngles":key"i…...
红 黑 树
文章目录 一、红黑树的概念二、红黑树的实现1. 红黑树的存储结构2. 红黑树的插入 一、红黑树的概念 在 AVL 树中删除一个结点,旋转可能要持续到根结点,此时效率较低 红黑树也是一种二叉搜索树,通过在每个结点中增加一个位置来存储红色或黑色…...
掷骰子的多线程应用程序1(复现《Qt C++6.0》)
说明:复现的代码来自《Qt C6.0》P496-P500。在复现时完全按照代码,出现了两处报错: (1)ui指针(2)按钮的响应函数。下面程序对以上问题进行了修改。除了图片、清空、关闭功能外,其他…...
【vue2第十八章】VueRouter 路由嵌套 与 keep-alive缓存组件(activated,deactivated)
VueRouter 路由嵌套 在使用vue开发中,可能会碰到使用多层级别的路由。比如: 其中就包含了两个主要页面,首页,详情,但是首页的下面又包含了列表,喜欢,收藏,我的四个子路由。 此时就…...
如何确保亚马逊、速卖通等平台测评补单的环境稳定性和安全性?
做亚马逊、速卖通等平台测评补单时,确保环境的安全性和稳定性是非常重要的。稳定的环境是测评的基础,如果无法解决安全性问题,那么测评就不值得进行。为了确保稳定的环境系统,需要考虑物理环境和IP环境两个方面。 首先࿰…...
echarts图表 实现高度按照 内容撑起来或者超出部分滚动展示效果
背景:因为数据不固定 高度写死导致数据显示不全,所以图表高度要根据内容计算 实现代码如下: <divv-if"showCharts"id"business-bars"class"chart":style"{ height: chartHeight px }"></d…...
【论文阅读】检索增强发展历程及相关文章总结
文章目录 前言Knn-LMInsightMethodResultsDomain AdaptionTuning Nearest Neighbor Search Analysis REALMInsightsMethodKnowledge RetrieverKnowledge-Augmented Encoder ExpResultAblation StudyCase Study DPRInsightMethodExperimentsResults RAGInsightRAG-Sequence Mode…...
【漏洞复现系列】二、weblogic-cve_2020_2883(RCE/反序列化)
Key words:T3协议,weblogic Server,反序列化 2.1、漏洞原理 cve_2020_2883 远程代码执行漏洞存在于 WebLogic Server 核心组件中,允许未经身份验证的攻击者通过 T3 协议网络访问并破坏易受攻击的 WebLogic Server,成功的漏洞利…...
算法通关村-----LRU的设计与实现
LRU 缓存 问题描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存。int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&…...
王江涛十天搞定考研词汇
学习目标: 考研词汇 学习内容: 2023-9-17 第一天考研词汇 学习时间: 开始:2023-9-17 结束:进行中 学习产出: 2023-9-17intellect智力;知识分子intellectual智力的;聪明的intellectualize使...理智化&a…...
算法(二)——数组章节和链表章节
数组章节 (1)二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 class Solution {public i…...
Android:ListView在Fragment中的使用
一、前言: 因为工作一直在用mvvm框架,因此这篇文章是基于mvvm框架写的。在Fragment复制之前一定要谨记项目可以跑起来。确保能跑起来之后直接复制就行。 二、代码展示: 页面布局 ?xml version"1.0" encoding"utf-8"…...
BIGEMAP在土地规划中的应用
工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 1.使用软件一般都用于套坐标,比如我们常见的(kml shp CAD等土建规划图纸)以及一些项目厂区红线,方便于项目选址和居民建…...
软件测试常见术语和名词解释
1. Unit testing (单元测试):指一段代码的基本测试,其实际大小是未定的,通常是一个函数或子程序,一般由开发者执行。 2. Integration testing (集成测试):被测试系统的所有组件都集成在一起,找出被测试系统…...
prometheus+process_exporter进程监控
一、需要监控进程的服务器上配置 1、进入到临时工作目录,传入process_exporter包 [root Nginx1 ~]# cd work/ [root Nginx1 work]# rz 2、解压,并移动至/usr/local/目录下 [root Nginx1 work]# tar xzf process-exporter-0.7.5.linux-amd64.tar.gz [root…...
四川玖璨电子商务有限公司专注抖音电商运营
四川玖璨电商是一个靠谱的抖音培训公司,在电商行业内有着广泛的知名度和良好的口碑。该公司通过多年的发展,形成了独特的运营理念和有效的运营策略,为商家提供了一站式的抖音电商运营服务。 首先,四川玖璨电子商务有限公司注重与…...
python LeetCode 刷题记录 83
题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 代码 class Solution:def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:if head:# 判断非空链表current he…...
Grom 如何解决 SQL 注入问题
什么是 SQL 注入 SQL 注入是一种常见的数据库攻击手段, SQL 注入漏洞也是网络世界中最普遍的漏洞之一。 SQL 注入就是恶意用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常规代码的过程。 这个问题的来源就是, SQL 数据库的操作是通过 SQ…...
腾讯mini项目-【指标监控服务重构】2023-07-19
今日已办 OpenTelemetry Logs 通过日志记录 API 支持日志收集 集成现有的日志记录库和日志收集工具 Overview 日志记录 API - Logging API,允许您检测应用程序并生成结构化日志旨在与其他 telemerty data(例如metric和trace)配合使用&am…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
