前端八股文-高频面试题 - 教程

news/2025/11/23 19:17:28/文章来源:https://www.cnblogs.com/ljbguanli/p/19261277

前端八股文-高频面试题 - 教程

HTML & CSS 篇

1. 盒模型

问:说说CSS盒模型,以及box-sizing的作用?

2. 居中对齐

问:如何实现一个元素的水平垂直居中?(至少说出3种)

  • Flexbox(首选)
    .parent {
    display: flex;
    justify-content: center;
    align-items: center;
    }
  • Grid
    .parent {
    display: grid;
    place-items: center;
    }
  • 定位 + Transform
    .child {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    }
3. BFC

问:什么是BFC?如何触发?有什么作用?

  • 定义:块级格式化上下文,一个独立的渲染区域。
  • 触发条件float不为noneoverflow不为visibledisplay: inline-block/flex/table-cellposition: absolute/fixed等。
  • 作用
    1. 清除浮动(防止高度塌陷)。
    2. 防止外边距重叠
    3. 隔离元素,阻止元素被浮动元素覆盖。
4. 选择器与优先级

问:CSS选择器的优先级如何计算?

  • !important > 行内样式 > ID选择器 > 类/伪类/属性选择器 > 元素/伪元素选择器 > 通配符
  • 计算规则(a, b, c, d)
    • a: 行内样式
    • b: ID选择器个数
    • c: 类、伪类、属性选择器个数
    • d: 元素、伪元素选择器个数
    • 从左到右逐级比较

JavaScript 篇(核心中的核心)

1. 事件循环

问:说出下面代码的输出顺序

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);
// 输出:1, 4, 3, 2
  • 原理
    1. 同步代码(宏任务)先执行:1, 4
    2. 清空微任务队列Promise.then -> 3
    3. 执行下一个宏任务setTimeout -> 2
2. 闭包

问:什么是闭包?有什么作用和缺点?

  • 定义:函数能够记住并访问其词法作用域,即使该函数在其作用域之外执行。
  • 作用
    1. 创建私有变量和方法(模块模式)。
    2. 实现柯里化和函数式编程
  • 缺点: improper use can lead to 内存泄漏
3. this 指向

问:如何确定函数中this的指向?

  1. 默认绑定:严格模式undefined,非严格模式window
  2. 隐式绑定obj.foo() -> this指向obj
  3. 显式绑定call/apply/bind -> 指向第一个参数。
  4. new绑定:指向新创建的对象。
  5. 箭头函数:继承定义时外层作用域的this无法被改变
4. 原型与原型链

问:说说原型链的理解?

5. 手写代码(必考!)
  • 手写 Promise.all
    Promise.myAll = function(promises) {
    return new Promise((resolve, reject) => {
    const results = [];
    let count = 0;
    promises.forEach((promise, i) => {
    Promise.resolve(promise).then(res => {
    results[i] = res;
    if (++count === promises.length) resolve(results);
    }).catch(reject);
    });
    });
    };
  • 手写 bind
    Function.prototype.myBind = function(context, ...args) {
    const fn = this;
    return function(...innerArgs) {
    return fn.apply(context, [...args, ...innerArgs]);
    };
    };
  • 手写防抖与节流
  • 手写深拷贝

Vue 篇

1. Vue2 vs Vue3 响应式原理
2. v-if vs v-show
  • v-if:真正的条件渲染,元素会销毁/创建。切换开销大
  • v-show:通过CSS display控制。初始渲染开销大
  • 使用场景:频繁切换用v-show,运行时条件很少改变用v-if
3. key 的作用
4. Vue 组件间通信方式
  1. Props / $emit:父子。
  2. v-model:语法糖。
  3. $parent / $children / refs:直接访问(不推荐)。
  4. Event Bus:任意组件(Vue3用mitt)。
  5. Provide / Inject:祖孙。
  6. Vuex / Pinia:状态管理。
5. nextTick 原理

React 篇

1. React 事件机制
2. useState vs useEffect
  • useState:用于在函数组件中添加状态。更新是异步的
  • useEffect:用于执行副作用。
    • []:只在挂载后执行一次。
    • [dep]:在挂载后和dep变化后执行。
    • 返回函数:用于清理(如取消订阅、清除定时器)。
3. useCallback & useMemo
  • useCallback:缓存函数本身,防止因函数引用变化导致子组件不必要的重渲染。
  • useMemo:缓存计算结果,避免每次渲染都进行高开销计算。
4. 受控组件 vs 非受控组件
5. 虚拟DOM & Diff算法
  • 虚拟DOM:轻量的JS对象,描述真实DOM。
  • Diffing策略
    1. 同级比较,不跨级。
    2. 不同类型的元素会拆卸重建。
    3. 同类型的元素会复用,只更新变化的属性。
    4. 列表使用**key**进行高效对比。

性能优化 & 网络 篇

1. 性能优化指标
2. 优化手段
  • 加载:代码分割、懒加载、图片优化、CDN、HTTP/2、preload/preconnect
  • 渲染:避免布局抖动、使用transform/opacity做动画、分解长任务。
  • 缓存:强缓存(Cache-Control: max-age)、协商缓存(Etag)。
3. 从输入URL到页面显示发生了什么?
  1. DNS解析:将域名解析为IP地址。
  2. TCP连接:三次握手。
  3. 发送HTTP请求
  4. 服务器处理并返回响应
  5. 浏览器解析渲染
    • 解析HTML构建DOM树。
    • 解析CSS构建CSSOM树。
    • 合并成渲染树。
    • 布局。
    • 绘制。
  6. TCP断开连接:四次挥手。
4. HTTP 缓存
  • 强缓存Cache-Controlmax-age)、Expires状态码200
  • 协商缓存Last-Modified/If-Modified-SinceEtag/If-None-Match状态码304

这份清单覆盖了前端面试90%以上的高频考点。建议你不仅要记住答案,更要理解其背后的原理,并能用简洁的语言清晰地表达出来。祝你面试顺利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025西北地区地埋式污水处理设备厂家最新top5推荐,宁夏、新疆、甘肃、陕西四省,污水处理设备品牌选型指南

随着水环境治理需求的不断升级,地埋式污水处理设备以其高效、节能、占地面积小等优势,成为污水处理领域的重要选择。本榜单基于技术先进性、产品性能、应用案例、售后服务四大维度,结合行业调研数据,权威解析2025年…

多尺度特征图

多尺度特征图就是 “同一张输入图,在网络不同深度得到的一组空间分辨率不同、语义级别不同的特征图”。为什么需要它小目标 → 需要高分辨率特征(细节多)大目标 → 需要大感受野、高语义特征(上下文多)单尺度图只…

2024软工K班结对编程任务

https://gitee.com/stone-integrity-universe/rollcall-system https://www.cnblogs.com/scyskh/p/19259789 https://www.bilibili.com/video/BV12TUwBKEas/ 一、结对探索 1.1 队伍基本信息 结对编号:2526;队伍名称:…

基于python大材料技术的医疗数据分析与研究

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

java linux 搭建

搭建一个 Java 环境在 Linux 上是一个常见的任务,下面我将分步骤介绍如何在 Linux 上搭建 Java 开发环境,包括 JDK、JRE、IDE(如 IntelliJ IDEA 或 Eclipse)以及 Maven 的安装。一、安装 Java Development Kit (JD…

实用指南:各种各样的Self-attention学习上(第二十周周报)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

人工智能之数据分析 numpy:第八章 数组广播

人工智能之数据分析 numpy:第八章 数组广播人工智能之数据分析 numpy 第八章 数组广播@目录人工智能之数据分析 numpy前言一、什么是广播?✅ 核心优势:二、广播规则(必须全部满足)三、广播示例详解示例 1:标量与…

20251123 之所思 - 人生如梦

20251123 之所思今天做的好的事情:1. 终于将下周给老板的汇报材料做完了,虽然很艰难,但是自己没有逃避,而是一页一页的去整理数据,做图表。同时也在周末将两位候选人的面试也做完了,结果也反馈给了HR,上周遗留…

人工智能之数据分析 numpy:第十章 副本视图

人工智能之数据分析 numpy:第十章 副本视图人工智能之数据分析 numpy 第十章 副本视图@目录人工智能之数据分析 numpy前言一、核心概念二、如何判断是副本还是视图?三、常见操作:返回视图 vs 副本✅ 返回 视图 的操…

11月23日总结 - 作业----

11月23日总结学习英语六级内容

Node.js 端的接口签名处理

用MD5,SHA256,HMAC-SHA256,RSA-SHA256签名算法 适用场景 博客或网站接口:保护评论提交,数据查询等接口,防止恶意请求或数据篡改 前后端分离项目:确保前端发送的请求未被中间人篡改,验证请求来源合法性 服务间调…

2025年西北地区怎么选智慧水务系统服务商?陕西、宁夏、新疆、甘肃,优先选这些品牌。

随着水资源管理智能化升级加速,智慧水务系统已成为构建现代水治理体系的核心支撑。本榜单基于技术创新性、场景适配能力、服务保障体系三大维度,结合行业用户调研与项目实施数据,深度解析国内领先智慧水务服务商综合…

ABC433 解题报告

A 略。 B 略。 C 提取极长同色段。 D 考虑一个数在作为操作时的第一个数和第二个数时对余数的贡献。 E 先判掉 \(X\) 或 \(Y\) 中有重复元素的情况。 因为限制和最大值有关,考虑倒序填入每一个数 \(i\)。接下来分类讨…

k8s中的微服务 - 教程

k8s中的微服务 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

20232402 2025-2026-1 《网络与系统攻防技术》实验六实验报告

20232402 2025-2026-1 《网络与系统攻防技术》实验六实验报告 1.实验内容 1.1 发现Metasploitable2靶机,并对其进行端口扫描、漏洞扫描; 1.2 利用Vsftpd源码包后门漏洞; 1.3 利用SambaMS-RPC Shell命令注入漏洞; 1…

P2949 [USACO09OPEN] Work Scheduling G 题解

注意到反悔贪心的题基本没怎么做过。 P2949 [USACO09OPEN] Work Scheduling G 思路 注意到这是一个二维的东西,因此可能先去想 DP。但是注意到限制(时间)与贡献是独立的,因此考虑去扫时间而去维护贡献。 更准确地说…

the success of Japan

As the worlds most extremely violent country in English way become a forced peaceful country. The reason for a persons success lies in the diversity of thought.

预训练的卷积神经网络与普通卷积神经网络有什么区别

核心差别只有一点:“预训练”的权重已经在大规模数据上收敛过一次,而普通(从零开始)网络的权重仍是随机分布的。 除此之外,网络结构、前向计算、参数量、输入输出格式完全一样;差异只体现在“权重的初始状态”和…

人工智能之数据分析 numpy:第九章 数组运算

人工智能之数据分析 numpy:第九章 数组运算人工智能之数据分析 numpy 第九章 数组运算@目录人工智能之数据分析 numpy前言一、基础算术运算(Element-wise Arithmetic)1. 基本运算符(支持广播)2. 广播(Broadcasti…

Faster R-CNN中的Backbone,输入图片时,是标注过的图片吗

不是。Faster R-CNN 的 Backbone 在“前向推理阶段”只收一张裸图(像素矩阵),任何标注(框、类、掩码)都不进网络。标注只在“训练阶段计算损失”时用到,而且只跟 RPN 和 RoI Head 打交道,Backbone 本身仍然只看…