前端相关八股
特性 短轮询 长轮询 SSE WebSocket 通信方向 单向 (客户端拉) 单向 (客户端拉) 单向 (服务端推) 双向互发 底层协议 HTTP HTTP HTTP TCP(WS/WSS) 连接类型 短连接 挂起 HTTP HTTP 长连接 TCP 长连接 浏览器原生 API 无 (ajax/fetch) 无 (ajax) EventSource WebSocket 自动重连 需手动实现 需手动 内置自动重连 需手动 消息格式 任意 任意 固定 SSE 格式 任意 二进制数据 支持 支持 不友好 完美支持 适用场景 低频、简单拉取 准实时、简单通知 纯服务端推送 双向实时交互 借助 CSS resize 属性,浏览器原生支持右下角拖拽拉伸。通过鼠标按下状态结合 transform 可实现简易拖拽体验123456789101112131415161718192021222324252627282930313233<!DOCTYPE html><html lang="zh-CN"...
一些八股概念辨析
mcp与skill如果把mcp比作车子,那么skill就是如何骑车 Function Calling(函数调用) 是大模型的一项能力,指大语言模型根据用户提问,主动识别意图、选择并调用外部工具 / 预设函数,把自然语言指令转为结构化函数调用请求,执行后再整合结果返回给用户。Function Calling 是底层通信能力 / 协议,Skill 是上层封装的业务能力 / 功能集合,二者是「实现方式」和「业务载体」的关系。1. Function Calling(函数调用 / 工具调用)本质:技术协议、调用机制作用:让大模型按约定格式(JSON)输出函数名 + 参数,对接外部代码 / 接口,是通用底层能力。粒度:最小执行单元 = 单个函数 / 接口。范围:纯技术层,和业务无关,所有模型 / 框架通用。 2. Skill(技能)本质:面向用户的业务功能、能力包作用:给用户提供完整服务,是产品 / 业务层面的抽象。粒度:一个 Skill 可包含多个函数、多轮调用、逻辑编排。范围:业务层,平台 ...
Agent开发相关八股
RAG召回常见问题。 一、RAG召回最常遇到的6类问题1. 语义不匹配(最常见)用户提问是自然语言,库中文档是关键词/专业表述,字面不匹配、语义匹配,导致召回不到正确文档。例: 用户问:“电脑连不上网怎么办” 库中是:“以太网连接故障排查”→ 传统关键词检索完全搜不到。 2. 召回噪声大(无关内容多)召回了一堆不相关的片段,大模型被干扰,回答跑偏、 hallucination(幻觉)。 3. 召回不完整(漏关键信息)长文档被切分后,上下文断裂,只召回碎片,缺关键前提/结论。 4. 向量漂移/过时文档更新后向量没重算,旧向量和新内容不匹配;高频更新场景尤其严重。 5. 检索速度慢数据量大(10w+文档)时,暴力检索/全量相似度计算耗时高。 6. 多路召回融合差同时用关键词+向量+规则召回,结果权重混乱,最终质量不稳定。 二、Go 语言如何处理这些问题Go 适合做 RAG 召回层:高性能、并发强、内存占用低,非常适合企业级服务。 问题1:语义不匹配Go 解决方案:使用嵌入模型(Embedding)生成向量,用向量数据库做相似度检索。 ...
简历相关八股复习
异步链路同步链路用户请求 → 应用 → Redis (改) → MySQL (同步改,阻塞) → 返回异步链路用户请求 → 应用 → Redis (改) → MQ (发消息) → 立即返回 ↓ 消费服务 → MySQL (异步落库)本质削峰填谷 需注意的风险缓存与数据库短暂不一致:Redis 已更新,DB 还没消费完成,短时间查 DB 是旧数据(业务要容忍)消息队列丢消息 → 缓存和 DB 永久不一致(需做消息重试、死信队列、对账补偿)Redis 宕机 → 热点数据丢失(要开 RDB/AOF 持久化) NIST FF1 格式保留加密(FPE) 对趋势递增 ID 进行可逆混淆123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081package mainimport ( "...
go底层相关八股复习
特性 聚合 (Aggregation) 组合 (Composition) 菱形 空心 ◇ 实心 ◆ 强度 弱拥有 强拥有 生命周期 部分独立 部分与整体同生共死 共享性 部分可被多个整体共享 部分仅属于一个整体 典型例子 班级 - 学生、汽车 - 轮胎 人 - 心脏、订单 - 订单项、房子 - 房间 pk代表主键 fk代表外键 map 必须初始化才能用,零值是 nil,直接赋值会 panicvar m map[string]int // nil mapm[“a”] = 1 // panic: assignment to nil map m := make(map[string]int)m[“a”] = 1 // 正常 判断 key 是否存在,不能直接用值_, ok := m[“a”]if ok { // 存在} else { // 不存在} 123v := m["key"]if ...
计算机网络相关八股复习
采集插件需要增量采集,避免重复抓取、重复入库、浪费性能,你在 Go 里怎么做去重?Redis Bitmap/ 布隆过滤器 对比项 Redis Set Redis Bitmap 布隆过滤器 (本地 / RedisBloom) 准确性 100% 精准,无误判 100% 精准,无误判 概率型:不存在 = 一定不存在,存在 = 可能误判,误判率可控 (0.01%~1%) 存储数据 完整存原始字符串 (URL / 字符串) 只能存数字下标(偏移量),无法直接存字符串 不存原始数据,多次 hash 映射 bit 位,只存标记位 内存开销 极大,单条 URL≈40~60Byte;1000 万 URL≈500MB+ 稠密数据极省:1 亿 bit≈12MB;稀疏数据巨浪费(下标离散空出大量 bit) 极致节省:100 万数据、0.01% 误判≈2.3MB,单元素仅十几 bit,是 Set 的 1/200 左右 增删能力 支持新增、删除、随机剔除成员 支持 SETBIT/GETBIT/DEL,单个...
Go网页抓取,爬虫相关复习
获取网页内容1234567891011121314151617181920212223242526272829303132package mainimport ( "fmt" "io" "net/http")func main() { // 目标网址 url := "https://httpbin.org/get" // 发送 GET 请求 resp, err := http.Get(url) if err != nil { fmt.Println("请求失败:", err) return } // 必须关闭响应体,防止内存泄漏 defer resp.Body.Close() // 读取响应内容 body, err := io.ReadAll(resp.Body) if err != nil { fmt.Println("读取内容失败:", err) return } // 输出网页内容 fmt.Prin...
Go底层八股笔记
Go 原生 map 不是并发安全的,多协程同时读写会panic: concurrent map read/write。 解决方法 互斥锁1234567891011121314151617181920212223242526package mainimport "sync"func main() { var mu sync.Mutex m := make(map[int]int) go func() { for i := 0; i < 10000; i++ { mu.Lock() // 加锁 m[i] = i mu.Unlock() // 解锁 } }() go func() { for i := 0; i < 10000; i++ { mu.Lock() _ = m[i] mu.Unlock() } }() select {}} 读写锁1234567891011var mu sync....
260515笔记
vue3项目依赖关系index.html ↓main.js(入口文件) ↓App.vue(根组件) ↓各种页面组件 / 子组件(Home.vue、About.vue 等) NAT家里 / 公司路由器就是NAT:内网设备(手机 / 电脑)用私网 IP,访问外网时,NAT 会给你分配一个公网 IP + 端口做映射,外网只能看到这个公网映射,看不到你内网真实 IP。 切片切片底层不是数组而是带数组的结构体type slice struct { array unsafe.Pointer // 指向底层数组的指针 len int // 长度:当前元素个数 cap int // 容量:底层数组总可存元素个数}扩容规则原容量 < 1024:容量翻倍原容量 ≥ 1024:每次增长 1/4
后端开发专有名字记忆(20260430笔记)
InnoDB 按锁粒度分类 表级锁:锁住整张表,粒度最大、开销小、并发低。 行级锁:锁住单行/多行记录,粒度最小、开销大、并发最高。 页级锁:锁住数据页,粒度介于表锁和行锁之间。 最常用:行级锁(InnoDB 默认主打,支撑高并发事务)。 MySQL 慢查询日志默认是关闭(OFF)的,不会自动记录慢 SQL存储过程:把一堆 SQL 语句打包好,提前编译存在 MySQL 服务器里,给它起个名字,以后直接调用名字就能一次性执行完。即数据库的脚本 EFK 架构 三大组件 全称与作用EFK 分别对应 E:Elasticsearch F:Fluentd K:Kibana 各自作用1. Fluentd(采集层 F)负责:收集、过滤、转发日志 从服务器/容器/应用 采集日志 做清洗、过滤、格式化 转发给 Elasticsearch👉 定位:日志搬运工+预处理 2. Elasticsearch(存储检索层 E)负责:存储 + 检索 + 分析日志 接收 Fluentd 发来的日志 分词、索引、持久化存储 提供快速搜索、聚合统计👉 定位:日志数据库+搜索...














