1.I/O密集型任务和CPU密集型任务的区别I/O密集型任务I/O-bound tasks是指那些大部分时间都花费在等待输入/输出I/O操作完成的任务。这些I/O操作可能包括文件读写、网络通信、数据库访问等。由于这些操作通常涉及磁盘、网络或其他外部设备的访问它们的执行速度相对较慢因此CPU在等待这些操作完成时经常处于空闲状态。I/O密集型任务的一个典型例子是Web服务器处理静态文件请求。当服务器收到一个对静态HTML文件的请求时它可能需要从磁盘读取该文件然后将其通过网络发送给客户端。在这个过程中大部分时间都花费在磁盘读取和网络传输上而不是CPU计算上。CPU密集型任务CPU-bound tasks则是指那些需要大量CPU计算资源的任务如视频编码、数学计算、图像处理。这些任务通常涉及大量的数学运算、逻辑处理或数据转换等操作。由于这些操作在CPU上执行得相对较快因此CPU密集型任务的主要瓶颈在于CPU的处理能力而不是I/O操作的等待时间。一个CPU密集型任务的例子是视频编码。视频编码过程需要对大量的视频帧进行复杂的数学运算以便将其压缩成更小的文件大小。这个过程需要大量的CPU资源并且通常很难通过并行化来加速尽管现代处理器具有多核架构但视频编码的某些部分可能仍然是串行的。区别资源消耗I/O密集型任务主要消耗I/O设备的带宽和CPU的等待时间而CPU密集型任务则主要消耗CPU的计算资源。性能瓶颈I/O密集型任务的性能瓶颈通常在于I/O操作的等待时间而CPU密集型任务的性能瓶颈则在于CPU的处理速度。并行化潜力由于I/O密集型任务在等待I/O操作时CPU处于空闲状态因此它们通常更容易通过并行化来加速例如使用多线程或多进程。相比之下CPU密集型任务的并行化可能更加困难因为它们的计算部分通常是串行的并且受到CPU核心数量的限制。应用场景I/O密集型任务在Web服务器、数据库访问、网络通信等场景中很常见而CPU密集型任务则更多地出现在科学计算、图像处理、视频编码等领域。2.线程和进程的区别多线程线程依赖于进程存在一个进程中的线程共享进程的资源线程的创建和销毁开销相对较小。适用于I/O密集型任务如网络请求、文件读写等。多进程进程是独立的执行实体拥有自己的资源内存、文件描述符等进程之间互不干扰。进程的创建和销毁开销较大。适用于CPU密集型任务。3.TCP和UDP的区别TCP是面向连接的UDP是无连接的TCP是可靠的UDP是不可靠的TCP是面向字节流的UDP是面向数据报文的TCP只支持点对点通信UDP支持一对一一对多多对多TCP报文首部20个字节UDP首部8个字节TCP有拥塞控制机制UDP没有TCP协议下双方发送接受缓冲区都有UDP并无实际意义上的发送缓冲区但是存在接受缓冲区4.http无状态HTTP协议的无状态特性‌指的是HTTP协议在处理请求时服务器不会保存任何关于客户端状态的信息每次请求都是独立的服务器不会记住之前的请求信息。这种设计使得每次请求都必须携带完成请求所需的所有信息服务器不会根据之前的交互进行状态保持‌。Cookie不可跨域名Cookie实际上是一小段的文本信息。客户端请求服务器如果服务器需要记录该用户状态就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来当浏览器再请求该网站时浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie以此来辨认用户状态。通常存储标识符如Session ID服务器通过标识符查询会话数据来判定用户状态。Cookie保存登录信息有多种方案方案一最直接的是把用户名与密码都保持到Cookie中下次访问时检查Cookie中的用户名与密码与数据库比较。这是一种比较危险的选择一般不把密码等重要信息保存到Cookie中。方案二是把密码加密后保存到Cookie中下次访问时解密并与数据库比较。这种方案略微安全一些。如果不希望保存密码还可以把登录的时间戳保存到Cookie与数据库中到时只验证用户名与登录时间戳就可以了。方案三只在登录时查询一次数据库以后访问验证登录信息时不再查询数据库。实现方式是把账号按照一定的规则加密后连同账号一块保存到Cookie中。下次访问时只需要判断账号的加密规则是否正确即可。SessionSession是另一种记录客户状态的机制不同的是Cookie保存在客户端浏览器中而Session保存在服务器上。客户端浏览器访问服务器的时候服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。Token存储在客户端通常作为HTTP请求头如Authorization: Bearer token或URL参数传递。可包含用户信息如JWT的Payload无需服务器查询数据库即可验证身份。支持跨域因为token由客户端主动携带不受浏览器同源策略限制。适合需要无状态认证如API、微服务的场景。JWT是Token的一种实现方式采用标准化格式JSONHeader Payload Signature其中Payload可携带用户信息和加密签名机制。一般工作流程1、用户登录。客户端发送用户名和密码到服务器服务器验证通过后生成JWT包含用户信息和签名。2、返回JWT。服务器将JWT返回给客户端通常通过HTTP响应头或响应体。3、客户端存储。客户端将JWT存储在localStorage、sessionStorage或cookie中。4、请求携带JWT。客户端在后续请求的HTTP请求头如Authorization: Bearer JWT中携带JWT。5、服务器验证。服务器解析JWT验证签名和过期时间提取用户信息。JWT一旦签发无法直接撤销除非实现黑名单机制或提前设定好过期时间/生效时间。5.Http Get和PostGET‌1、仅用于请求资源不修改服务器数据因此‌幂等且可缓存‌重复请求结果一致2、传参附加在URL后可见于地址栏3、‌参数受URL长度限制且仅支持ASCII字符。POST‌1、用于提交数据如新增/修改资源‌非幂等且不可缓存‌每次请求可能产生不同结果2、‌传参封装至请求体3、传参无明确限制且支持多种数据类型。6.保证分布式事务一致性的方法1. 两阶段提交2PC, Two-Phase Commit原理准备阶段Prepare协调者向所有参与者发送预提交请求参与者执行事务操作并记录日志但暂不提交。提交阶段Commit协调者根据参与者的反馈决定提交或回滚事务。如果所有参与者都准备成功则发送提交请求否则发送回滚请求。优点保证强一致性实现相对简单。缺点单点故障协调者是单点可能成为瓶颈。阻塞问题参与者需要等待协调者的最终决定可能长时间阻塞。性能开销需要多次网络通信延迟较高。适用场景对一致性要求高、事务执行时间短的场景如金融交易。2. 三阶段提交3PC, Three-Phase Commit原理3PC 是对 2PC 的改进增加了超时机制和预提交阶段分为三个阶段CanCommit协调者询问参与者是否可以执行事务。PreCommit参与者执行事务操作并记录日志但暂不提交。DoCommit协调者根据参与者的反馈决定提交或回滚事务。优点解决了 2PC 的阻塞问题参与者可以在超时后自动提交或回滚。降低了协调者故障的影响。缺点仍然存在单点故障问题。实现复杂度较高。适用场景对一致性要求高、需要减少阻塞的场景。3. TCCTry-Confirm-Cancel模式原理TCC 是一种补偿型事务模式将事务操作分为三个阶段Try尝试预留资源如锁定库存、冻结金额。Confirm确认执行事务如扣减库存、扣款。Cancel取消事务释放预留资源如解锁库存、解冻金额。优点灵活性高适用于复杂的业务场景。不依赖数据库事务性能较好。缺点业务侵入性强需要为每个操作实现 Try、Confirm、Cancel 方法。开发成本较高。适用场景高并发、业务逻辑复杂的场景如电商订单、支付系统。(1) 选择强一致性的场景核心业务金融交易、支付系统、库存扣减等。法规要求如 GDPR 对数据一致性的严格要求。技术方案2PC、Paxos/Raft、分布式事务框架如 Seata。(2) 选择最终一致性的场景非核心业务社交网络、日志记录、缓存系统等。高并发场景电商秒杀、用户行为日志等。技术方案消息队列如 Kafka、Gossip 协议、本地消息表。(3) 折中方案柔性一致性如 TCC、Saga 模式结合强一致性和最终一致性的优点。适用于复杂业务流程如电商订单。7.数据库性能优化的方法一、查询优化1、索引优化创建合适的索引避免过度索引。注意复合索引遵循最左前缀原则如(a, b)索引支持a或a,b查询但不支持单独b查询避免在索引列上使用函数。2、避免全表扫描使用EXPLAIN分析查询计划确认是否命中索引。限制返回数据量如LIMIT 100。只查询必要列。3、优化join查询确保join字段有索引。避免大表join大表。4、减少子查询和临时表可考虑把子查询改为join。特殊情况考虑使用exist。二、数据库结构优化1、分库分表水平分表、垂直分表。2、读写分离。3、缓存策略redis缓存。三、硬件与网络优化8、redis和es的适用场景选择 Redis 的场景需要高性能缓存、实时计数、简单消息队列或会话管理。数据量较小且以键值对形式存储。选择 ES 的场景需要全文搜索、日志分析、复杂查询或地理空间搜索。数据量较大且需要多维分析和聚合。9、异步、多线程、并行、并发概念核心目标线程模型适用场景性能优化关键异步避免线程阻塞单线程调度依赖线程池I/O密集型任务减少上下文切换合理使用await多线程真正并行执行多线程创建CPU密集型任务避免锁竞争控制线程数量并行利用多核加速计算TPL自动任务分解可并行化计算任务数据分区均衡减少同步开销并发同时处理多个任务上下文切换或多线程所有多任务场景任务调度效率资源隔离并发是指系统在同一时间段内交替处理多个任务的能力通常由多线程、异步、并行等技术实现。多线程是指在单个进程中创建多个线程每个线程独立执行代码块。并行是并发的子集通常通过任务分解将大任务分解为多个小任务同时进行需依赖多核cpu实现。10、js将对象转为json在console展示console.log(JSON.stringify(nestedArray, null, 2));**JSON.stringify()**将 JavaScript 对象这里是nestedArray转换为 JSON 格式的字符串。**nestedArray**待转换的嵌套数组可以是任意复杂结构如多维数组、对象数组等。**null**表示不使用替换函数若需格式化部分数据可传入函数。**2**每层嵌套缩进空格数控制输出的可读性。11、使用protoc.exe将proto文件转为java类protoc.exe --java_out输出路径 --proto_pathprotoc解压路径 xxx.proto文件路径12、本地运行.sh脚本文件1. 安装 [Git for Windows](https://git-scm.com/)它自带 Git Bash支持 .sh 脚本。2. 在 Git Bash 中导航到脚本所在目录。3. 给脚本添加可执行权限并运行bashchmod x build.sh./build.sh13、MobaXterm和Xshell的对比对比维度MobaXtermXshell核心理念All-in-One 多功能集成不仅是SSH客户端还是一个包含X server、Unix命令集、多协议支持RDP/VNC/FTP等的综合工具箱。专业专注 的SSH客户端核心功能是提供强大、高效、安全的SSH连接和会话管理。主要协议支持SSH,Telnet, RDP, VNC, FTP, SFTP, X11, Serial等覆盖面非常广。SSH, SFTP, Telnet, Rlogin, Serial以及新版本支持的RDP。独有特色功能-内置X Server在Windows上直接运行远程Linux的图形化应用如GIMP、Firefox。-集成Unix命令环境基于Cygwin可在Windows下直接使用ls、grep、awk等命令。-可视化SFTP管理连接SSH后自动在右侧显示远程文件目录支持拖拽上传下载。-强大的会话管理与自动化支持会话树状文件夹、同步输入同时向多台服务器发送命令、快速命令、触发器、脚本录制等高级自动化功能。-轻量与高效启动和连接速度极快资源占用低。平台支持仅支持Windows。仅支持Windows。授权与价格提供功能强大的免费版但会话数量等有限制专业版需要付费。提供功能完整的个人/学校免费版商业使用需要付费。资源占用较高因为集成了大量组件。较低以轻量高效著称。14、延时队列和死信队列维度延时队列死信队列核心作用定时执行异常处理消息状态正常消息只是还不到消费时间异常消息正常处理失败了触发条件时间到了自动可见消费失败、过期、队列满处理方式时间到后交给消费者正常处理需要特殊处理日志、重试、人工干预业务语义该干活了这消息有问题生命周期短暂延迟 → 正常消费 → 结束消费失败 → 进入死信 → 特殊处理15、dmq topic采用kafka协议和采用pulsar协议的区别对比维度Kafka协议Pulsar协议架构模式存算一体Broker既负责计算也负责存储存算分离Broker无状态负责计算BookKeeper负责存储扩缩容灵活性扩容需要数据重平衡过程复杂、有影响计算层和存储层可独立扩容快速且无感Topic数量限制受限Topic数量增多时性能急剧下降支持百万级Topic性能不受Topic数量影响消费者数量限制消费者数量 ≤ 分区数超出部分闲置无限制消费者数量可远超分区数依赖组件强依赖ZooKeeper做协调依赖ZooKeeper存元数据但BookKeeper存消息Kafka协议极简主义高性能日志管道适合大数据、日志场景功能单一但极致高效。Pulsar协议全能型云原生消息平台适合交易、多租户、复杂业务场景功能丰富但架构稍复杂。16、ZooKeeper和BookKeeper对比对比维度ZooKeeperBookKeeper定位协调服务存储服务存什么元数据小数据KB级别实际数据大数据MB~GB级别数据模型树形结构ZNode日志流Ledger Entry读写模式随机读写顺序追加写数据量小几GB大PB级典型场景选举、配置、服务发现消息持久化、日志存储客户端Kafka、Hadoop、DubboApache Pulsar组件一句话理解ZooKeeper分布式系统的大脑和电话本存小数据、管协调BookKeeper分布式系统的仓库存大量日志数据、高可靠两者是互补关系而非竞争关系。在Pulsar中ZooKeeper负责告诉BookKeeper数据该存哪BookKeeper负责实际存数据。17、前端基本概念技术类型核心用途典型场景Vue前端框架构建用户界面提供响应式数据绑定、组件化开发、虚拟 DOM 等特性。开发动态网页、单页应用SPA、移动端 H5 页面。React前端库/框架构建用户界面强调组件化、虚拟 DOM、单向数据流生态丰富但需额外配置状态管理。大型复杂应用如社交平台、需要高度灵活性的项目。Node.js后端运行时环境在服务器端运行 JavaScript处理 HTTP 请求、数据库操作、文件系统等。构建 API 服务、实时应用如聊天室、全栈开发配合前端框架。npm包管理工具管理 JavaScript 项目的依赖库模块提供安装、更新、发布等功能。所有 JavaScript 项目前端/后端的依赖管理如安装 Vue、React 或 Node.js 模块。选 Vue追求开发效率、中小型项目、团队熟悉模板语法。选 React需要高度灵活性、大型复杂应用、团队熟悉函数式编程。选 Node.js构建后端服务、实时应用、全栈开发。npm 必学Node.js 的默认包管理工具用于安装、发布和管理 JavaScript 项目的依赖包。nvm 必学Node.js 版本管理工具用于在同一台机器上安装、切换和管理多个 Node.js 版本。18、Content-Type 类型详解与使用场景类别代表类型核心用途文本类text/plain、text/html、text/css纯文本、网页、样式表应用类application/json、application/xml、application/x-www-form-urlencodedAPI 数据交换、表单提交文件/二进制multipart/form-data、application/octet-stream文件上传、二进制流图片/视频/音频image/jpeg、video/mp4、audio/mpeg媒体资源传输类型格式场景优先级application/jsonJSONREST API、前后端分离⭐⭐⭐⭐⭐multipart/form-data多部分混合文件上传⭐⭐⭐⭐⭐application/x-www-form-urlencodedURL 编码键值对传统表单⭐⭐⭐application/octet-stream二进制流文件下载⭐⭐⭐⭐text/plain纯文本日志、测试⭐⭐application/xmlXML遗留系统⭐一句话总结API 接口用application/json文件上传用multipart/form-data传统表单用application/x-www-form-urlencoded。