思维巡航 - 一面
日期:2025.11.10
面试通过了,流程被我叫停了。
二面要线下,那几天面试太多实在懒得花时间在通勤上面,直接拒掉后续流程了。
一、 问题
基于你的理解,谈一下你对于 JavaScript 里面的原型链的理解吗?
我们常听过一句话叫做“JavaScript 世界里面万物皆对象”。但 JS 的数据类型分为基础类型和引用类型。有趣的是,我正常声明一个字符串,比如说字符串的 '123',它可以调用一个方法,然后把它拆解成一个数组。那问题就来了,我们又说字符串它是基础类型,那如果它是基础类型,它哪来的属性呢?那字符串跟数值到底算不算对象?你怎么看待这个问题?
我看你简历之前用 Vue 比较多。React 这边有接触过吗?像一些 Hooks,比如 useMemo 这些有接触吗?
那我们聊一下原理或源码相关的问题。你是怎么看待这个虚拟 DOM (Virtual DOM)?它是什么东西?为什么需要它?或者说它到底解决了什么问题?
你觉得虚拟 DOM 它比真实 DOM 要更快吗?... 假设我现在有一个场景,DOM 结构非常非常简单,它只有个 div,我现在只是希望将 div 的内容从 1 变成 2。
你前面也聊到 DIFF,你是怎么理解这个 DIFF 的?它的一个执行过程是怎样的?
深度优先还是广度优先?
站在 DIFF 的角度,你认为它是逐层对比吗?... (挖坑)我们知道 view 跟 react 里面都有一个非常重要的概念叫 key。我现在有一个数组 [1, 2, 3],每个元素都有独一无二的 key,现在我把中间的元素给它删掉了,它变成了 [1, 3]。你刚刚讲了 DIFF 是逐层对比,那旧 2 其实要跟新 3 比,如果我把这个数组放大到 1 万个元素,我把中间第 5,000 个给你删掉,那岂不是接下来接近 4,000 多个元素全部要错位?那这个 key 到底起了什么作用?
了解过React Fiber 的概念吗?
我看你简历这边有写,你 AI 提效有 30%,方便分享一下,就是你在日常的工作中你是怎么去用 AI 去提效的?你的工作流是什么样?
你刚刚在聊这个需求开发过程中,你们是有去做一些 MCP 或者做一些 Rule 吗?还是说每次在开发需求的时候都会跟他讲(重复的指令)?
我看你这边写基于 Playwright 去搭了一个自动化测试的平台,你之前基于这块是怎么去做的?
像你们这个 Playwright 用例,你们是靠谁来维护啊?
你觉得他整体会增加你们前端的负担,还是说他整体是有提效的?
你们在定义这个 Playwright 流程的时候,你们对于它的工作职责是怎么去定义的?它主要负责哪一些的验收?比如说接口,比如说你说的元素的这个出现跟消失。那对于 UI 的这一块验收,你们会做吗?
你有了解过 Notta 吗?
二、反问
团队规模我还不太清楚,思维巡航就是大概他前端是什么样一个规模?
我入职的话,我会负责哪些工作?
公司成立多久啊?
那公司现在发展是很好吗?
方便问一下你在团队里面是什么岗位吗?
你们在哪上班现在?