阿里、得物、涂鸦、途虎面试心得

五月份搬到安静、相对较大的房间后,决定每天早起来复习,在这之前我是通过下班后待公司里学习和晚上在家复习的方式学习,这种方式不合理,因为经过一天的工作自身精力已经消耗的七七八八了,再去学习,效率已经不高了

经过三个月的努力,于 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,先去打大头兵,涨经验,就这么简单