测开面经学习笔记

1. mysql 和 redis的区别?

① 数据存储方式

  • MySQL:数据以表格的形式以行和列的方式存储在磁盘上,支持复杂的关系型数据模型。
  • Redis:数据存储在内存中,因此具有更快的读写速度,但受到内存容量的限制。

② 数据类型

  • MySQL:支持各种数据类型,包括整型、浮点型、字符型、日期型等。
  • Redis:支持丰富的数据类型,如字符串(String),列表(List)、哈希表(Hash)、集合(Set)、有序集合(Sorted Set)、位图(BitMap),还有三种特殊的数据类型 HyperLogLog(基数统计)、Bitmap (位图)、Geospatial (地理位置)。

③ 持久化

  • MySQL:支持持久化存储数据,数据可以在磁盘上持久保存。
  • Redis:可以选择是否持久化数据,支持RDB快照和AOF日志两种持久化方式。

④ 应用场景

  • MySQL:适用于需要复杂查询和事务支持的应用,如企业级应用、电子商务平台等。
  • Redis:适用于对速度要求较高、数据量较小、对数据结构要求较高的场景,如缓存、计数器、实时排行榜等。

2. Http 和 Https 的区别?

  • HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

3. Https 的安全性体现在哪里?

  • 数据加密:HTTPS使用SSL/TLS加密协议对数据进行加密传输,防止数据在传输过程中被窃听或篡改。
  • 身份验证:HTTPS使用SSL证书对服务器进行身份验证,确保通信双方的身份,防止中间人攻击。
  • 数据完整性:HTTPS使用消息摘要算法(如SHA)来验证数据的完整性,确保数据在传输过程中没有被篡改。

4. TCP 的可靠性怎么保障的?

  • 连接管理:即三次握手和四次挥手。连接管理机制能够建立起可靠的连接,这是保证传输可靠性的前提。

  • 序列号:TCP将每个字节的数据都进行了编号,这就是序列号。序列号的具体作用如下:能够保证可靠性,既能防止数据丢失,又能避免数据重复。能够保证有序性,按照序列号顺序进行数据包还原。能够提高效率,基于序列号可实现多次发送,一次确认。

  • 确认应答:接收方接收数据之后,会回传ACK报文,报文中带有此次确认的序列号,用于告知发送方此次接收数据的情况。在指定时间后,若发送端仍未收到确认应答,就会启动超时重传。

  • 超时重传:超时重传主要有两种场景:数据包丢失:在指定时间后,若发送端仍未收到确认应答,就会启动超时重传,向接收端重新发送数据包。确认包丢失:当接收端收到重复数据(通过序列号进行识别)时将其丢弃,并重新回传ACK报文。

  • 流量控制:接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,就会导致接收端的缓冲区溢出,进而导致丢包。为了避免上述情况的发生,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这就是流量控制。流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。

  • 拥塞控制:拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。可以得出,发送端的发送速度,受限于滑动窗口和拥塞窗口中的最小值。拥塞控制方法分为:慢开始,拥塞避免、快重传和快恢复。

5. 常见的 Linux 指令

  • ls:列出当前目录的内容
  • grep:用于查找文件里符合条件的字符串或正则表达式
  • chmod(change mode):修改用户对于文件的修改权限
  • top:查看当前系统资源占用情况
  • ps(process status):显示当前进程信息
  • netstate:用于显示各种网络相关信息
  • echo:在命令行输出指定内容
  • tail:查看文件末尾部内容,跟踪文件的最新更改
  • 管道符 | :将左端命令的结果 作为 右边命令 的输入

6. 数组和链表的区别?

  • 访问效率:数组可以通过索引直接访问任何位置的元素,访问效率高,时间复杂度为O(1),而链表需要从头节点开始遍历到目标位置,访问效率较低,时间复杂度为O(n)。
  • 插入和删除效率:
    • 数组:需要移动其他元素,时间复杂度为O(n)
    • 链表:需要寻找到需要插入或删除的位置,平均时间复杂度为 O(n/2) 即 O(n)
  • 缓存命中率:由于数组元素在内存中连续存储,可以提高CPU缓存的命中率,而链表节点不连续存储,可能导致CPU缓存的命中率较低,频繁的缓存失效会影响性能。
  • 应用场景:数组适合静态大小、频繁访问元素的场景,而链表适合动态大小、频繁插入、删除操作的场景

7. 设计测试用例:朋友圈点赞功能

① 用例 1:点赞功能正常使用

  • 步骤:
    • 打开朋友圈
    • 打开一条动态
    • 点击点赞按钮
  • 预期结果:
    • 点赞按钮状态 变为 已点赞
    • 点赞数 +1
    • 用户信息显示在点赞列表中

② 用例 2:取消点赞功能

  • 步骤:
    • 打开朋友圈
    • 打开一条已点赞动态
    • 再次点击点赞按钮
  • 预期结果:
    • 点赞按钮状态 变为 未点赞
    • 点赞数 -1
    • 用户信息从点赞列表中消失

③ 用例 3:多用户同时点赞

  • 步骤:多个用户同时对同一条动态进行点赞操作。
  • 预期结果:点赞数正确累加,点赞列表显示所有点赞用户信息。

④ 用例 4:点赞数据同步

  • 步骤:用户在多端(如手机、电脑)对同一条动态进行点赞操作。
  • 预期结果:点赞操作在所有设备上同步更新,保持一致性。

⑤ 用例 5:点赞功能异常处理

  • 步骤:模拟网络异常或服务器故障时进行点赞操作。
  • 预期结果:系统能够正确处理异常情况,保证数据的一致性和完整性

8. TCP 和 UDP

  • TCP:是面向连接的、可靠的、基于字节流的传输协议,适用于需要可靠传输、顺序传输、流量控制和拥塞控制的应用。
  • UDP:是无连接的、不可靠的、基于数据包的传输协议。适用于实时性高、能容忍一定数据丢失的应用,以及需要减少通信开销的应用。

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

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

相关文章

IntelliJ IDEA 2020.2.4试用方法

打开idea,准备好ide-eval-resetter压缩包。 将准备好的压缩包拖入idea中 选中弹窗中的自动重置选项,并点击重置 查看免费试用时长

启动查看工具总结

启动目标:2s内优秀,2-5s普通,之后的都需要优化,热启动则是1.5s-2s内 1 看下大致串联启动流程: App 进程在 Fork 之后,需要首先执行 bindApplication Application 的环境创建好之后,就开始activ…

【Web前端】Vue核心基础

文章目录 1. Vue简介2. Vue官网使用指南3. 初识Vue3.1 搭建Vue开发环境3.2 HelloWorld案例3.3 el与data的两种写法3.4 MVVM模型3.5 模板语法 4. 数据绑定4.1 v-bind单向数据绑定4.2 v-model双向数据绑定 5. 事件处理5.1 v-on绑定事件5.2 事件修饰符5.3 键盘事件 6. 计算属性6.1…

java实现冒泡排序

目录 算法 概念 算法步骤 代码示例 例题实战 算法 概念 冒泡排序 是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误,就把他们交换过来。走访数列的工作时重复地进行直到没有再需要交换&#…

typescript学习(更新中)

目录 开发环境搭建类型如何声明有哪些类型编译配置文件 开发环境搭建 npm i -g typescripttsc检查是否安装成功 类型如何声明 // 先声明再赋值 let a: number a 1// 直接赋值 let b 1function sum(a: number, b: number): number {return a b } console.log(sum(1, 2))有…

leetcode72. 编辑距离

leetcode72. 编辑距离 题目 思路 dp[i][j] 代表 word1 到 i 位置转换成 word2 到 j 位置需要最少步数,所以, 当 word1[i] word2[j],dp[i][j] dp[i-1][j-1]; 当 word1[i] ! word2[j],dp[i][j] 1 min(dp[i-1][j-1]…

这样用redission分布式锁才优雅-自定义redission分布式锁注解(含spel表达式)

废话后面说,先上干货。 最终的使用效果是这样的: /*** 这里只是一个简单的示例,实际业务中,可能需要根据订单号查询订单信息,然后进行发货操作* 仅仅是为了证明相同订单号不能够同时操作,但是在实际的业务场…

Ubantu 18.04 如何映射IP到公网,外网可以访问

介绍一种简单的方式,就是通过路由侠 inux 系统安装路由侠,可通过两种方式进行,一种是通过直接脚本安装,一种是通过 Docker 安装。 windows下载地址:路由侠-局域网变公网 方式一:通过脚本安装 1、获取安…

java算法第十七天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110.平衡二叉树 leetcode链接 思路: 使用后序遍历分别求左右子树的高度,若高度只差大于一,则返回-1,否则返回当前节点的最大高度。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tree…

【数据分享】2013-2022年全国范围逐日SO2栅格数据

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2013-2022年全国范围逐月SO2栅格数据和逐年SO2栅格数据(均可查看之前的文章获悉详情)。 本次我们给大家带来的是2013-2022年全国范围的逐日的SO2栅格数据,原始…

阿里云几核服务器够用?内存多少合适?

阿里云服务器配置怎么选择?CPU内存、公网带宽和系统盘怎么选择?个人开发者或中小企业选择轻量应用服务器、ECS经济型e实例,企业用户选择ECS通用算力型u1云服务器、ECS计算型c7、通用型g7云服务器,阿里云服务器网aliyunfuwuqi.com整…

python基础总复习

Python基础班总复习 一、Python基础语法 1、注释概念 单行注释 # 多行注释 注释内容 ,支持换行 > 在实际工作中,主要用于实现函数说明文档 2、变量的概念 场景:保存数据,所以理论上有数据的地方都有变量! 变…

OJ_二叉排序树

题干 C实现 循环双指针法(一个指向父亲&#xff0c;一个指向待插入结点) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <queue> using namespace std;struct TreeNode {char data;TreeNode* left;TreeNode* right; };void InsertBST(TreeNode* …

C# OpenCvSharp DNN FreeYOLO 人脸检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 人脸检测 效果 模型信息 Inputs ------------------------- name&#xff1a;input tensor&#xff1a;Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…

每日OJ题_链表⑤_力扣25. K 个一组翻转链表

目录 力扣25. K 个一组翻转链表 解析代码 力扣25. K 个一组翻转链表 25. K 个一组翻转链表 难度 困难 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总…

音视频按照时长分类小工具

应某用户的需求&#xff0c;编写了这款根据音视频时长分类小工具。 实际效果如下&#xff1a; 显示的是时分秒&#xff1a; 核心代码&#xff1a; MediaInfo MI; if (MI.Open(strPathInput.c_str()) 0){return -1;}_tstring stDuration MI.Get(stream_t::Stream_Audio,0,_T…

斐波那契数 爬楼梯 使用最小花费爬楼梯

509. 斐波那契数 力扣题目链接(opens new window) 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n -…

GitHub和Gitee的基本使用和在IDEA中的集成

文章目录 【1】GitHub1.创建仓库2.增加和修改文件3.创建分支4.删除仓库5.远程仓库下载到本地 【2】Gitee1.创建仓库2.远程仓库下载到本地. 【3】IDEA集成GitHub【4】IDEA集成Gitee1.在Gitee中修改&#xff0c;同步到本地2.从Gitee中下载项目 【1】GitHub 1.创建仓库 先登陆这…

阿里云99计划优惠:云服务器租用价格61元、99元、165元

阿里云99计划还有谁不知道么&#xff1f;阿里云不杀熟&#xff0c;新老用户同享&#xff0c;阿里云服务器99元一年&#xff0c;续费也是99元&#xff0c;续费不涨价家人们&#xff0c;2024年阿里云把云服务器价格打下来了&#xff0c;2核2G、2核4G、4核8G、4核16G、8核16G、8核…

【无标题】带大家做一个,易上手的家常西芹牛肉丸

这里 我准备的是 潮汕手工牛肉丸 都是弄好 里面有盐的 先拿出来清水化冰 准备一些西芹 切小段 一根胡萝卜 萝卜切片 和西芹段装在一起 调一碗料汁 两勺胡椒粉 一勺淀粉 一点清水 然后拿勺子搅拌均匀 三瓣大蒜 切成蒜末 导入 西芹段 萝卜片 高过菜的清水 一小勺食用油 小…