前端AI八股文题目汇总
一、TypeScript 与类型系统(20题) 1. 在定义 AI 接口返回的嵌套数据结构(如多轮对话、工具调用结果)时,如何用 TypeScript 的泛型与条件类型实现灵活的类型推导? 2. 当 AI 接口返回的字段可能因模型版本不同而动态变化时,如何设计类型守卫(type guard)与类型收缩策略? 3. 请用 TypeScript 实现一个"类型安全的 Prompt 模板解析器",要求支持变量插值、类型校验与默认值。 4. 如...
四、性能优化与渲染(20题)
1. 在万条级别的AI对话历史中,如何实现毫秒级搜索与过滤? 场景:智能辅导系统累积了数万条学生与AI的对话记录,教师需要快速检索特定知识点的问题或学生常错点。 核心答案:采用多级索引架构和内存计算优化。建立倒排索引用于关键词搜索,位图索引用于分类筛选,B+树索引用于时间范围查询。通过索引预计算、查询合并和结果缓存实现毫秒级响应。 实现方案: 1. 索引结构设计: 倒排索引:关键词 [消息ID列表],使用TF IDF加权 位图索引:标签...
改了CSS刷新没反应-你可能不懂HTTP缓存
做前端的应该都遇到过这种情况:明明改了 CSS,浏览器里看到的还是旧样式。网上搜一下,告诉你"清缓存",Ctrl+F5 一刷新就好了。 但问题是: 缓存到底是怎么工作的? 为什么有时候会用缓存,有时候不会? Network 面板里的 和 有什么区别? 今天把这个问题彻底搞清楚。 HTTP 缓存的两层机制 浏览器缓存分两层: 强缓存 和 协商缓存 。 简单说: 强缓存 :直接用本地缓存,不问服务器 协商缓存 :问一下服务器"我这个还能用吗...
LocalStorage、Cookie、IndexedDB 同步与异步机制对比
一、LocalStorage —— 同步 特性 LocalStorage 的 API 是同步的。调用 、 、 、 会立即执行并阻塞主线程。 示例 备注 少量读写通常很快;在大量循环写入场景中可能导致 UI 卡顿。 二、Cookie —— 同步 特性 通过 读写是同步的,操作会立即生效。 示例 备注 Cookie 的读写是同步的;但它随 HTTP 请求发送到服务器的过程属于网络传输,不阻塞当前 JS 执行。 三、IndexedDB ——...
cookie跨域介绍
Cookie 跨域问题详解 在 Web 开发中, Cookie 是最常见的客户端存储机制之一,用于记录用户登录状态、偏好设置、会话信息等。然而,当涉及到 跨域请求 时,Cookie 的行为往往变得复杂,尤其在现代浏览器的安全策略下,跨域 Cookie 的传递和写入都有严格的限制。 本文将从基础概念开始,逐步讲解 Cookie 的跨域机制、SameSite 属性、CORS 配置及常见问题解决方案。 一、Cookie 的基础概念 Cooki...
JavaScript 闭包详解
JavaScript 闭包(Closure)详解 一、什么是闭包 闭包(Closure) 是 JavaScript 中一个非常核心且常被问到的概念。简单来说: 闭包是一个函数,它可以“记住”并访问其定义时所在的词法作用域,即使这个函数在其作用域之外被调用。 换句话说,当一个函数“嵌套”在另一个函数中,并且 内部函数引用了外部函数的变量 时,就形成了闭包。 示例: 虽然 已经执行完毕,但 依然可以访问 中的 。这就是闭包。 二、闭包的形成...
开始性能优化之旅
事件循环机制 一、JavaScript 引擎的本质 核心职责 : 解析 JavaScript 语法 管理变量和内存 执行代码逻辑 不涉及 : 线程管理(Worker除外) I/O 操作 定时器控制 网络请求 常见引擎:V8(Chrome)、SpiderMonkey(Firefox)、JavaScriptCore(Safari) 二、宿主环境的扩展能力 宿主提供的多线程能力 : | 线程类型 | 功能 | 对应 API | | | | |...
前端首屏优化
话说,我在面试的时候,80%的情况下,都会被问到首屏优化问题,烦,恨 TCP Slow Start(慢启动)概念 咱先不说标题的数字哪里来的,先说一个概念,就是TCP的慢启动。 你们想哈,在浏览器和服务器开始建立连接的时候,服务器是并不知道浏览端网络的带宽、拥塞状况。假设你本地的带宽是1M,如果一开始服务器就发送2M的文件,那浏览器压根就不是人类,忍忍或者挤挤就能接收到的,这样就可能会引发丢包和重传。 想想,这个该有什么办法解决这个问题...
Function.prototype和Object.prototype
一道面试题引发的原型链血案,彻底搞懂 Function.prototype 和 Object.prototype 前言 有这样一道题: 目录 问题分析与答案揭晓 让我们先公布正确答案,然后深入分析原因: 为什么 是 而不是 ? 这是因为函数和实例的原型链路径完全不同! 原型链的本质机制 JavaScript中的两条原型链 在JavaScript中,存在两条不同的原型链: 关键理解:F.proto...