2024前端40+场面试|实战盘点

夏草v 2024-09-20 10:03:01 阅读 86

331 部门架构调整,拥抱变化 拿到大礼包

从 2 月末一面 到 3 月末offer,历时两个月

阿里钉内网问了30人+,投递 20+次boss、内推公众号等 问了650+次,投递 70+简历2 个月 面试场次 40+

一、面试时间线

绿色背景为面试通过,后面进程没推进原因写在备注了

以下只是部分有记录的,肯定少写了一些

 

前期面了很多阿里系的部门,也是想利用还能用阿里钉多问问,但是整体下来 大部分的 hrg 卡学历(211 起步),后面阿里系的就直接不投不面了

其中一面、2 面至少有 4-5 个部门是过的 ,然后被 hrg hold 流程了,很寒心

前期杭州除了阿里系 其他机会太卷了,于是后面公司基本只面上海 的

二、面试核心问题(不区分公司)

以下未总结全、一些偏门问题没有纳入

一、vue|react框架与库

Vue 和 React 区别React 中点击一个按钮页面卡顿有哪些可能性Hook 底层原理Fiber 原理不同版本的 React 有哪些优化React 的并发优化React 组件通信Redux 通信、redux的中间件实现 Redux 的 hook 说下思路介绍 react16-18 每一版的更新,并解释为什么更新react19 主要想优化什么react没有 fiber 之前优化哪些问题不同组件内容没变都有 key 但是顺序变了是否重新渲染fiber 更核心的细节 fiber 分为哪些阶段 每个阶段干了什么事fiber 中 useEffect 哪个阶段 干了哪些事 执行力什么useLayoutEffect 和useEffect区别,useEffect怎么实现异步的useEffect 不写第二个参数的 场景和使用react 中 setState 后发生了什么

二、渲染机制与算法

页面渲染机制从输入 url 到页面渲染发生了什么 并根据不同阶段给出优化建议虚拟 DOM 说明Diff 算法虚拟 DOM

三、性能与优化

Webpack 全流程 优化、Plugin、Loader 怎么做的Webpack 打包优化react 全流程优化react、webpack 全流程优化怎么让打包小一点怎么让 webpack 更快前端监控指标 FID、FCP、CLS、LCP 等代表什么 怎么监控怎么优化

四、手写

手写防抖手写给出 2 个对象判断是否一个是另一个子集手写 求对象、数组的深度手写重复子串问题手写大数相加解释微任务 宏任务微任务排序 并解释微任务协商缓存和强缓存手写实现 eatMan、Lazyman手写控制最大并发手写 ajax 实现 promise手写 hook 实现 监听 div 宽高手写diff算法(给你新虚拟 dom、老虚拟 dom、页面真实 dom)手写 diff 实现最小策略更新页面 dom最长公共后缀 要求复杂度

五、前端工程与架构

介绍项目的难点介绍项目的架构画项目架构图前端模块化发展历史common.js 和 es6 的区别前端工程做了哪些事

六、其他

Ice 底层 SSR 怎么做的 SSG 怎么做的低代码怎么接入 Vue 的写法幽灵依赖是什么pnpm、yarn 是什么原理是什么npm run serve 发生了什么怎么实现复制带样式怎么实现文字中文字母输入过程中默认有空格低代码状态怎么管理、事件怎么串联起来的一个长期维护的项目如何实现可维护性 综合说明一个服务端项目 经常浏览器白屏 怎么解决,老项目不兼容的api很多纯 js 如何检查当前页面是否白屏纯 js 如何实现检测当前可视区域渲染完成函数式编程什么是副作用

三、总结-面试前基础准备

根据我 2024 年 40+次的面试时间线,很明显能看出来,后半段的面试,基本都能过,主要是 4 月份离职状态有充足时间复习了,所以我总结一下心得

(一) 资料整理

要不网上找最近 1 年的八股文,要不自己找最近 2 年题目,自己归纳总结答案。css、webpack、计算机网络这些 几年没变的东西可以 copy 高赞总结来背网上面经重点是看问的问题而不是答案

这里我入了大坑,之前背书图省事,网站找 pdf、或者掘金找高赞文章背 react,结果这些都是 2,3 年前的东西

react 17 事件池都取消了,这些资料还在说事件池的好处,对于 react、vue 最新的资料一定自己总结搜索,

就是你自己找到计算机网络的东西,请记住必须先理解再背诵。

背书占你复习时间 10%都不到,学习和理解能找到 70-80%

总结知识多问为什么? 寻根问底才能更好掌握,比如为什么有 promsie?为什么有 await ?为什么要有事件机制?为什么事件机制分宏任务和微任务? 为什么 promis额 归为微任务,setTimeout 是宏任务呢?

最后:你要保证 ,你总结的所有知识点 都是你理解透彻总结的,而不是 copy 外面来背诵的,

第一性原理背八股文

(二) 资料整理途径多|广

多用大模型帮你理解知识,比如通义千问、文心一言、chatgpt多使用抖音、b 站 找视频帮你学习 比如 http2、http3 为什么出现,有些3 分钟 b 站视频 ,比你自学 2 天还能让你透彻

(三) 八股文必须过一遍再面

想投简历面试了,先找个最近的面经问问自己 80%都能说出来吗,不能就滚回去背书,别浪费机会

任何面试前八股文是一定完全过一遍大部分八股文不是背书,而是先理解,抓住核心点

举例,http2 出现核心解决了 http1 的 http 队头堵塞,http3 核心解决 http2 的 tcp 堵塞,必须充分理解核心知识点,你再延展背诵其他东西

(四) 手写题

手写题分为三种

js 实习一些功能方法(控制并发、防抖、节流...,数组转树、树转数组)给一段代码清除输出(考察事件循环、this 的使用、构造函数等)leetcode 算法或相关变种

(五) 算法题

如果想尝试中大厂,leetcode hot 100 是必须要过一遍的,其次 codetop 勾选公司字节、按照频率排序,前 50 必刷的

起码你刷 50 题之后再开始面中大厂吧 ,不然就是浪费机会

(六) 搞透自己的项目

无论什么公司,总有 1-2 面肯定是深挖你的项目的

我项目核心难点|亮点是什么

什么是项目难点? 你google可能都搜不到答案的点

(七) 垃圾技术栈不要写

一些基础的技术栈最后不要强调,但是如果该岗位 jd 有要求,那 针对这个公司添加这个

uni-approuter 路由钩子axios后台管理 权限控制

(八) 准备多份简历

总结你最近几年的 项目经验按照技术栈、业务方向 大概能分成几大类

PC 端 web 页h5 移动端低代码混合开发小程序开发股票行情业务开发资讯类开发团队管理能力架构设计案例C 端移动端、pc 端页面B 端管理平台AI 产品相关

为什么要分类,因为不同的岗侧重点不同 你可以根据岗位按需投递

如某岗 招人就是纯粹 C端开发,那你写 C端开发就在简历筛选中 胜过写 后台管理的人

(九) 面试时间

尽量约在上午 11 点、下午 3-5 点,晚上 7,9 点早上太早面试官也难受,下午太早 昏昏欲睡,最后饭点后的 1h

四、总结-面试前项目

首先请使用一下 4 点 自己总结一遍

背景目标 期望目标(往往是比较模糊的)行动 (具体哪方面)结果(需要有实际案例和量化指标支撑)

每一个项目都要有项目亮点,并且要知道底层原理

哪怕你某个项目用了一点点微模块,那你微服务、微应用相关的知识必须熟练,不然这个项目不要写出来

项目亮点就是你在网上几乎搜不到的东西,比如我对渲染引擎做了优化,白屏检测做了插件如果一个项目你找不出任何亮点和难点,那么不要出现在你的描述|项目中,不然就是你的减分项

未完待续...

五、总结-面试中

自我介绍 5 分钟以内解决 主要以下核心信息

基础信息 姓名、毕业时间、第一份工作(如果经历多 只说明最近 1-2 份工作)最近一份工作,是干什么的,你的职责是什么,你职责下干了哪些具体的事,有什么产出

(一) 常见面试流程

一面(基本筛选,是否符合)

目前远程面试,很多公司一面属于筛选面

【问你的简历所有内容,主要项目经历】 看你的经历是否属实,因为约你面试就说明你简历项目 他们是认可的【问八股基础】常见的 react+webpack+计算机网络+纯 js 闭包、事件循环等

也存在一些公司,一面是老板指派小弟进行海选的流程,问你什么全看 这个面试官想问什么,没有固定套路,可能全八股、可能全项目、也可能写半小时笔试题

二面(深度探测,级别是否达期望、方向是否类似)

二面基本属于你的直系主管、有些公司是一面小主管面。二面的问题可能一面也问过,二面主要是深度面

三面(大概率不是前端技术栈的老板)

很多场景题,比如我现在有个网页经常白屏 换做你 怎么办呢 后面我会出文章专门描述,你的项目中的角色,遇到 hr 问题怎么处理,设计模式相关问题

hr 面

其实面试 也是一门玄学,有些回答问题 80%都回答很好,结果前面某个问题回答的面试官不满意,可能就挂了,有时候二面主管面,纯粹就是看你眼缘,觉得你够聪明,问的深度恰好你做过那就好办。

(二) 宏观问题要回答细致 总分总模式

先总结该功能,再细化改功能,最后再总结下

如果是宏观的面试题 最好说的细致一点,正常面试都是 1 小时,你的任务就是 1 小时内尽可能说自己会的东西,你回答的过于简练,反而让面试官觉得你理解不够深刻,同时增加时间问你更多问题,问题越多 你不会的可能越大

常见宏观问题

从输入 url 到页面解析出来发生了什么说说fiber架构的理解

(三) 知识点要串联起来

比如问你解释下宏任务微任务,你提到以下内容,会不会效果不一样

解释 js 引擎和渲染引擎在宏任务微任务扮演的角色,宏任务和微任务都空了会发生什么JS 单线程带来的好处Web Workers 中的宏任务和微任务处理

比如问你fiber 架构你提到以下内容,会不会效果不一样

react 18 的并发模式fiber 是如何处理 useEffect 的fiber 和计算机的运行原理

(四) 投降输一半

如果问了一个你完全不知道的问题,不要瞎扯,老实说 这块你不够了解。

如果你还是把你知道的几个词扯起来结果牛头不对马嘴 ,或面试稍微质疑或者细化问题 那不就是 gg

比如:让你写个算法题,你 3 分钟还没一点思路,那就赶紧投降 让面试官换一题。

比如问你 ts 的问题,你真不熟别撑着,就说项目用得少。

六、总结心得-面试后

1、目前这么多面试 ,面试后再次联系我二、三面 的基本不会超过 2 个工作日,如果 3+个工作日没联系你,那大概是凉了

2、面完后 思考 为什么问你的一些问题 因为这些问题 很可能和你的简历有关,但是你没准备这么写,就需要你再记录总结。

七、附:面试资料整理

面试准备三大块

项目八股文和基础手写题和算法

项目见我写的第四章

(一) 手写题

js 手写刷题 top18 题

防抖节流柯里化promise 手写hook 手写apply、call、bind发布订阅模式观察者模式深拷贝判断数组、对象深度实现一个EatMan实现 LazyMan控制最大并发数实现 loadsh.get链式调用数组转树树转数组对象、数组扁平化

算法top38

2.两数相加3. 无重复字符的最长子串88. 合并两个有序数组165. 比较版本号53. 最大子数组和112. 路径总和20. 有效的括号46. 全排列415. 字符串相加129. 求根到叶子节点数字54. 螺旋矩阵121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II15. 三数之和200. 岛屿数量141. 环形链表102. 二叉树的层序遍历215. 数组中的第K个最大5. 最长回文子串206. 反转链表209. 长度最小的子数组695. 岛屿的最大面积70. 爬楼梯42.接雨水4.寻找两个正序数组的中位数14.最长公共前缀1768. 交替合并字符串27.移除元素128.最长连续序列28.找出字符串中第一个匹配项11.盛最多水的容器49.字母异位词分组21. 合并两个有序链表704.二分查找26.删除有序数组中的重复项56.合并区间18.四数之和22.括号生成560. 和为 K 的子数组

前端 2024 算法题库(未完待续)

前端面试-js-手写代码原理

(二) 八股文

我是按照如下分类去准备的 ,其中我圈出来的核心重点

具体内容可看我主页其他文章,有空我会整理贴出来



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。