技术面试问题总结一

MySQL的几种锁机制

一、从锁的粒度角度划分

表级锁

        机制:它是对整张表进行锁定的一种锁。当一个事务对表执行写操作时,会获取写锁,在写锁持有期间,其他事务无法对该表进行读写操作;而当事务执行读操作时,会获取读锁,读锁之间是共享的,多个事务可以同时对表加读锁。        

行级锁

        机制:行级锁仅对操作的行进行锁定。它能最大程度地支持并发处理。行级锁又可细分为共享锁和排他锁。共享锁允许多个事务同时读取同一行数据;排他锁则会阻止其他事务对该行数据进行读写操作。

页级锁

        机制:页级锁的锁定粒度介于表级锁和行级锁之间,它锁定的是数据页

二、从锁的模式角度划分

共享锁(S 锁)

        机制:也被称为读锁。如果事务 T 对数据对象 A 加上共享锁,那么事务 T 可以读取 A,但不能修改 A。同时,其他事务只能对 A 加共享锁,而不能加排他锁,直到事务 T 释放 A 上的共享锁。

排他锁(X 锁)

        机制:又称写锁。若事务 T 对数据对象 A 加上排他锁,那么事务 T 既可以读取 A,也可以修改 A。在事务 T 释放 A 上的排他锁之前,其他事务不能对 A 加任何类型的锁。 意向锁 机制:这是一种表级别的锁,用于表示某个事务正在锁定某一行,或者将要对某一行加锁。

意向锁分为意向共享锁(IS 锁)和意向排他锁(IX 锁)        

        意向锁的主要作用是提高表级锁的判断效率

        应用:当一个事务想要获取表的共享锁时,必须先获取该表的意向共享锁;想要获取表的排他锁时,则必须先获取表的意向排他锁。

说一下websocket和 http的区别

1、连接方式

        HTTP:是无状态的请求-响应协议。客户端向服务器发送请求,服务器处理请求后返回响应,连接在请求响应完成后就会关闭。每次通信都需要重新建立连接,例如在浏览网页时,浏览器向服务器请求 HTML、CSS、JavaScript 等资源,服务器返回相应内容,之后连接断开。

        WebSocket:是一种持久连接协议。在客户端和服务器通过 HTTP 协议完成握手后,会建立起一条全双工的通信通道,连接会一直保持,直到其中一方主动关闭。这就好比在客户端和服务器之间建立了一座桥梁,双方可以随时通过这座桥梁进行数据传输。

2、通信方式

        HTTP:是单向的半双工通信,通常是客户端主动发起请求,服务器被动响应,服务器不能主动向客户端发送数据,除非客户端再次发起请求。例如在电商网站上查询商品信息,需要用户点击搜索按钮发起请求,服务器才会返回商品列表。

        WebSocket:支持全双工通信,客户端和服务器可以在任意时刻相互发送数据。比如在实时聊天应用中,客户端和服务器可以同时发送和接收消息,无需等待对方的请求。

3、数据传输格式

        HTTP:数据传输格式多样,常见的有JSON、XML、HTML等。一般来说,HTTP 请求和响应会包含请求头和请求体,请求头包含了请求的元信息,如请求方法、请求的资源路径、客户端信息等,请求体则包含了具体的数据内容。

        WebSocket:数据传输格式更加灵活,可以是文本数据,也可以是二进制数据。它在传输数据时会有自己的帧协议,将数据封装成顺进行传输,并且可以根据需要选择不同的操作码来表示数据的类型。

4、性能开销

        HTTP:由于每次请求都需要建立和断开连接,会带来一定的开销,尤其是在频繁请求的场景下,如实时数据更新应用,会消耗大量的网络资源和服务器资源。而且为了保持会话状态,可能需要使用Cookie、Session等机制,进一步增加了开销

        WebSocket:建立连接后是持久的,避免了频繁建立和断开连接的开销。在数据传输过程中,由于不需要像HTTP 那样携带大量的请求头信息,所以传输效率更高,更适合对实时性要求高、数据传输频繁的场景。

5、应用场景

        HTTP:适用于对实时性要求不高的场景,如静态网页浏览、文件下载、表单提交等。在这些场景中,客户端只需要在需要时向服务器请求数据,服务器返回响应即可。

        WebSocket:常用于实时性要求较高的场景,如在线聊天、实时数据监控、多人游戏等。在这些场景中,需要客户端和服务器之间能够实时地交换数据,以保证用户体验。

什么是HTTPS?HTTPS如何保证安全?

        HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)是在 HTTP 基础上加入了加密层(SSL/TLS 协议)的安全版本,目的是解决 HTTP 的安全隐患,保证数据传输的机密性、完整性和真实性。简单来说,HTTPS = HTTP + SSL/TLS,它通过 SSL/TLS 协议对传输的数据进行加密,让第三方无法窃听或篡改,同时验证服务器的身份,防止客户端被欺骗。

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的一种网络协议,用于客户端(如浏览器)和服务器之间的通信,主要作用是传输超文本(如网页、图片、视频等)。

HTTP 的安全隐患
由于数据明文传输,在传输过程中可能被第三方(如黑客、网络运营商)窃听、篡改或伪造,例如:

  • 窃听:获取用户的账号密码、支付信息等敏感数据。
  • 篡改:修改网页内容(如替换广告、植入恶意代码)。
  • 伪造:冒充服务器向客户端发送虚假信息(如钓鱼网站)。

 HTTPS 的安全机制主要依赖于 SSL/TLS 协议 和 数字证书,具体实现情况如下:

1、身份验证:借助数字证书确认服务器身份,客户端会验证证书的颁发机构、域名匹配度和有效期等;

2、加密传输:采用 “非对称加密 + 对称加密” 结合的方式,非对称加密用于传输对称密钥,对称加密用于传输实际数据;

3、完整性校验:通过生成 “消息认证码(MAC)”,客户端比对接收数据的 MAC 与服务器发送的 MAC,判断数据是否被篡改。

HTTPS 通过 SSL/TLS 协议的加密机制保证数据传输的机密性和完整性,通过数字证书的身份验证机制确保通信双方的真实性,从而解决了 HTTP 明文传输的安全隐患。如今,HTTPS 已成为主流网站(尤其是涉及支付、登录的场景)的标配,浏览器会通过地址栏的 “锁” 图标提示用户当前连接是否使用 HTTPS 加密。

咱们用大白话来理解就是:

HTTP 就像寄明信片,内容是明文的,谁都能看,还可能被人改内容、冒名发,不太安全。

HTTPS 则是寄加密的快递,它在 HTTP 基础上多加了层保护(SSL/TLS)。

它怎么保证安全呢?靠两样:

一是 “数字证书”,相当于服务器的身份证,由权威机构发的,能证明这服务器是真的,不是骗子假装的。浏览器会检查这证书是不是真的、没过期、和网站对得上。

二是加密传输,像寄快递前把东西锁起来。先通过非对称加密(类似用公钥锁箱子,只有服务器的私钥能打开)商量好一把 “对称密钥”,之后传输的所有数据都用这把钥匙加密,别人就算截到了也打不开,改了也能发现。

简单说,HTTP 是裸奔,HTTPS 是穿了防护衣,让信息在网上跑的时候,别人偷不走、改不了,也骗不了你。

OSPF和BGP的区别

OSPF(Open Shortest Path First,开放式最短路径优先)和 BGP(Border Gateway Protocol,边界网关协议)是互联网中两种重要的路由协议,但它们的设计目标、应用场景和工作原理有显著区别。以下从多个方面详细对比两者的差异:

一、协议类型与工作范围

  • OSPF:属于内部网关协议(IGP),仅在一个自治系统(AS)内部运行,用于管理 AS 内部的路由信息。例如,企业内网、校园网或运营商的单个 AS 内部,通常用 OSPF 计算最优路径。

  • BGP【需满足设备支持】:属于外部网关协议(EGP),用于不同自治系统(AS)之间交换路由信息。例如,当数据需要从一个运营商的网络传递到另一个运营商的网络时,BGP 负责在 AS 之间选择路径。

二、路由计算依据

  • OSPF:基于链路状态算法,通过 “最短路径优先(SPF)” 算法计算路由。

    • 每个路由器会向全网广播自己的链路状态(如接口带宽、开销等),形成统一的 “链路状态数据库”。
    • 以自身为根,使用 SPF 算法生成最短路径树,优先选择开销最小的路径(开销通常与带宽相关,带宽越高开销越小)。
  • BGP:基于路径向量算法,不计算 “最短路径”,而是根据路由属性,选择最优路径。

    • 路由属性包括 AS 路径长度(AS_PATH)、下一跳(NEXT_HOP)、本地优先级(LOCAL_PREF)等,管理员可通过配置属性控制路由选择(例如优先选择 AS 路径短的路由)。
    • 核心目标是避免 AS 之间的路由环路,并确保大规模网络的稳定性。

三、应用场景

  • OSPF

    • 适用于小规模到中大规模的单一 AS 内部,例如企业网络、数据中心内部或运营商的某个区域网络。
    • 优势是收敛速度快(链路状态变化时能快速更新路由),适合对实时性要求高的场景(如视频会议、在线游戏)。
  • BGP

    • 适用于跨 AS 的大规模网络,是互联网的 “核心路由协议”,负责全球运营商之间的路由互联。
    • 支持大规模路由表(可处理数十万条路由),且允许管理员通过策略灵活控制路由(例如限制某些 AS 的流量),适合对稳定性和可控性要求高的场景。

四、路由更新方式

  • OSPF

    • 采用触发更新 + 定期更新:链路状态变化时立即广播更新(触发更新),同时每 30 分钟发送一次完整的链路状态通告(LSA)进行确认(定期更新)。
    • 更新范围限于 AS 内部,且仅传递变化的链路状态,而非完整路由表,带宽开销较小。
  • BGP

    • 采用增量更新:仅当路由信息发生变化时(如新增、删除或属性修改),才发送更新消息,且只传递变化的路由条目。
    • 初始建立连接时会交换完整路由表,但后续更新仅传递差异,适合大规模网络减少带宽消耗。

五、路由环路处理

  • OSPF:由于运行在单一 AS 内部,通过链路状态算法和层次化设计(如划分区域 Area)避免环路:每个区域内的路由器只维护本区域的链路状态,区域间通过骨干区域(Area 0)转发,天然避免环路。

  • BGP:跨 AS 场景中,通过AS_PATH 属性避免环路:每条路由都会携带经过的 AS 列表,若收到的路由中包含本地 AS 号,则拒绝接收该路由,从而防止环路。

对比表格

对比维度OSPFBGP
协议类型内部网关协议(IGP)外部网关协议(EGP)
工作范围单一 AS 内部跨 AS 之间
算法基础链路状态算法(SPF)路径向量算法
路由选择依据链路开销(最短路径)路由属性(如 AS_PATH、优先级)
路由表规模较小(AS 内部路由)极大(全球互联网路由)
收敛速度慢(强调稳定性)
典型应用企业内网、数据中心内部互联网骨干网、运营商互联
环路处理基于区域划分避免基于 AS_PATH 属性避免

keepalived的工作原理

keepalived 是一个基于 VRRP(虚拟路由)协议来实现 LVS 服务高可用方案,可以解决静态路由出现的单点故障问题。

工作原理:在一个 LVS 服务器里面,它通常有主服务器和备用服务器,就是我们常说的 master 和 backup 这两种角色的服务器,对外服务时会提供给一个虚拟的 IP 也就是我们前面所提及到的 VRRP ,然后 master 会发送我们的 VRRP 的通告信息给我们的备用服务器,当 backup 接收不到我们的 VRRP 信息以及主服务器异常的时候,那么优先级最高的这个 backup 会接管虚拟IP成为新的 master。

工作原理:通过 VRRP 协议来选举出一个 master 主节点和多个 backup 从节点,那么主节点负责分配这个流量同时会给下面的 backup节点发送 VRRP 协议加密和通告信息,当下面的 backup 收不到通告信息了就会认为 master 节点是不可用的,那么优先级最高的这个 backup 节点就会成为新的 master,它就负责接下来的分发流量的工作了

两种方式一样,看自己更喜欢哪种回答

LVM逻辑卷

是 Linux 系统中用于管理磁盘存储的一种技术,它通过将物理磁盘抽象为逻辑卷,提供了比传统分区更灵活的磁盘管理方式。

物理卷(PV)与卷组(VG)
• PV 是 VG 的物理基础:一个 VG 由多个 PV 组成,PV 可以是整块物理磁盘(如/dev/sdb)或分区(如/dev/sdb1)。
• VG 是 PV 的逻辑容器:通过vgcreate myvg /dev/sdb /dev/sdc将多个 PV 合并为一个 VG,形成统一的存储池。
• 动态扩展:可随时通过vgextend添加新 PV,或通过vgreduce移除 PV(需先迁移数据)。
物理扩展块(PE)与逻辑扩展块(LE)
PE 是物理存储的最小单位:每个 PV 被划分为大小相等的 PE(默认 4MB),PE 编号全局唯一(如/dev/sdb:0表示 sdb 磁盘的第一个 PE)。
LE 是逻辑存储的最小单位:LV 被划分为与 PE 大小相同的 LE,通过映射表与物理 PE 一一对应。
• 映射关系:当创建 LV 时,系统从 VG 中分配空闲 PE,并建立 LE 到 PE 的映射(如LV_LE0 → PV1_PE10)。

LVM 通过 分层抽象 + 映射机制 实现灵活性:

  • 物理层:将磁盘转化为可管理的 PV 和 PE。
  • 逻辑层:通过 VG 整合 PV 资源,建立 LE→PE 映射表。
  • 应用层:LV 提供统一接口,支持动态调整和快照。

常用命令 

功能物理卷(PV)卷组(VG)逻辑卷(LV)
创建pvcreatevgcreatelvcreate
查看信息pvdisplaypvsvgdisplayvgslvdisplaylvs
删除pvremovevgremovelvremove
扩展-vgextendlvextend
缩小-vgreducelvreduce
物理卷移动数据pvmove--

docker 的相关问题

什么是docker?

        Docker 是一种轻量级的容器化技术,通过将应用及其依赖打包成独立的容器,实现 “一次构建,到处运行” 的目标。它解决了软件开发和部署过程中的环境一致性问题,极大提高了开发效率和系统可靠性。

什么是docker镜像?

        Docker 镜像是 Docker 容器的基础,它是一个只读的文件系统包,包含了运行应用程序所需的所有内容:代码、运行时环境、库、环境变量和配置文件。Docker 镜像使应用能够在任何环境中一致运行,解决了 “在我机器上能运行” 的问题。

什么是docker容器?

        Docker 容器是 Docker 镜像的运行实例,是一种轻量级、可移植的独立运行环境。它封装了应用程序及其所有依赖项,确保应用在不同环境中一致运行。容器通过 Linux 内核的隔离技术实现进程级隔离,相比传统虚拟机具有更高的资源利用率和更快的启动速度。

docker容器有几种状态?

buffer 和 cache 的区别

buffer(缓冲区) 和 cache(缓存) 都是内存中的临时存储区域,用来提升系统效率,但作用场景完全不同

Buffer 为 “写” 服务更多,Cache 为 “读” 服务更多

Buffer(缓冲区):像 “临时中转站”,专门解决设备速度不匹配的问题。比如 CPU 写数据到磁盘时,先放缓冲区,CPU 不用等磁盘写完就可以干别的,缓冲区再慢慢传给磁盘。(如写磁盘时的临时存储)。

比如:你给远方的朋友寄快递,不会亲自跑过去送(太慢),而是先把快递放到小区快递柜(缓冲区),快递员定期来取走派送。
这里,你(快设备,比如 CPU)→ 快递柜(缓冲区)→ 快递员(慢设备,比如磁盘 / 网络),缓冲区让你不用等快递员,提高效率。

Cache(缓存):像 “常用文件柜”,把你经常用的数据存起来。比如反复看同一个文件,第一次从磁盘读,之后直接从缓存拿,不用再麻烦磁盘,速度更快。(如反复读取的文件内容)。

比如:你每天早上都要喝牛奶,不会每次都去楼下超市(慢),而是提前买几盒放家里冰箱(缓存),早上直接拿,不用跑超市。
这里,超市(慢设备,比如磁盘)→ 冰箱(缓存)→ 你(快访问,比如 CPU / 用户),缓存让常用数据离访问者更近。

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

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

相关文章

Python(一)

基本语法:变量,语法变量类型:不同于Java,C语言,C,Python在创建一个变量的时候,不需要声明变量类型,由编译器自行识别Python语句在只有一个语句的时候语句末尾不需要分号,…

Adaptive AUTOSAR中的Firewall技术:智能汽车网络安全架构的核心

1 防火墙技术基础 1.1 定义与演进历程 防火墙(Firewall)作为一种位于内部网络与外部网络之间的网络安全系统,本质上是依照特定规则允许或限制数据传输的信息安全防护机制。在汽车电子电气架构从分布式向集中式转变的背景下,防火墙技术已从传统的IT领域深度融入Adaptive A…

android闪光灯源码分析

目录 一、APP层源码分析 二,framework层代码分析 ​​​​​​​2.1 binder溯源 这几天撸了android11 aosp闪光灯源码,本着前人栽树后人乘凉的原则,有志于android系统开发的新同学们提供一盏明灯,照亮你们前行。 本人撸代码风格&…

文心一言4.5开源部署指南及文学领域测评

📝个人主页:哈__ 期待您的关注 目录 一、引言 二、文心一言开源模型 2.1 MoE架构 2.2 文心一言MoE架构 三、文心一言稠密模型部署 3.1 产品选择 3.2 环境选择 3.3 Python3.12安装 3.3 PaddlePaddle-GPU安装 3.4 FastDeploy-GPU安装 ​编辑3.…

深入探讨 C++ 中的浮点数数据类型

核心概念:IEEE 754 标准 C 中的浮点数(float, double, long double)在绝大多数现代系统上遵循 IEEE 754 标准。这个标准定义了浮点数在内存中的二进制表示方式、运算规则、特殊值(如无穷大、NaN)等。数据类型与精度 fl…

相机:以鼠标点为中心缩放(使用OpenGL+QT开发三维CAD)

很多软件中(Auto CAD、ODA等)支持以鼠标点为中心进行放缩操作,有什么黑科技吗? 本章节为相机原理和实现的补充内容,支持鼠标放缩时以鼠标点为中心进行放缩。 对应视频课程已上线,欢迎观看和支持~ https:…

​​XAMPP安全升级指南:修复CVE-2024-4577漏洞,从PHP 8.2.12升级至PHP 8.4.10​​

​​1. 背景与漏洞概述​​ 近期,PHP官方披露了一个高危漏洞 ​​CVE-2024-4577​​,该漏洞影响PHP 8.2.x及更早版本,可能导致远程代码执行(RCE)或信息泄露。由于XAMPP默认捆绑的PHP版本(如8.2.12)可能受此漏洞影响,建议用户尽快升级至最新的​​PHP 8.4.10​​(或官…

ES 压缩包安装

以下是 Elasticsearch (ES) 通过 .tar.gz 压缩包安装的详细步骤(适用于 Linux/macOS 系统): 1. 准备工作 1.1 检查系统依赖 Java 环境:ES 需要 JDK,推荐 OpenJDK 11/17(ES 7.x/8.x 兼容版本)。…

RoboRefer:面向机器人视觉-语言模型推理的空间参考

25年6月来自北航、北大和北京智源的论文“RoboRefer: Towards Spatial Referring with Reasoning in Vision-Language Models for Robotics”。 空间参考是实体机器人与三维物理世界交互的基本能力。然而,即使有了强大的预训练视觉-语言模型 (VLM),近期方…

【Unity】MiniGame编辑器小游戏(十)连连看【Link】

更新日期:2025年7月9日。 项目源码:获取项目源码 索引 连连看【Link】一、游戏最终效果二、玩法简介三、正式开始1.定义游戏窗口类2.规划游戏窗口、视口区域3.方块 Block①.定义方块类②.生成方块所有类型③.生成连连看棋盘④.绘制方块阵列4.连线 Line①.点击方块连线②.尝试…

Enable ADB Debugging Before Connect

If you don’t enable Developer Options and turn on USB Debugging before plugging in the cable, adb devices won’t detect the phone because the Android system doesn’t trust the connection yet. Here’s what you need to do step-by-step to fix this:✅ 1. Enab…

从互联网电脑迁移Dify到内网部署Dify方法记录

一、在互联网电脑上准备迁移文件1. 保存 Docker 镜像# 获取所有 Dify 相关镜像(根据实际容器名调整) docker ps --filter "namedify" --format "{{.Image}}" | sort -u > dify-images.list# 保存镜像为 .tar 文件 docker save $(…

【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(一)

MatSwap: Light-aware material transfers in images介绍任务:输入一张拍摄图像、示例材质纹理图像(这里跟BRDF无关,通常我们讲到材质一般指的是SVBRDF,但是这里的材质指的只是纹理)、用户为拍摄图像指定的遮罩区域&am…

饿了么el-upload上传组件报错:TypeError: ***.upload.addEventListener is not a function

在本地上传没有报这个错误,部署到服务器后会报这个错误,一开始以为是服务器配置等什么原因,但是一想这个报错应该还是在前端,接口都还没请求,不可能到后台去,后面搜了好几个AI也没有找到想要的答案或解决方…

淘宝直播与开源链动2+1模式AI智能名片S2B2C商城小程序的融合发展研究

摘要:本文聚焦于淘宝直播这一以“网红”内容为主的社交电商平台,深入分析其特点与流量入口优势。同时,引入开源链动21模式AI智能名片S2B2C商城小程序这一新兴概念,探讨二者融合的可能性与潜在价值。通过分析融合过程中的技术、市场…

【macos用镜像站体验】Claude Code入门使用教程和常用命令

一、下载安装nodejs # macOS 用户安装nodejs brew update brew install node二、安装官方Claude Code # 安装 Claude Code npm install -g anthropic-ai/claude-code # 查看版本 claude --version三、正式使用(国内镜像站) 今天发现的一个镜像站&…

算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题

在排序算法的大家族中,冒泡排序是最基础也最经典的算法之一。它的核心思想简单易懂,通过重复地走访待排序序列,一次比较两个相邻的元素,若它们的顺序错误就把它们交换过来,直到没有需要交换的元素为止。虽然冒泡排序的…

Linux小白学习基础内容

记录第一天重新学习2025/7/10 15:467/10 17:02这里面一个命令带多个参数举例(多个参数之间用空格隔开)ls(命令) ~ / /etc/(参数) :这里就是同时查看主机的家目录,根目…

从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)

(1)本人挑战手写代码验证理论,获得一些AI工具无法提供的收获和思考,对于一些我无法回答的疑问请大家在评论区指教; (2)本系列文章有很多细节需要弄清楚,但是考虑到读者的吸收情况和文章篇幅限制,选择重点进行分享&…

【iOS设计模式】深入理解MVC架构 - 重构你的第一个App

目录 一、MVC模式概述 二、创建Model层 1. 新建Person模型类 2. 实现Person类 三、重构ViewController 1. 修改ViewController.h 2. 重构ViewController.m 四、MVC组件详解 1. Model(Person类) 2. View(Storyboard中的UI元素&#x…