阿里、得物、涂鸦、途虎面试心得
五月份搬到安静、相对较大的房间后,决定每天早起来复习,在这之前我是通过下班后待公司里学习和晚上在家复习的方式学习,这种方式不合理,因为经过一天的工作自身精力已经消耗的七七八八了,再去学习,效率已经不高了
经过三个月的努力,于 8 月 8 日奥运结束后,我投了简历,这次共投了 6 家公司,分别为阿里、得物、涂鸦、途虎、拼多多、TapTap。其中 TapTap 是想去的,其他五家各有千秋,属于可以拿到 offer 等待公司
其中阿里、得物、涂鸦、途虎四家给了面试机会。周五下午得物面试,面完后电话面试涂鸦,周六阿里电话面试,周一晚上途虎视频面试,结果是都被刷下去了。问过得物的两个面试官”觉得自己今天的表现如何“,一面面试官(同事面)说觉得一般,简历写的不好,应该把自己项目中有用到的技术都写进技能点里,而不是让面试官去找;二面(组长面)说优点是涉猎面广,但是对原理不够深入
虽然没有被面上,但或许是一个好事,因为这次面试透露出我的一些短板。例如对知识的表达,说到底还是对这块知识不了解
面试考点
JS
-
防抖与节流
口喷不出来,之前做过准备,手写可以,但是没喷出来,还是对原理什么的理解的不够深刻
-
捕获错误怎么做?
知道 try catch,但是没说来,面试官引导到后面才明白要我说这个
-
图片懒加载
没做准备,PASS
-
类数组与数组的区别
说不出个所以来
-
如何释放闭包
把引用的闭包设为 null
-
事件循环
这题高频
-
HTTP 缓存
就途虎的面试官问了,之前做过这方面的准备
CSS
-
BFC 是什么?
阿里面试官问的,老掉牙的问题,但是他一直让我说,我说了几个点还不够,要说全,触发 BFC 的元素有哪些,我当时说了四五个,他说还有呢?淦
-
flex: 1 表示什么
MD,flex-grow 读错了,英语口语还是重要
-
左边宽度已知、右边自适应方案
阿里面试官问的,说了四种,问还有吗
React
-
函数式组件与 class 组件的区别
这竟然是最常见的问题,说了好几个点,没抓到重要,重点是 函数式组件能捕获每次渲染时的值,这个俗称 Capture Value。React 的主要开发者 Dan 写过一篇文章函数式组件与类组件有何不同?
周五面试得物、涂鸦,都问到了这个问题
-
为什么不能在循环中调用 hooks?react 中为什么不能在 for 循环、if 语句里使用 hooks,说下 react hooks 实现原理。
-
虚拟列表,1000 条数据 插入不卡的那种
-
Fiber 是什么?
- 多了调度器,有优先级,优先级的顺序是怎么个排序?
-
React.memo、React.useCallback、React.usememo 的作用
-
this.setState 是异步还是同步?为什么?
- 什么事件可以触发异步,什么会触发同步
- 如下的代码,它的 a 的值是多少?又 render 了几次
class C extends Component {
this.state = {
a: 0;
}
componentDidMount() {
this.setState({ a: 1 })
setTimeout(() => {
this.setState({a: 2})
}, 0)
new Promise((resolve) => {
resolve(this.setState({ a: 3}))
}).then(() => { this.setState({a:4}) })
}
}
- useState 中的值是个对象,改变对象中的值,demo 会渲染吗?如果用 React.memo() 包裹住呢
function demo() {
const [data, setData] = useState({ foo: { bar: { baz: 1 } } });
return <div onClick={() => setData(1)}>改变</div>;
}
-
react 从本页面跳转至其他站点页是否会执行 unmount?为什么
A:不会,但不知道为什么
-
react 中的 错误捕获
-
React.Router 的模式
手写一个
三种模式
-
Dva 中与 namespce 同层的参数有哪些
ES6
-
Promise 链式调用
- 链式调用怎么写
-
展开运算符的特性
- 能展开 string、array、object
-
commonJS 与 ES 模块的区别
-
webpack 打包后,commonJS 中的引用会被引用吗?ES6 模块的呢?为什么
移动端
-
适配方案
-
JsBridge
-
移动端 ios 输入时 input 被挡住, 安卓键盘回落后留白问题
-
弹出款滚动问题(没人问,但是我想写一篇)
组件
- 主题色
TS
- any 用的多吗?什么时候会用 any?什么时候不用
Webpack
-
webpack 打包后,commonJS 中的引用会被引用吗?ES6 模块的呢?为什么
-
split code 代码分割的原理是什么
CI/CD
-
你是如何打包项目的
A:我的情况是,项目在本地打包,然后把 dist 文件提交到 git 上,再登录服务器,手动 git pull
我当然知道确定这种方式不科学,公司不提供服务器,没资源,组长也不愿意做变化
我上家公司是把代码放在 gitlab 上,也方便各位 review 代码
目前看,我后续会把个人开发者如何利用 GitHub 来做 CI/CD,可以看看这篇 2021-08-19-GitHubActions-部署前端项目 以及这篇 2021-08-19-GitHubActions+GitHubPage
Docker
-
dockerfile 中的参数有哪些
FROM、RUN、BUILD…
疑惑
很神奇,五个面试官都没有问原型、闭包、作用域、执行上下文之类的问题,也许是因为现在是高级前端开发面,所以不问这些基础的?
后记
女朋友看到我努力了三个月,每天早上 6 点起来学习,周末也会抽出时间来看一些技术方面的知识,但还是没有面上。
她对我说:你的经历让我看到不是所有的努力都会有回报,所以让我觉得努力没用。
我不懂这有什么好伤感的。面试,面不上,很正常,毕竟不是小公司,对人的要求本身就很高,我已经在这次经历中知道自己的不足,这很重要,美团还没面,这也很重要,我也有时间可以复习,再进步,这就足够了…
不是努力有没有用的问题,是成长。能进大厂是结果,学到知识是过程。而且去了大厂我还是会每天早起学习,这是拉开人与人之间距离最好的方式,别人在休息的时候你再学习,你学习时间比别人多,勤能补拙。不要觉得”勤能补拙“这个词有多么不好,我觉得很好。做到勤就比很多人优秀了
但我也不是什么奋斗逼,口号喊得很响亮,但是身体却没力行,面试-不足-克服,就像打游戏一样,打不过 BOOS,先去打大头兵,涨经验,就这么简单