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加上过期时间
在这里插入图片描述

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

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

相关文章

24. 图论 - 图的表示种类

Hi,你好。我是茶桁。 之前的一节课中,我们了解了图的来由和构成,简单的理解了一下图的一些相关概念。那么这节课,我们要了解一下图的表示,种类。相应的,我们中间需要穿插一些新的知识点用于更好的去理解图…

C#,数值计算——Multinormaldev的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Multinormaldev : Ran { public Cholesky chol { get; set; } null; private int mm { get; set; } private double[] mean { get; set; } private double[,] xvar {…

shardingjdbc分库分表数据均衡性讨论

问题引入 最近一个业务系统中,因为数据量很大,经过技术选型,综合权衡选择了sharding-Jdbc,本文主要讨论的是分库分表的表达式 我们有一个批次总表A,还有一个明细表B,我们需要对明细表B进行水平拆分&#…

InputAction的使用

感觉Unity中InputAction的使用,步步都是坑。 需求点介绍 当用户长按0.5s 键盘X或者VR left controller primaryButton (即X键)时,显示下一个图片。 步骤总览 创建InputAction资产将该InputAction资产绑定到某个GameObject上在对应的script中&#xf…

计算机视觉与深度学习-经典网络解析-VGG-[北邮鲁鹏]

目录标题 VGG参考VGG网络贡献使用尺寸更小的$3 \times 3$卷积串联来获得更大的感受野放弃使用$11 \times 11$和$5 \times 5$这样的大尺寸卷积核深度更深、非线性更强,网络的参数也更少;去掉了AlexNet中的局部响应归一化层(LRN)层。 网络结构主要改进输入…

21 mysql ref 查询

前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…

基于abaqus的非等速生长Voronoi晶体模型生成插件

1. 非等速生长晶体模型简介 对于标准Voronoi而言,每个晶粒的生长速率是相同的,任意两个晶粒的交界线为其形核点连线的垂直平分线,交界线为一条直线,如图1.1所示。 图1.1 标准Voronoi晶粒交界线 而对于非等速生长Voronoi晶体而言…

肖sir__项目环境之全流程__005

一、测试流程(h模型) 1、需求文档(产品) 需求文档(软件需求规格说明书srs) (1)如何分析需求 a、显示需求(主流程、功能,业务) b、隐性需求&#x…

js惰性函数

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…

解决qml编译时出现错误ninja: build stopped: subcommand failed.

qml编译时出现错误ninja: build stopped: subcommand failed. 如下图: 解决这个编译错误其实很简单,我把Window写错了,写成了window, 如果有类似的报错,可以检查一下qml代码是否有问题。当然在Qt Creator里也没有错误提示&#x…

MySQL 远程连接1130问题

通过后台进入mysql 1,切换到mysql库 2.查询user表信息 3.更新你想远程登录的用户的host信息,我这里想用root进行远程登录,所以修改如下 4.刷新权限 5.大功告成 快来和博主打成一片吧^_^

【Vue】修饰符、表单提交方式、自定义组件的关键步骤

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Vue快速入门》。🎯🎯 &…

识别准确率达 95%,华能东方电厂财务机器人实践探索

摘 要:基于华能集团公司大数据与人工智能构想理念,结合东方电厂实际工作需要,财务工作要向数字化、智能化纵深推进,随着财务数字化转型和升级加速,信息化水平不断提升,以及内部信息互联互通不断加深&#x…

git之撤销工作区的修改和版本回溯

有时候在工作区做了一些修改和代码调试不想要了,可如下做 (1)步骤1:删除目录代码,确保.git目录不能修改 (2)git log 得到相关的commit sha值 可配合git reflog 得到相要的sha值 (3)执行git reset --hard sha值,可以得到时间轴任意版本的代码 git reset --hard sha值干净的代…

【Node.js】定时任务cron:

文章目录 一、文档:【Nodejs 插件】 二、安装与使用【1】安装【2】使用 三、cron表达式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}四、案例: 一、文档: 【说明文档】https://www.npmjs.com/package/cron 【Cron表…

中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表

随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于 MySQL 搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究 DB-Engines 时序数据库榜单时了解到国内排名第一的 DolphinDB。经过测试,发现其…

齿轮减速机设备类网站pbootcms模板(PC端+手机端自适应)

齿轮减速机设备类网站pbootcms模板-手机端自适应,优化SEO效果 模板介绍: 这是一款基于PbootCMS内核开发的模板,专为机械设备和加工机械类企业设计。该模板具有简洁简单的页面设计,易于管理,同时还附带测试数据。通过使…

ID保持的人像生成

AIGC真实人像写真,也即输入一些图片,生成图片里对应人物在不同场景和风格下的图片。妙鸭相机作为AIGC领域一款成功的收费产品为大家展示了如何使用AIGC技术只需要少量的人脸图片建模,即可快速提供真/像/美的个人写真,在极短的时间…

Python —— pytest框架

1、认识pytest框架 1、搭建自动化框架的思路与流程 1、搭建自动化测试框架的思路和流程,任意测试手段流程都是一致的:手工测试、自动化测试、工具测试 手工测试:熟悉业务 —— 写用例 —— 执行用例并记录结果 —— 生成测试报告自动化测试…

一、 计算机网络概论

一、计算机网络概论 1、计算机网络概述 1.1、概念 计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统 是一些互连的、自治的计算机系统的集合 以能够相互共享资源的方…