前端八股文面经大全: 蓝色光标前端一面OC(2026-03-23)·面经深度解析

news2026/3/25 21:22:36
前言大家好我是木斯佳。相信很多人都感受到了在AI浪潮的席卷之下前端领域的门槛在变高纯粹的“增删改查”岗位正在肉眼可见地减少。曾经热闹非凡的面经分享如今也沉寂了许多。但我们都知道市场的潮水退去留下的才是真正在踏实准备、努力沉淀的人。学习的需求从未消失只是变得更加务实和深入。这个专栏的初衷很简单拒绝过时的、流水线式的PDF引流贴专注于收集和整理当下最新、最真实的前端面试资料。我会在每一份面经和八股文的基础上尝试从面试官的角度去拆解问题背后的逻辑而不仅仅是提供一份静态的背诵答案。无论你是校招还是社招目标是中大厂还是新兴团队只要是真实发生、有价值的面试经历我都会在这个专栏里为你沉淀下来。专栏快速链接温馨提示市面上的面经鱼龙混杂甄别真伪、把握时效是我们对抗内卷最有效的武器。面经原文内容面试公司蓝色光标面试时间近期用户上传于2026-03-23面试岗位前端已OC⏱️面试时长未提及项目拷打20分钟面试体验面试官温柔引导型上午面完下午OC❓面试问题拷打项目20min ing…一般用TS里哪些东西了解泛型吗平时用哪些AI呢在你平时的工作中大概占比是多少了解margin的重叠问题吗这个问题怎么解决原理是什么image标签是行内元素还是块级元素讲两个实现div水平垂直居中的方法如何实现一个抽奖圆盘如何实现一个文本点开收起展开的那种效果OK你说的transform会触发重排吗那position absolute绝对定位之后会触发吗判断object为空的方法有哪些setInterval和setTimeout区别JS数组方法里边有哪些改变原数组的方法sessionStorage和localStorage和cookie的区别cookie什么时候过期v-if和v-show的区别如果现在有一个tab切换你会选择用v-if还是v-show了解keep-alive吗Vue里面key的作用Vue组件传值的方法有哪些手撕数组转树面试官建议思路挺清楚的需要扎实前端基础来源牛客网 耳朵听不见deaf木木有话说刷前先看这是一份非常典型的中小厂/业务型公司前端一面面经整体难度适中偏基础但覆盖面广。面试官是引导型风格会针对你的回答追问细节比如第8题追问重排问题。用户上午面完下午就OC说明只要基础扎实、思路清晰通过率很高。这份面经非常适合校招或实习同学查漏补缺检验自己的前端基础是否牢固。 蓝色光标前端一面·深度解析面试整体画像维度特征面试风格项目驱动 基础扎实 引导追问难度评级⭐⭐⭐三星基础为主偶有深度追问考察重心CSS布局与渲染、JS基础、Vue核心概念、手写算法特殊之处面试官会追问细节如transform是否重排考察理解深度而非背诵逐题深度解析一、项目拷打20分钟回答思路项目介绍不是背流水账而是展示你的技术决策和解决问题的能力。面试官想通过项目了解你的实际能力。建议准备结构项目背景做什么的用户是谁解决了什么问题技术选型为什么选这个框架/库有没有对比过其他方案核心难点遇到的最难的技术问题是什么怎么解决的你的贡献你具体负责了哪些模块代码量效果优化成果性能提升了多少用户体验有哪些改进常见追问点“这个功能你是怎么实现的” → 准备核心代码逻辑“为什么不用XX方案” → 准备技术选型对比“如果用户量暴增怎么优化” → 准备扩展性思考二、TypeScript使用与泛型回答思路从实际使用角度回答展现你对TS的理解深度而非API背诵。常用TS特性类型注解const name: string hello接口/类型别名interface User { name: string; age: number }枚举enum Status { Pending, Success, Error }泛型让组件/函数可以适用多种类型保持类型安全泛型核心理解// 泛型是什么—— 类型的“参数”functionidentityT(arg:T):T{returnarg}// 使用时不指定类型TS自动推断identity(hello)// 推断为 stringidentity(123)// 推断为 number// 实际场景1API响应封装interfaceApiResponseT{code:numberdata:Tmessage:string}// 使用时指定具体类型typeUserResponseApiResponse{id:number;name:string}// 实际场景2数组操作functiongetFirstT(arr:T[]):T|undefined{returnarr[0]}constfirstgetFirst([1,2,3])// 类型推断为 number | undefined// 实际场景3约束泛型确保有特定属性interfaceHasLength{length:number}functionlogLengthTextendsHasLength(arg:T):T{console.log(arg.length)returnarg}logLength(hello)// 字符串有length ✅logLength([1,2,3])// 数组有length ✅// logLength(123) // 数字无length ❌ 编译报错回答要点泛型的本质是“类型的参数化”让代码在保持类型安全的同时提高复用性。三、AI工具使用情况回答思路诚实回答同时展示你如何利用AI提效而非依赖AI。常见AI工具Cursor / Copilot代码补全、生成样板代码ChatGPT / Claude调试问题、学习新知识、代码审查通义灵码 / CodeGeeX国内替代方案使用占比建议回答“20%-30%”并强调“AI是辅助工具核心逻辑和架构还是自己把控”。加分回答“我会用AI快速生成重复性代码如CRUD但复杂业务逻辑和架构设计会自己写同时会审查AI生成的代码是否符合项目规范。”四、margin重叠问题回答思路先解释什么是margin重叠再说解决方案最后说原理。问题定义相邻块级元素的上下margin会合并取较大值而非相加。.box1{margin-bottom:20px;}.box2{margin-top:30px;}/* 实际间距为30px而非50px */解决方案触发BFCBlock Formatting Context给其中一个元素添加overflow: hidden或display: flow-root添加边框或内边距border: 1px solid transparent或padding: 1px使用flex/grid布局现代布局方式天然避免margin重叠原理BFC内部的元素与外部的margin不重叠。触发BFC的条件包括overflow: hidden/auto、float、position: absolute/fixed、display: inline-block/flex/grid等。五、image标签的display类型回答img是行内元素但它有行内元素不具备的宽度高度属性属于可替换行内元素。关键点默认display: inline可以设置宽高普通行内元素不行受line-height影响会有底部留白常通过display: block解决多个img之间会有空格换行符产生的空格六、div水平垂直居中方法回答两个常用方法方法1flex布局推荐.parent{display:flex;justify-content:center;align-items:center;}方法2绝对定位transform.parent{position:relative;}.child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}补充grid布局、table-cell等也可实现但flex和绝对定位最常用。七、抽奖圆盘实现回答思路核心是圆盘绘制 抽奖逻辑 旋转动画。实现方案Canvas绘制动态绘制扇形性能好适合复杂奖品CSS/SVG适合固定奖品数量// 核心思路classLuckyWheel{constructor(prizes){this.prizesprizes// 奖品数组this.angle0// 当前角度this.anglePerPrize360/prizes.length}// 抽奖spin(callback){consttargetPrizethis.getRandomPrize()consttargetAnglethis.getTargetAngle(targetPrize)constrotateAngle360*5targetAngle// 多转几圈// 执行旋转动画this.animate(rotateAngle,(){callback(targetPrize)})}// 根据抽中的奖品计算停止角度getTargetAngle(prize){constprizeIndexthis.prizes.indexOf(prize)// 让奖品指针指向抽中的区域return360-(prizeIndex*this.anglePerPrizethis.anglePerPrize/2)}}关键点随机算法要公平动画使用transformtransition实现考虑服务端验证防止作弊。八、文本收起展开效果 重排问题追问回答思路先说实现方式再回答重排/重绘的追问。文本收起展开实现.text{display:-webkit-box;-webkit-line-clamp:3;/* 最多显示3行 */-webkit-box-orient:vertical;overflow:hidden;}.expand{/* 展开时移除line-clamp限制 */-webkit-line-clamp:unset;}transform会触发重排吗不会。transform触发复合composite阶段跳过重排layout和重绘paint直接在GPU层合成性能最好。会触发重排的属性width、height、margin、padding、top/left等几何属性。会触发重绘的属性color、background-color等视觉属性。position: absolute会触发重排吗会。绝对定位元素脱离文档流改变其位置会影响其他元素吗不会直接影响但设置top/left等属性时仍会触发该元素自身的重排只是不会影响父级及兄弟元素的重排范围更小。回答要点重排一定导致重绘重绘不一定导致重排尽量用transform/opacity做动画。九、判断对象为空的方法// 方法1Object.keys() 最常用functionisEmpty(obj){returnObject.keys(obj).length0}// 方法2JSON.stringify()JSON.stringify(obj){}// 方法3for...in 遍历functionisEmpty(obj){for(letkeyinobj){if(obj.hasOwnProperty(key))returnfalse}returntrue}// 方法4Object.getOwnPropertyNames()Object.getOwnPropertyNames(obj).length0// 注意事项以上方法都不能判断null/undefined需先判空functionisEmpty(obj){if(objnull)returntruereturnObject.keys(obj).length0}十、setInterval与setTimeout区别维度setTimeoutsetInterval执行次数执行一次重复执行时间精度执行前等待固定间隔触发风险无可能任务堆积前一次未完成后一次又触发关键点两者都受事件循环影响不保证精确时间setInterval可能导致回调堆积生产环境常用setTimeout递归实现轮询都要及时clear避免内存泄漏十一、改变原数组的数组方法会改变原数组的push()、pop()、shift()、unshift()splice()、sort()、reverse()fill()、copyWithin()不会改变原数组的concat()、slice()、map()、filter()、reduce()十二、存储方式区别与cookie过期维度cookielocalStoragesessionStorage容量4KB5-10MB5-10MB生命周期可设置过期时间永久手动清除标签页关闭即失效作用域同源 可设置path同源同源 同标签页自动携带是每次请求否否cookie过期时间通过Expires或Max-Age设置。如果不设置是会话级cookie浏览器关闭即失效。十三、v-if vs v-show维度v-ifv-show原理条件渲染真实销毁/创建CSS display切换初始渲染开销条件为false时不渲染无论条件都渲染切换开销高销毁重建低切换CSS适用场景切换频率低切换频率高tab切换选择v-show。因为tab切换频率高用v-show避免频繁创建销毁DOM性能更好。但如果tab内容非常复杂且初始化开销大可以结合keep-alive使用。十四、keep-alive作用缓存组件实例避免重复渲染。常用于列表详情切换、tab切换等场景。keep-alive component :iscurrentTab / /keep-alive关键属性include只有匹配的组件会被缓存exclude匹配的组件不会被缓存max最多缓存实例数生命周期被缓存组件会多出activated和deactivated钩子。十五、Vue中key的作用核心作用帮助Vue的虚拟DOM diff算法识别节点实现高效的列表更新。具体作用唯一标识节点让Vue知道哪些节点是稳定的避免就地复用导致的状态错乱如带状态的表单输入项优化性能减少不必要的DOM操作常见错误用index作为key当列表顺序变化时会导致错误的节点复用。十六、Vue组件传值方法方式方向适用场景props / emit父→子 / 子→父父子组件通信provide / inject祖先→后代跨多级组件eventBus任意简单跨组件易维护难Vuex / Pinia任意复杂状态管理$refs父→子实例调用子组件方法$parent / $children任意不推荐耦合高slot父→子模板内容分发十七、手撕数组转树题目将扁平数组转换为树形结构常见面试手写题// 输入constarr[{id:1,name:部门A,parentId:null},{id:2,name:部门B,parentId:1},{id:3,name:部门C,parentId:1},{id:4,name:部门D,parentId:2}]// 输出consttree{id:1,name:部门A,children:[{id:2,name:部门B,children:[{id:4,name:部门D}]},{id:3,name:部门C}]}// 解法O(n) 利用Map存储节点引用functionarrayToTree(arr,parentIdnull){constmapnewMap()consttree[]// 第一次遍历建立id到节点的映射for(constitemofarr){map.set(item.id,{...item,children:[]})}// 第二次遍历构建父子关系for(constitemofarr){constnodemap.get(item.id)if(item.parentIdparentId){tree.push(node)}else{constparentmap.get(item.parentId)if(parent){parent.children.push(node)}}}returntree}时间复杂度O(n)空间复杂度O(n)知识点速查表知识点核心要点TypeScript接口、枚举、泛型类型参数化margin重叠BFC解决方案、flex/grid布局水平垂直居中flex / 绝对定位transformtransform重排不触发跳过layout/paint直接composite对象判空Object.keys()、JSON.stringify()setInterval可能堆积常用递归setTimeout替代数组方法push/pop/splice/sort/reverse 改变原数组存储方式cookie(4KB/自动携带) vs storage(5MB)v-if vs v-show频率高用v-show频率低用v-ifkeep-alive缓存组件activated/deactivatedkey作用标识节点优化diff避免状态错乱组件传值props/emit、provide/inject、Vuex数组转树Map映射O(n)时间 最后一句蓝色光标这场一面考察的是前端工程师的基本功厚度。没有偏题怪题但每一道题都可能在追问中检验你的理解深度。用户能当天OC说明“扎实的基础 清晰的思路”永远是前端面试最硬的通货。技术广度决定你走多宽基础深度决定你走多稳。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…