【面经】寒冬中的一年半前端跳槽

33,724

我是耳东,会写点前端,混过字节跳动、美团,做过面试官,擅长程序员职场话题、算法、前端
有一个不水的技术群,有一个不水的技术群,关注公众号“程序员耳东”拉你进群

2022年上半年准备写一个「刷500题进大厂」系列算法教程

欢迎关注技术公众号:程序员耳东

欢迎关注B站号:程序员耳东

面试内容

小米-小米应用商店(过)

一面

小米的面试官给人的感觉很亲切很真诚,是一个体验很不错的面试。

  1. css实现图片自适应宽高
  2. 讲flex,手写出flex常用的属性,并且讲出作用
  3. BFC是什么
  4. 项目里面的前端鉴权是怎么实现的?
  5. vue里面的虚拟dom是怎么回事?
  6. vue双向绑定讲一讲
  7. 手写函数防抖和函数节流
  8. 讲讲常用的es6语法,比如let、promise、class等等
  9. 浏览器渲染过程,回流重绘等等,load、DOMContentLoaded等等事件的触发顺序
  10. 从小米应用商店里面随便找了一个需求让我现场实现,写伪代码

二面

  1. 讲项目里面的鉴权和图片懒加载怎么实现的
  2. 讲vue-lazyloader的原理,手写伪代码
  3. 讲express框架的设计思想
  4. 线上日志是如何处理的
  5. 讲事件循环
  6. 讲nodejs的eventEmitter的实现

三面

  1. 讲项目里面做的事情
  2. 讲vue的响应式原理、依赖收集、监听数组、虚拟dom等等
  3. 讲express的中间件系统是如何设计的
  4. 现场从小米应用商店中找出一个需求现场实现,说思路,写关键的代码

四面

  1. 讲vue-lazyloader源码以及设计
  2. 使用es5实现es6的class
  3. websocket握手过程
  4. 浏览器的事件循环和nodejs事件循环的区别

百思编程(过)

这个公司是猎头推荐的,一家初创公司,CEO比较强势,也算比较有趣。

一面

  1. 跨域以及解决办法
  2. 手写一段小算法
  3. JavaScript的sort方法内部使用的什么排序?

二面

这一面是CEO面,主要问了我的职业规划等等问题,在我没有表现出很强的要去该公司的意愿后,直接给我送走了...

ponyAI-基础架构(过)

一面

  1. 讲项目里面干了啥
  2. vue-lazyloader怎么实现的
  3. vue的响应式系统、虚拟dom
  4. 函数式编程
  5. 手写了一个算法题

二面

这轮面试时从美国打电话过来的,事后才知道是Google的前端...

  1. 讲讲项目里面做了什么
  2. vue原理,和react的区别(其实我没怎么用过react)
  3. JavaScript异步的处理方式,现场出了一个问题,使用promise实现

三面

  1. 讲项目模块规划、项目如何部署、如何优化等等
  2. 手写函数的防抖
  3. 手写一道算法题

四面

  1. 讲讲项目
  2. 手写一道算法题

洋钱罐(过)

一面

  1. 讲项目
  2. 前端持久化的方式、区别
  3. vue-lazyloader的原理
  4. 怎么配webpack
  5. 手写vue双向绑定
  6. 讲es6的一些特性,并且现场出了几个代码片段,说结果
  7. 手写一道算法题
  8. http状态码

二面

  1. 讲项目
  2. vue-router的原理
  3. 项目中怎么用的webpack,怎么优化
  4. 讲express的设计原理
  5. 手写一道算法题

创新奇智(过)

一面

  1. 讲项目
  2. 手动实现parseInt

二面

这一面居然遇到了前同事...写了一些笔试题,问了一些问题

三面

  1. 讲tcp/ip网络层、三次握手,为什么不能两次握手
  2. 讲vue原理
  3. 手写一道算法题

猿辅导(跪)

猿辅导好像总共就一面,期间一些实现方式和面试官有争议(没有冲突)

一面

  1. 手写vue的mixin方法
  2. 手写promise的all方法
  3. 现场出了一个移动端的小需求

搜狐-垂直媒体部门(过)

一面

  1. 讲项目
  2. 项目里面用nodejs做了啥
  3. 抽取了哪些vue组件

二面

  1. 讲项目
  2. 手写实现promise

腾讯-地图(跪)

腾讯两个部门面试都会先做一套笔试题,笔试题基本就是一些常见的前端问题以及算法题

一面

  1. 讲项目,对项目提了一些问题
  2. 怎么判断一个点是否在圆形内、正方形内
  3. 对笔试题

腾讯-天天快报(跪)

也是先做了一套笔试题,但是令人尴尬的是,面试官觉得我快排写错了,然而我只是在原地快排没有申请额外空间...

  1. 对笔试题
  2. 没了

百度-百度云(过)

这个部门今年据说升为一级部门了,好像还挺不错的

一面

  1. 讲项目
  2. vue响应式原理,什么是mvvm
  3. es6使用过的特性
  4. flex常见的属性
  5. css选择器的优先级
  6. 抽取过哪些vue组件

二面

  1. 讲项目
  2. express设计原理,面试官对动态路由匹配一直追问下去,但是这里的源码设计我确实是忘了,一路讨论下去扯到了字符串的前缀树...
  3. 实现一个事件发布订阅类,其实就是eventEmitter

三面

三面是山大老学长,聊了一些业务上的事情

搜狗-手机搜狗(过)

搜狗一面的体验比较差,面试官给人的感觉不太好...

一面

  1. 讲项目
  2. 事件循环
  3. 回调函数的坏处
  4. vue里面哪儿不会用到双向绑定

二面

忘了...

快手-商业化(过)

一面

  1. 讲项目
  2. 如何抽取公共组件的
  3. vue的响应式原理
  4. 如何实现一个可设置过期时间的localStorage
  5. 实现一个发布订阅系统,包括on、emit、off等等

二面

  1. 一道智力题
  2. 软件工程思想、设计模式等等
  3. async/await代码片段,说输出结果

今日头条-广告系统(过)

一面

  1. 讲项目
  2. 讲lazyloader实现
  3. 用docker做了什么
  4. 用webpack做了什么
  5. 手写一个算法题
  6. 讲flex
  7. vue响应式原理
  8. es6

二面

  1. JavaScript异步
  2. 优化项目
  3. vue原理,包括计算属性、依赖收集等等
  4. 用JavaScript的异步实现sleep函数
  5. 算法题

三面

  1. 手写快排,时间复杂度,优化
  2. 手写实现jsonp
  3. 项目部署,线上问题等等
  4. websocket握手过程

四面

  1. 对vuex的理解,单向数据流
  2. 设计一个单点登录的系统,类似阿里系那种
  3. 手写一个算法

五面

  1. 实现一个联想搜索组件
  2. 手写函数防抖和节流

OPPO成都研发中心(过)

一面

  1. 讲项目
  2. 讲vue的 响应式系统,讲了好久,从渲染watcher到虚拟dom,面试官还跟我讨论了好久
  3. 忘了

二面

  1. 讲项目
  2. 忘了

百词斩(跪)

首先会在线做一道算法题,挺简单的,百词斩感觉挂的稀里糊涂的...

一面

  1. websocket握手过程
  2. tcp/ip网络层,http的特点
  3. http强行使用udp能实现吗?
  4. vue原理
  5. webpack热更新原理,使用过的插件
  6. 原型、闭包、跨域
  7. 手写了一道算法题

为什么面这么多公司

因为我是实习直接转正的,也没参加过秋招,所以对自己在市场上是个怎样的实力没有一个清晰的了解,而且我也想多了解一下其他公司在做什么,于是就尽量的多面,不过说实话面试确实挺累的。

如何准备

首先前端基础要过关,可以参考前端工程师手册合格前端系列第九弹-前端面试那些事2018前端面试押题(讲义)Interview Book

其次,因为我是在小厂,所以可能项目复杂度没那么高,我就尽量把手头上用到过的东西都搞明白设计原理,比如vue、express、vue-lazyloader、promise等等,平时也会造一些轮子,其实这些对业务开发都是有好处的,起码可以让你知道自己在写啥。 最后,计算机基础也是抛不开的,LeetCode刷200题左右,常见的排序、搜索、树遍历算法都要会,而且以这几个为基础的变形也要能看出来。

还有就是面试的时候的一些技巧,因为我本身表达能力还行,面试基本不紧张,说说笑笑也就过去了,之前在公司也当过一年的面试官,这方面发怵的同学可以做一些相关的准备。