# interview **Repository Path**: chenqianwen0309/interview ## Basic Information - **Project Name**: interview - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户在浏览器输入 URL 到页面展示的过程 - 解析 URL:确定协议/域名/端口/路径/参数,先查浏览器缓存与 HSTS 等策略 - DNS 解析:浏览器/系统/路由器缓存 → 递归 DNS → 权威 DNS,拿到 IP(可能是 CDN 节点) - 建连:HTTP/1.1 走 TCP 三次握手;HTTPS 再做 TLS 握手(证书校验、协商密钥;HTTP/2 可复用连接) - 发请求:带上请求行/请求头/Cookie 等到服务器(可能先到 CDN/反向代理/负载均衡) - 服务端处理:网关/反向代理 → 应用层(鉴权、路由、业务、缓存、数据库)→ 返回响应(状态码、Header、HTML/CSS/JS 等) - 浏览器渲染:解析 HTML 构建 DOM;解析 CSS 构建 CSSOM;合成 Render Tree → layout → paint → compositing;遇到 JS 可能阻塞解析;资源继续并发下载,最终绘制完成并可交互 # GET 和 POST 的区别 - 核心区别 从Restful HTTP 语义上来说,GET是获取资源,POST是提交数据新增资源。 - 数据传输方式上 GET的参数一般放在URL QueryString里 /api/user?id=1&name=andrew 长度受限2kb-8kb左右 POST数据一般放在Request Body:里面 GET 不是不可以发送请求体,只是服务器和浏览器约定不用。 - 安全性 GET/POST 都是明文传输,POST相对安全一些,安全性是来自于https 加密传输。 - 幂等性 HTTP 是无状态的 GET n 次请求都一样 POST 不一样的 ,每次都新增资源 - 缓存 GET 会缓存, POST 一般不缓存 # JS 运行机制 & 事件循环 - 单线程:JS 是单线程语言,同一时间只能执行一个任务。 - 事件循环(Event Loop): - 执行同步任务,进入调用栈。 - 遇到异步任务(定时器、网络请求),放入任务队列。 - 同步任务执行完,调用栈清空。 - 读取微任务队列(Promise、process.nextTick),全部执行。 - 读取宏任务队列(setTimeout、setInterval、I/O),执行一个。 - 重复步骤 4-5,形成循环。 核心:先同步,再微任务,最后宏任务,保证页面不阻塞。 # es6 新特性 ## 语法与写法 - let/const :块级作用域、暂时性死区(TDZ), const 绑定不可变(对象内容仍可改) - 箭头函数 () => {} :更短;不绑定自己的 this/arguments/super/new.target ,常用于回调 - 模板字符串 `a${x}b` :支持插值与多行 - 解构赋值:数组/对象快速取值与默认值 - 函数默认参数、剩余参数 ...rest 、展开运算符 ...arr - 增强对象字面量:属性简写、方法简写、计算属性名 [key] ## 面向对象 - class / extends / super :类语法糖(本质仍是原型链) - static 静态方法、 getter/setter ## 模块化 - import / export :ES Module 静态结构,利于 tree-shaking;区分 export default 与命名导出 ## 异步与迭代 - Promise :链式调用、错误捕获、并发控制( all/race/allSettled/any 是后续标准,但常一起问) - Generator / yield :可暂停函数,常用于控制流程(后被 async/await 普及替代) - Iterator / for...of :可迭代协议,遍历数组、Map、Set、字符串等 ## 新的数据结构与能力 - Map/Set :更适合键值映射/去重; WeakMap/WeakSet 弱引用(利于垃圾回收、常用于私有数据) - Symbol :唯一值,避免属性名冲突;可定制迭代等内置行为(如 Symbol.iterator ) ## 元编程与其他 - Proxy / Reflect :拦截与反射操作(如 get/set/has/apply),做响应式、校验、埋点等 - 新增内置方法: Object.assign 、 Object.is 、 Array.from/of 、 find/findIndex 、 String.includes 等 # React 组件通信(推荐面试答法) - 父 → 子: props 传值(最常用) - 子 → 父:父传回调 props (子组件调用 onChange/onSubmit 把数据带回去) - 兄弟组件:把状态提升到共同父组件(Lifting State Up),再用 props 分发 - 跨多层: Context (配合 useContext ),适合主题、语言、用户信息等“全局但不复杂”的数据 - 全局/复杂共享:状态管理(Redux、Zustand、MobX 等),适合跨页面、多人协作、复杂更新逻辑 - 服务端状态:React Query/SWR(缓存、失效、重试),不要用全局 store 硬管请求数据 - 组件实例通信(少用): ref + forwardRef/useImperativeHandle 暴露命令式方法(如 open()/focus() ) - 非父子/非 React 树:事件总线(EventEmitter)可做,但一般不推荐,容易失控 # mcp/skills/agent/tools 概念 agent:智能体,能自主决策、调用工具完成任务。 skills:agent 的业务能力单元,由多个 Tool 组成。 mcp:标准化协议,用于 agent 与 Tool/Skills 的通信。 tool:agent 可调用的具体功能单元,如搜索、计算、调用 API 等。