昨天一口气面了3家前端岗,结果全凉了...

我提前准备了半个月,八股文背得滚瓜烂熟,Vue响应式原理、Event Loop、浏览器缓存策略倒背如流。结果一天三场面试,场场被问懵,面完出来脑子都是嗡嗡的。

先简单交代一下我的情况:5年前端经验,主要技术栈是Vue2/3 + React,做过电商、中后台项目,自认为基础还算扎实。这次想跳槽去个大厂或者中型公司,薪资期望35k左右。结果现实给我狠狠上了一课!

第一场,某二线大厂,一面就挂了。

面试官上来没问八股,直接扔了个场景:

“我们有个活动页,双11高峰期预估PV 200万+,页面里有十几个弹窗组件,每个弹窗都有独立的业务逻辑和样式。现在的问题是,首屏加载很慢,用户滚动时卡顿明显。你从工程化、组件设计、渲染优化三个角度,给一套完整的优化方案。”

我当场就有点懵。脑子里想的都是“代码分割、按需加载、虚拟滚动”这些零散的点,但串不成一个完整的方案。面试官追问“弹窗组件怎么设计能减少渲染开销”,我答得磕磕巴巴,最后他礼貌地说“先这样吧”。

第二场,某独角兽,二面挂了。

这一轮面试官更直接,给了一个在线coding的场景:

“这是我们的商品列表页,目前用的是传统分页,用户反馈翻页体验不好。现在需要改造成滚动加载无限列表,但要考虑:1. 列表数据可能达到5000+条;2. 每个item有图片和复杂的样式;3. 需要保证滚动丝滑,内存不爆炸。写一个核心实现思路,并说明关键点的技术选型。”

我写了虚拟滚动的方案,用useRef + 滚动监听 + 动态渲染可视区。面试官反问:“你的方案在快速滚动时会有白屏问题吗?怎么解决?如果每个item高度不固定呢?如果用React/Vue的框架,怎么避免重绘性能问题?” 一连串追问下来,我额头开始冒汗,回答得越来越没底气。

第三场,某中厂,一面就挂了。

这次面试官问得更“业务导向”:

“假设我们要做一个低代码搭建的后台页面,用户可以通过拖拽组件生成页面。你会怎么设计整个前端架构?组件协议怎么定义?渲染引擎怎么实现?如何保证产出页面的性能?如何支持组件的版本管理和灰度发布?”

这已经不是背八股能解决的了,需要的是架构思维 + 业务场景深度 + 工程化落地经验。我勉强说了一些组件注册、物料库的概念,但明显深度不够,面试官没有再追问,场面一度很尴尬。

三场下来,我最大的感受就是——

现在前端面试的风向,已经完全变了。

八股文问得越来越少,场景题成了绝对的主流。面试官不再满足于你知道“什么是虚拟DOM”、“Vue和React的区别是什么”,他们想听的是:

  • 给你一个真实业务场景,你能不能拆解问题、设计方案、落地实现、评估效果
  • 你知道性能优化,但你能不能在具体场景下给出可执行的优化路径
  • 你会用框架,但你有没有思考过组件怎么设计才能复用、可维护、低耦合
  • 你做过项目,但你能不能说清楚技术选型的依据、踩过的坑、最终的效果数据

我发现,现在的大厂和中大型公司,面试套路越来越趋同:

  1. 场景题替代八股题——不再问“什么是闭包”,而是问“这段代码内存泄漏了,你排查思路是什么?”
  2. 深度追问替代浅层问答——你说“用虚拟滚动优化长列表”,他追问“高度不固定怎么办?快速滚动白屏怎么办?列表里有iframe怎么办?”
  3. 工程化能力成为分水岭——不会配置Webpack/Vite、不懂CI/CD、没做过性能监控体系,很难过二面
以下项目场景题: https://github.com/encode-studio-fe-coder/natural_traffic/wiki/scan_material3
  • 1.请求失败会弹出一个 toast,如何保证批量请求失败,只弹出一个 toast
  • 2.如何减少项目里面 if-else
  • 3.babel-runtime 作用是啥
  • 4.如何实现预览 PDF 文件
  • 5.如何在划词选择的文本上添加右键菜单(划词:鼠标滑动选 择一组字符,对组字符进行操作)
  • 6.富文本里面,是如何做到划词的(鼠标滑动选择一组字 符,对组字符进行操作)?
  • 7.如何做好前端监控方案
  • 8.如何标准化处理线上用户反馈的问题
  • 9.px 如何转为 rem
  • 10.浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制

  • 11.cookie 可以实现不同域共享吗
  • 12.axios 是否可以取消请求
  • 13.前端如何实现折善面板效果?
  • 14.dom 里面,如何判定a元素是否是b元素的子元
  • 15.判断一个对象是否为空,包含了其原型链上是否有自定义数据或者方法。该如何判定?
  • 16.js如何判空?「空」包含了:空数组、空对象、空字符 串、0、undefined、nul、空 map、空set,都属于为空数据
  • 17.css 实现翻牌效果
  • 18.flex:1代表什么
  • 19.一般是怎么做代码重构的
  • 20.如何清理源码里面没有被应用的代码,主要是JS、TS、 CSS 代码

  • 21.前端应用 如何做国际化?
  • 22.应用如何做应用灰度发布
  • 23.[微前端] 为何通常在 微前端 应用隔离不选择 iframe 万案
  • 24.[微前端] Qiankun 是如何做 JS 隔离的
  • 25.「微前端]微前端架构一般是如何做 JavaScript隔离
  • 26.[React]循环渲染中 为什么推荐不用 index 做 key
  • 27.[React]如何避免使用 context 的时候,引起整个挂载节 点树的重新渲染!
  • 28.前端如何实现截图?
  • 29.当QPS达到峰值时,该如何处理?
  • 30.js 超过 Number 最大值的数怎么处理?

  • 31.使用同一个链接,如何实现 PC 打开是 web 应用、手机打 开是一个 H5 应用?
  • 32.如何保证用户的使用体验
  • 33.如何解决页面请求接口大规模并发问题
  • 34.设计一套全站请求耗时统计工具
  • 35.大文件上传了解多少
  • 36.H5 如何解决移动端适配问题
  • 37.站点一键换肤的实现方式有哪些?
  • 38.如何实现网页加载进度条?
  • 39.常见图片懒加载方式有哪些?
  • 40.cookie 构成部分有哪些

  • 41.扫码登录实现方式
  • 42.DNS 协议了解多少
  • 43.函数式编程了解多少?
  • 44.前端水印了解多少?
  • 45.什么是领域模型
  • 46.一直在 window 上面挂东西是否有什么风险
  • 47.深度 SEO优化的方式有哪些,从技术层面来说
  • 48.小程序为什么会有两个线程
  • 49.web 应用中如何对静态资源加载失败的场景做降级处理
  • 50.html中前缀为 data-开头的元素属性是什么?

  • 51.移动端如何实现上拉加载,下拉刷新?
  • 52.如何判断dom元素是否在可视区域
  • 53.前端如何用 canvas 来做电影院选票功能
  • 54.如何通过设置失效时间清除本地存储的数据?
  • 55.如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用
  • 56.用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数
  • 57.package.json 里面 sideEffects 属性的作用是啥
  • 58.script 标签上有那些属性,分别作用是啥?
  • 59.为什么 SPA应用都会提供一个 hash 路由,好处是什么?
  • 60.[React]如何进行路由变化监听

  • 61.单点登录是是什么,具体流程是什么
  • 62.web 网页如何禁止别人移除水印
  • 63.用户访问页面白屏了,原因是啥,如何排查?
  • 64.[代码实现JS 中如何实现大对象深度对比
  • 65.如何理解数据驱动视图,有哪些核心要素?
  • 66.vue-cli 都做了哪些事儿,有哪些功能?
  • 67.s 执行 100万个任务,如何保证浏览器不卡顿?
  • 68.JS放在head里和放在body里有什么区别?
  • 69.Eslint 代码检查的过程是啥?
  • 70.虚拟混动加载原理是什么,用s 代码简单实现一个虚拟滚动加加载

  • 71.[React]react-router和原生路由区别
  • 72.html的行内元素和块级元素的区别
  • 73.介绍-requestldleCallback api
  • 74.documentFragment api是什么,有哪些使用场景?
  • 75.git pul 和 git fetch 有啥区别?
  • 76.前端如何做 页面主题色切换
  • 77.前端视角-如何保证系统稳定性
  • 78.如何统计长任务时间、长任务执行次数
  • 79.V8 里面的 川T 是什么?
  • 80.用 JS 写一个 cookies 解析函数,输出结果为一个对象!

  • 81.vue 中 Scoped styles 是如何实现样式隔离的,原理是啥?
  • 82.样式隔离方式有哪些
  • 83.在J中,如何解决递归导致栈溢出问题?
  • 84.站点如何防止爬虫?
  • 85.ts 项目中,如何使用 node_modules 里面定义的全局类型 包到自己项目 src 下面使用?
  • 86.不同标签页或窗口间的 【主动推送消息机制】 的方式有哪 (不借助服务端)?
  • 87.Reacy]在 react 项目开发过程中,是否可以不用 react- router,使用浏览器原生 history路由来组织页面路由?
  • 88.在表单校验场景中,如何实现页面视口滚动到报错的位置
  • 89.如何一次性渲染十万条数据还能保证页面不卡顿
  • 90.[webpack]打包时 hash 码是如何生成的

  • 91.如何从 0到1搭建前端基建
  • 92.你在开发过程中,使用过哪些 TS 的特性或者能力?
  • 93.js 的加载会阻塞浏览器渲染吗?
  • 94.浏览器对队头阻塞有什么优化?
  • 95.webpack 项目中通过 script 标签引入资源,在项目中如何处理?
  • 96.应用上线后,怎么通知用户刷新当前页面?
  • 97.Eslint 代码检查的过程是啥?
  • 98.HTTP是一个无状态的协议,那么web应用要怎么保持用户的登录态呢?
  • 99.如何检测网页空闲状态(一定时间内无操作)
  • 100.为什么 vite 速度比 Webpack 快?

  • 101.列表分页,快速翻页下的竞态问题
  • 102.JS 执行 100 万个任务,如何保证浏览器不卡顿?
  • 103.git 仓库迁移应该怎么操作
  • 104.如何禁止别人调试自己的前端页面代码?
  • 105.web 系统里面,如何对图片进行优化?
  • 106.0Auth2.0 是什么登录方式
  • 107.单点登录是如何实现的?
  • 108.常见的登录鉴权方式有哪些?
  • 109.需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?
  • 110.vite 和 webpack 在热更新上有啥区别?

  • 111.封装一个请求超时,发起重试的代码
  • 112.前端如何设置请求超时时间 timeout
  • 113.nodeis 如何充分利用多核 CPU?
  • 114.后端一次性返回树形结构数据,数据量非常大,前端该如何处理?
  • 115.你认为组件封装的一些基本准则是什么?
  • 116.页面加载速度提升(性能优化) 应该从哪些反向来思考?
  • 117.前端日志埋点 SDK 设计思路
  • 118.token 进行身份验证了解多少?
  • 119.在前端应用如何进行权限设计?
  • 120.[低代码】代码平台一般渲染是如何设计的?

  • 121.[低代码】代码平台一般底层协议是怎么设计的
  • 122.[Webpack]有哪些优化项目的手段?
  • 123.IndexedDB 存储空间大小是如何约束的
  • 124.浏览器的存储有哪些
  • 125.[Webpack]如何打包运行时chunk,且在项目工程 中,如何去加载这个运行时chunk?
  • 126,为何现在市面上做表格渲染可视化技术的,大多数都是 canvas ,而很少用svg的?
  • 127.在你的项目中,使用过哪些webpack plugin,说一下他们的作用
  • 128.在你的项目中,使用过哪些webpack loader,说一下他们的作用
  • 129.[React]如何避免不必要的渲染?
  • 130.全局样式命名冲突和样式覆盖问题怎么解决?

  • 131.[React]如何实现专场动画?
  • 132.[React]从 React 层面上,能做的性能优化有哪些?
  • 133.[vue]中为何不要把 v-if和 v-for 同时用在同一个元素 上,原理是什么?
  • 134.将静态资源缓存在本地的方式有哪些?
  • 135.SPA首屏加载速度慢的怎么解决
  • 136.axios 是如何区分是 nodejs 环境还是 浏览器环境的?
  • 137.如何拦截 web 应用的请求
  • 138.前端有哪些跨页面通信方式?
以上: https://github.com/encode-studio-fe-coder/natural_traffic/wiki/scan_material3

Read more

实现Python将csv数据导入到Neo4j

实现Python将csv数据导入到Neo4j

目录 一、获取数据集 1.1 获取数据集 1.2 以“记事本”方式打开文件 1.3  另存为“UTF-8”格式文件 1.4 选择“是” 二、 打开Neo4j并运行 2.1 创建新的Neo4j数据库 2.2 分别设置数据库名和密码 编辑 2.3 启动Neo4j数据库 2.4 打开Neo4j数据库  2.5 运行查看该数据库是否为空 三、打开Python创建项目  3.1 创建一个包,存项目 3.2 创建一个项目 3.3 检查自己的依赖是否完全

具身智能演示深解---从盲行到跑酷:深度视觉如何赋予足式机器人极限运动能力

具身智能演示深解---从盲行到跑酷:深度视觉如何赋予足式机器人极限运动能力

1. 引言:为什么需要深度视觉 在过去数年间,基于强化学习的足式机器人运动控制取得了长足进展。早期的工作——以ETH的legged_gym框架和IsaacGym并行训练环境为代表——已经证明,仅依靠本体感知(关节编码器、IMU等)就能训练出在连续复杂地形上鲁棒行走的策略。这类方法通常被称为"Blind Locomotion",即机器人不借助任何外部视觉传感器,完全依赖对自身状态的感知来适应地形变化。DreamWaQ(KAIST, ICRA 2023)等工作进一步证明,通过非对称Actor-Critic框架配合隐式地形估计,四足机器人甚至可以在户外多样地形上实现长距离鲁棒行走。 然而,Blind Locomotion存在一个根本性的局限:机器人无法预知前方地形的具体形态。当面对跳箱、深沟、高台阶等需要提前规划动量和轨迹的极限地形时,纯本体感知的策略往往力不从心。跑酷(Parkour)场景要求机器人在接近障碍物之前就判断出障碍物的高度、宽度和距离,并据此调整步态、积累动量、选择起跳时机。这些决策必须依赖对前方环境的主动感知——深度视觉由此成为从"能走"到"能跑酷&

Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战 前言 在进行 Flutter for OpenHarmony 的去中心化应用(DApp)或加密货币钱包开发时,支持标准的 WalletConnect 协议是链接用户钱包的关键。wallet_connect 是该协议的 Dart 实现,它能让你的鸿蒙 App 安全地与 MetaMask、Trust Wallet 等钱包建立双向加密连接。本文将探讨如何在鸿蒙系统下构建安全、稳定的 Web3 授权流程。 一、原理解析 / 概念介绍 1.1 基础原理

Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

Rokid 手势识别技术深度解析:解锁 AR 无接触交互的核心秘密

引言 在聊手势识别前,咱们先搞清楚:Rokid是谁?它为啥能把AR手势做得这么自然? Rokid是国内AR(增强现实)领域的“老兵”了,从2014年成立就盯着一个目标——让AR走进日常。你可能见过它的产品:能戴在脸上的“AR眼镜”Max Pro、能揣在兜里的“AR主机”Station 2、适合专业场景的“Station Pro”,这些设备不是用来“炫技”的,而是想让咱们摆脱手机、手柄的束缚,直接用手“摸”虚拟东西。 而手势识别,就是Rokid给AR设备装的“最自然的遥控器”——比如调大虚拟屏幕像捏橡皮一样捏合手指,翻页像翻书一样挥手。但不同设备、不同开发需求,需要搭配不同版本的SDK(软件开发工具包),这就像“不同型号的手机要装对应版本的APP”。 一、基础认知:先选对版本,避免开发走弯路 Rokid手势识别技术随SDK版本迭代持续优化,不同版本适配的Unity(开发工具)