乐趣区

我的前端面试

前言
这次找工作也面了好几家公司,也通过了好几家公司的面试,毕竟之前也准备了一段时间,所以面试的时候心里也不是很虚。
这里记录一下面试过程中被问到的问题,不过从面试第一家公司开始到最终入职,已经有一个多月的时间了,所以有些问题已经想不起来了,这里只记录一些我还记得的问题。
一家创业公司(鱼泡泡)
1、问怎么判断数据类型?
instanceof, Object.prototype.toString().call()
2、问 instanceof 是什么意思?接着问原型链等等
3、什么是闭包?
4、柯里化了不了解?
5、怎么实现 new 方法?
6、用过 promise 哪些方法?promise 怎么实现的?
7、解释一下 eventloop
8、ajax 怎么实现的?
9、解释一下 koa 洋葱模型
只记得这些了。。
贝壳找房
先做一套题,主要考察 this、eventloop、dom 的事件机制,还有一些编程题(字符串去重,继承, es6, css 等等),然后对着这套题,各个都延伸问了一下。
后面是对着简历开始问了:
1、做的项目介绍一下,聊了好久。。。
2、vue 的 mvvm 的实现原理
主要就是双向绑定的依赖收集,触发更新的实现
3、vue 虚拟 dom 的 diff 算法原理
4、双向绑定的触发更新到真实 dom 更新这个过程是怎么实现的?(当时没答出来)可以参考这里
5、问了一些 react 的问题,我 react 不熟。。
6、问了 webpack 的一些 loader 以及 plugin 的用法,比如处理 less 文件需要哪些 loader,url-loader 和 file-loader 是干吗用的,用过哪些 plugin,干嘛用的。
7、聊了一下 babel 和 Node
8、有什么需要问的?面试官介绍了一下贝壳找房上海侧的业务
触宝
1、实现 es6 的 flat() 方法
2、实现 dom 的事件委托
3、0.5px 的竖线怎么实现?
4、promise 相关问题
5、es6 哪些新特性?聊了一下解构赋值,async、await 等等
6、性能优化有哪些方法?扯了一堆
7、CommonJS 和 es6 module 区别
8、浏览器强缓存和协商缓存
还有一些问题暂时想不起来了。。。
二面 就聊了一下项目和经历、以及兴趣等等,面试官介绍了一下触宝的业务
小红书
一面
1、聊项目,聊了很久
2、import 按需加载问题,按需加载的组件 chunk 何时加载,通过什么方式加载?
按需加载的 chunk 在 dom 更新时需要加载这个组件的时候才会去服务器上请求这个 chunk 文件,通过类似 jsonp 的方式进行加载。
3、打开页面时,如果 app.js 以及加载完成,而 vendor 文件还没有加载好,而 app.js 显然是依赖 vendor, 为什么执行 app.js 不会报错?
这个是由 webpack 打包之后 chunk 文件中掺杂的 webpack runtime 代码控制实现的(后面又聊了一下 webpack runtime)
4、做一些编程题,主要是 es6 以及原生 js 相关的
5、聊了一下前端性能优化
6、css Module 了解吗?less 的 scoped 怎么实现的
还有一些记不得了。。。
二面
1、Vue 的 MVVM 原理,动态组件
2、vuex 用法和原理,vuex 和 mvvm 的不同(双向数据流和单向数据流)
3、聊了一下 Vue 和 react 的区别
4、babel 的原理
5、前端优化的思想,比较抽象,瞎聊。。
三面
1、介绍项目,聊了一会。
2、一些功能设计的题目,就是给一个具体需求的场景,怎么实现这个功能,不是很难。
3、各种聊。。
ps: 总体上,小红书的面试体验是最好的,面试官都很客气,聊得也很愉快。
拼多多
一面
1、实现 sleep() 方法
2、Vue router 有哪些模式?是怎么实现的?为什么切换路由,页面不会刷新?
hash 和 history 两种模式,实现原理主要还是从依赖收集和触发更新两个方面说。
3、webpack 的代码分割怎么实现的?
4、说说刚才提到的 CommonsChunkPlugin 和 splitChunks 的区别
5、前端缓存怎么实现?(扯扯强缓存和协商缓存,重点问了 ETag 如何实现缓存)
二面
1、就聊了项目。。。
ps: 拼多多的面试体验应该是最差的,特别是二面(是个 leader 吧)非常高冷,交流上很不顺畅,有点不耐烦。。
头条
一面
1、先做一套题,css、eventloop、this、算法题(不是很难)等等,然后一题一题挨个问,做一些延伸。
2、new 的实现
3、promise 的原理
4、写一个类,简单实现 Vue 的 event bus 的功能
5、webpack 相关的,loader 和 plugin,代码分割,跟之前几家公司问到的类似
6、babel 原理,还问了一些 es6 语法转 es5 怎么实现
7、Node 相关的,做过哪些项目
二面
1、聊项目
2、Vue 的 MVVM 原理
3、一些组件功能设计的问题
4、实现二叉树的宽度优先遍历
5、ajax 的原理,以及 XMLHttpRequest
6、Vue 和 react 的区别
7、各种聊。。
三面(北京视频面)
1、聊项目
2、各种聊。。

退出移动版