提高面试思维,解决面试难题

54 阅读5分钟

嗨,大家好,我是 shameless

在网上常有一句话:面试中,技术好的不如会 “吹” 的。今天就来分析一下怎么 “吹”!也就是本期想聊的面试思维

开胃前,先讲个我自己小故事

我在实习的时候,一次开早会(内容大概是说自己昨天做了什么、今天要做什么),我讲了一大堆昨天的开发内容,本想表达干了很多活,结果领导来了一句:“这么说,那你昨天都没事做啊?” 一下子紧张到胡言乱语,至此就一直带着 “不会表达” 的标签。每次向师傅请教还有哪些地方需要提升时,他总说:“以你现在的技术水平完全够用,但表达能力实在太差、太差、太差了!”(三个 “太差” 是原话)。

春招第一次面试时,自我介绍直接紧张到说不出话,面试官还一直安慰我… 上面就是我当时的表达能力状态(和我一样的小伙伴评论区扣1~)。

铺垫完毕,回到正题!先提一下大家都懂的面试规则

面试时间一般就半小时,时间越久说明机会越大,我们可以抓住这个点来对待面试~

接下来从最简单的面试题开始吧!

问题 1:说一下 JS 的数据类型(找实习常问)

常规回答:简单数据类型有 String、Number、Boolean、Null、Undefined、Symbol(ES6),复杂数据类型有 Object、Array、Function。

然后自信满满等面试官问下一个问题?
上面的答案说的很清楚,也非常正确,但没有利用好规则。最舒服的状态不是等面试官问,而是主动引导面试官提问

✨ 优化回答:
回答完数据类型后可以补充:“它们的存储方式不同,简单类型是栈存储,复杂类型是堆存储。这个区别也是我们经常需要根据数据类型做深浅拷贝的原因。”

面试官听了可能会问:“那你说说堆和队列有什么特点?” 或者 “既然你提到了深浅拷贝,那什么是深浅拷贝?”
有没有发现?面试官好像跟着你走了,他问的问题都是你想让他问的(亲测有效!)。

我们回答问题时,可以围绕两个角度思考:回答的深度回答的广度

问题 2:Vue3 和 Vue2 的区别 / 有哪些升级?

网上讲得最多的点是组合式 API、响应式升级和 diff 算法升级。但回答这类问题时,我们需要思考:一个框架最看重的是什么?—— 性能

先来看看为什么从声明式变成组合式 API:

  • Vue2 的 Options API:在 options 里写 data、methods、created 等描述组件对象,多个逻辑可能分散在不同地方,代码内聚性低。

  • Vue3 的 Composition API:将模块相关代码统一放在一个地方处理,不需要在多个 options 里查找。

大家可以回忆一下,无非就是 “一个要写在规定地方,另一个不需要”,这个影响真的大吗?
Vue 官方介绍 Vue3 时说:“组合式 API 配合编译器优化,使 Tree Shaking 后包体积缩减超 50%”。

✨ 优化回答:
“组合式 API 通过函数式编程,配合 ES Module 的静态分析特性,让打包工具(如 Webpack)能更精准地树摇(Tree Shaking),从而减少打包体积,提升性能。”

当你提到打包工具,面试官很可能下一个会问工程化相关问题(工程化答好了,懂得都懂~),这也是引导面试官提问的方式。

问题 3:为什么 Vue3 用 Proxy 替代 Object.defineProperty?

大家都知道 Object.defineProperty 的缺陷:无法监听数组变化,无法监听对象属性的添加和删除。
但还有一个很重要的点:Proxy 的懒递归特性—— 只在访问对象属性时递归处理嵌套对象,避免 Vue2 初始化时深度遍历整个对象(常说的一次性递归)带来的性能损耗,这也是 Vue3 性能提升的重要原因。

这里扩展一个误区:很多人觉得 Object.defineProperty 不能监听数组,所以才要拦截数组方法。其实是尤大的择优选择 —— 大多数情况,我们对数组的操作是遍历,若用 Object.defineProperty 监测变化,会有很大性能问题。尤大原话:“性能代价和获得的用户体验收益不成正比。”

最后简单聊聊 diff 算法的升级(需要大家去学源码哦)

  • Vue2:双端比较(双指针算法)。

  • Vue3:针对多种情况优化,执行顺序如下:

    1. 自前向后

    2. 自后向前

    3. 新节点多余旧节点

    4. 旧节点多余新节点

    5. 乱序 diff 比对(即最长递增子序列,寻找最优移动方式)

Vue3 对大多数情况做了优化来提升性能。另外,Vue3 会在编译阶段对静态节点进行标记,避免运行时不必要的比较,这是 diff 性能提升的重要点(大家可以去了解 Vue 特有的编译特性,本期不多聊啦~)。

到这里,本次内容就分享完啦~ 有技术准确性问题欢迎评论区留言修正。如果对你有帮助,点点关注点点赞支持一下吧!

思维的提升是积累的过程,大家背八股时多试着发现知识之间的内在联系。就像袁进老师说的:提升知识深度时,知识之间会自然联系在一起。

祝大家多多拿 offer,不再为面试焦虑!!!

下面是交流群,欢迎各大佬一起聊天!

image.png