全栈面试八股

学习顺序 序号 模块 知识点 1 SQL 基础 SQL 执行顺序 2 SQL 基础 GROUP BY 3 SQL 基础 WHERE 4 SQL 基础 HAVING 5 SQL 聚合 COUNT(*) 6 SQL 聚合 COUNT(col) 7 SQL 聚合 COUNT(DISTINCT col) 8 SQL 聚合 SUM 9 SQL 聚合 AVG 10 SQL 聚合 MAX 11 SQL 聚合 MIN 12 SQL 时间 时间范围筛选 13 SQL 优化 索引是否生效判断 14 SQL JOIN INNER JOIN 15 SQL JOIN LEFT JOIN 16 SQL JOIN LEFT JOIN + COUNT 17 SQL JOIN LEFT JOIN + WHERE 陷阱 18 SQL 思维 行级计算 vs 组级计算 19 SQL 思维 聚合函数计算对象理解 20 Web 基础 HTTP 请求方法 21 Web 基础 HTTP 状态码 22 Web 基础 HTTP 请求 / 响应结构 23 Web 基础 Cookie 24 Web 基础 Session 25 Web 基础 Token / JWT 26 Web 基础 RESTful 设计原则 27 Web 基础 跨域(CORS) 28 Web 通信 前后端交互流程 29 网络与浏览器 浏览器渲染流程 30 网络与浏览器 资源加载顺序 31 网络与浏览器 浏览器缓存机制 32 前端基础 HTML 语义化 33 前端基础 HTML 表单 34 前端基础 CSS 盒模型 35 前端基础 CSS 布局(Flex) 36 前端基础 CSS 布局(Grid) 37 前端基础 CSS 定位(position) 38 前端基础 CSS 常见居中方案 39 前端基础 CSS 响应式设计 40 前端基础 JavaScript 基础 41 前端基础 ES6+ 语法 42 前端基础 作用域 / 闭包 43 前端基础 this 绑定规则 44 前端基础 原型链 45 前端基础 DOM 操作 46 前端基础 事件冒泡与捕获 47 前端基础 Event Loop 48 React 核心 JSX 49 React 核心 组件化思想 50 React 核心 Props 51 React 核心 State 52 React 核心 Hooks(useState) 53 React 核心 Hooks(useEffect) 54 React 进阶 Hooks 规则 55 React 进阶 useMemo 56 React 进阶 useCallback 57 React 进阶 Context 58 React 进阶 受控组件 59 React 进阶 非受控组件 60 React 性能 组件重渲染机制 61 React 性能 key 的作用 62 React 性能 memo 63 React 性能 状态提升 64 React 性能 副作用管理 65 React 工程化 项目结构设计 66 React 工程化 状态管理基础 67 React 工程化 数据请求与管理 68 数据库基础 事务基本概念 69 数据库基础 ACID 70 数据库基础 事务隔离级别 71 数据库基础 脏读 / 不可重复读 / 幻读 72 并发基础 进程 73 并发基础 线程 74 并发基础 进程 vs 线程 75 并发基础 地址空间 76 并发基础 共享内存 77 并发基础 并发问题根因 78 并发基础 原子性 79 并发基础 非原子操作(count++) 80 并发控制 synchronized 81 并发控制 volatile 82 并发控制 AtomicInteger 83 并发控制 CAS 84 并发控制 可见性 85 并发控制 有序性 86 并发模型 竞态条件 87 并发模型 线程安全 88 并发模型 锁机制 89 内存模型 栈 vs 堆 90 内存模型 对象生命周期 91 内存模型 内存泄漏 92 内存模型 GC 基本概念 93 数据结构基础 数组 94 数据结构基础 哈希表 95 数据结构基础 时间复杂度 96 数据结构基础 常见查找 97 综合 全栈笔试综合模拟 98 综合 前后端面经高频题 知识点详解 SQL 基础 知识点 范围 概念定义 示例 SQL 执行顺序 查询整体流程 SQL 实际执行顺序为:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT SELECT b, COUNT(*) FROM t WHERE a>1 GROUP BY b HAVING COUNT(*)>1 GROUP BY 行 → 组 将多行按 key 分组,后续聚合函数按"组"计算 SELECT user_id, SUM(amount) FROM orders GROUP BY user_id WHERE 行级过滤 在分组前逐行过滤数据,不能使用聚合函数 WHERE amount > 100 HAVING 组级过滤 在分组后对"组"进行过滤,可使用聚合函数 HAVING SUM(amount) > 200 SQL 聚合 知识点 范围 概念定义 示例 COUNT(*) 行数统计 统计作用范围内的行数,不忽略 NULL COUNT(*) COUNT(col) 非 NULL 计数 统计 col 不为 NULL 的行数 COUNT(amount) COUNT(DISTINCT col) 去重计数 统计 col 中不同且非 NULL 的值个数 COUNT(DISTINCT user_id) SUM 数值求和 对非 NULL 数值求和,若全为 NULL 则结果为 NULL SUM(amount) AVG 平均值 等价于 SUM(col) / COUNT(col),忽略 NULL AVG(amount) MAX 最大值 / 存在性 返回最大非 NULL 值,常用于"是否存在"判断 HAVING MAX(amount) >= 100 MIN 最小值 / 全称性 返回最小非 NULL 值,常用于"是否全部满足" HAVING MIN(amount) >= 100 SQL 时间 知识点 范围 概念定义 示例 时间范围筛选 时间条件 推荐使用左闭右开区间,避免精度问题 created_at >= '2024-01-01' AND created_at < '2024-02-01' SQL 优化 知识点 范围 概念定义 示例 索引生效判断 索引使用 索引是否生效取决于能否从索引最左列定位扫描起点 WHERE age = 18 AND created_at >= '2024-01-01' SQL JOIN 知识点 范围 概念定义 示例 INNER JOIN 交集 仅保留两表匹配成功的行 FROM u INNER JOIN o ON u.id = o.user_id LEFT JOIN 左表保留 保留左表所有行,右表无匹配则为 NULL FROM u LEFT JOIN o ON u.id = o.user_id LEFT JOIN + COUNT 计数陷阱 COUNT(*) 数行,COUNT(右表列) 数匹配行 COUNT(o.id) LEFT JOIN + WHERE 陷阱 语义变化 WHERE 引用右表会过滤 NULL,使 LEFT JOIN 退化为 INNER JOIN LEFT JOIN o ON ... WHERE o.col > 1 SQL 思维 知识点 范围 概念定义 示例 行级计算 vs 组级计算 计算层级 行级先算再聚合;组级先聚合再算 SUM(amount * 0.9) vs SUM(amount) * 0.9 聚合函数计算对象理解 计算对象 聚合函数计算的是"表达式结果集合",不是行本身 COUNT(CASE WHEN amount >= 100 THEN 1 END)

January 8, 2026 · 4 min

107

107 Code const addPerson = (event) => { // event.preventDefault(); const personObject = { name: newName, id: persons.length + 1, number: newNumber, }; if (persons.some((person) => person.name === newName)) { if ( window.confirm( `${newName} is already in the phonebook, replace the old number with new one? ` ) ) { const person = persons.find((person) => person.name === newName); const updatedPerson = { ...person, number: newNumber }; axios .put(`http://localhost:3002/persons/${person.id}`, updatedPerson) .then((response) => { const responseData = response.data; setPersons((prev) => prev.map((p) => (p.id === person.id ? responseData : p)) ); }); } } else { axios .post("http://localhost:3002/persons", personObject) .then((response) => { const responseData = response.data; setPersons(responseData.concat(personObject)); setNewName(""); setNewNumber(""); }); } 功能描述 这是一个 React 电话簿应用中的添加/更新联系人功能,支持新增联系人或更新已存在联系人的电话号码。 ...

October 7, 2025 · 2 min

装逼手册(持续更新)

前言 人与人之间的连接始于一次成功的沟通,而沟通的艺术往往决定了这次连接的成败。在社交场合中,我经常观察到一些有趣的现象:许多人试图通过华丽的辞藻来展现自己,特别是在异性面前。然而,即便用上了最精心准备的词句,生硬的表达方式和不自然的肢体语言还是会让整个表演显得格外尴尬。 这篇装逼手册,就是为那些想要提升自己,但又不知从何下手的朋友准备的。在这里,你将找到来自哲学、经济学、科技领域的专业术语,以及当下流行的互联网黑话。这些都是装逼必备的"语料库",我会持续更新补充,plz stay tune ~。 如何优雅的装逼 何为装逼?装逼乃万物起源之始。在人类文明的长河中,装逼一直扮演着不可或缺的角色。从古希腊哲学家在集市上慷慨陈词,到中世纪骑士们的礼仪规范,再到现代社会精英们的高谈阔论,装逼的形式在进化,但其本质从未改变——它是一种社交技巧的升华,是个人魅力的艺术展现。 在某种程度上,装逼是一种社会性的表演艺术。它不仅需要深厚的知识储备作为基础,更需要恰到好处的表达技巧。一个成功的装逼,往往能在不经意间展现出个人的见识与品味,在无形中拉近人与人之间的距离,创造出令人印象深刻的社交时刻。 此文旨在以简洁高效的方式,为你构建一个系统的装逼知识体系。你无需像古代文人那样寒窗苦读,也不必像学者般潜心研究哲学典籍,更不用像科学家一样钻研繁复的理论。相反,通过这份指南,你将掌握在各种场合自然而然地展现个人魅力的技巧。 这不是传统意义上的学习过程,而是一种社交技能的快速提升方案。我们将为你精心挑选各个领域最具价值的知识点,让你能够在最短的时间内,以最优雅的方式完成从"装不了逼"到"装逼如风"的蜕变。 装逼手册 奥卡姆剃刀 (Occam’s Razor) 词性: 名词短语 释义: 如无必要,勿增实体。在众多假设中,应该选择假设最少的那个。 例句: “你的理论太过复杂,不妨用奥卡姆剃刀修剪一下。” 解释: 这是 14 世纪英国哲学家威廉·奥卡姆提出的理论,强调简单性原则。在科学研究中被广泛应用,启发人们追求优雅简洁的解释。 罗素的茶壶 (Russell’s Teapot) 词性: 名词短语 释义: 提出无法证伪的论断,举证责任在于提出者而非质疑者。 例句: “你说宇宙中有一个看不见的茶壶在绕太阳运转?这让我想起了罗素的茶壶。” 解释: 哲学家伯特兰·罗素用这个比喻来说明:对于无法证实也无法证伪的说法,我们没有相信的理由。 第四面墙 (The Fourth Wall) 词性: 名词短语 释义: 表演艺术中虚构世界与现实世界之间的想象屏障。 例句: “当演员突然对观众说话时,第四面墙被打破了。” 解释: 源自戏剧理论,现广泛应用于影视、游戏等领域,指虚构角色意识到自己身处作品中的现象。 皮格马利翁效应 (Pygmalion Effect) 词性: 名词短语 释义: 期望能够改变一个人的行为从而影响最终结果。 例句: “老师对这个学生寄予厚望,最终通过皮格马利翁效应,他真的有了显著进步。” 解释: 源自希腊神话,现用于心理学,说明期望可以成为一种自我实现的预言。 柏拉图洞穴寓言 (Plato’s Cave) 词性: 名词短语 释义: 人们往往只看到现实的投影而非真相本身。 例句: “大多数人都活在柏拉图的洞穴里,只看到墙上的影子。” 解释: 柏拉图《理想国》中的著名寓言,探讨认知的局限性和真理的本质。 ...

June 16, 2025 · 10 min