历时将月,七厂同约,终入字节--应届小前端的破局之路

2,239 阅读28分钟

自我介绍

双非二本,软件工程,自学前端,今年毕业。

喜欢编程,古风,日语和英语。

常以冷月心之名混迹前端江湖,也曾在混迹网文圈时用冷月心做笔名签约掌阅,作品《清起风云》,百度可查。

求职期间写了一个小博客,感兴趣的可以看看 lengyuexin.github.io/gatsby

为什么离职

这个问题,几乎我参加的每一场面试都会问到。我是2020.7.1毕业,最后离职日期是2020.12.18。这段工作经历很短,被问到也很正常。最主要原因还是追求更大的发展空间和技术突破。

在我导师跳槽去美团后,团队内就出现了明显的技术断层。我遇到的某些问题,能够与之商量的同事也越来越少。至于源码,数据结构和算法层面的交流就更少了。

而这些深层次的东西,才是真正意义上的技术栈,是真真正正能提高个人技术能力和核心竞争力的东西。

跳槽前该考虑的事

在我看来,决定是否跳槽成功的核心因素有两个:个人技术能力和当前招聘市场的大环境。建议先将自身技术能力和招聘要求做一个比对,如果觉得可以胜任,再去投递也不迟。至于市场环境,大概是金三银四,金九银十和年末扩招三大阶段吧。

如果技术已经准备ok,简历也完善过,那就可以开始投递了。内推也好,其他招聘软件也好,自行选择即可。

最最最重要的一件事,不建议裸辞。如果裸辞,做好心理准备。大多数情况下,换一份满意的工作,整个面试流程加offer审核到offer call再到最终邮件offer,耗时一个月是很正常的。在职面试都会有焦虑感,更何况是裸辞。

如果工作年限很短,又是裸辞,那我只能说在简历筛选上会很吃亏。比如我,投字节15个岗位,都被干掉,到第16个才约上面试。投快手4次内推,被干掉4次,最快的一次一小时左右就把我干掉了。不得不说,快手效率还是到位的。不死心的我又投了第五次,成功约上了面试。至于后来为什么能再约上猿辅导,百度,58同城,去哪儿网,美团的面试,我猜应该都是因为运气...又或者,实在很缺人?

技术方面该如何准备

结合我20多次的面试经验,总结出一个核心:基础。即便是大厂,也不会忽略问基础,反而更重视这个。基础不稳,地动山摇。基础稳如狗,大厂随便走。以下我提到的资料都会在文末给出链接,大家可自行查看。

js方向

对于js而言,我觉得基础应该是基本语法,数据类型,异步,各种常用api,this,es6+,原型和原型链,继承,作用域和作用域链,闭包...等等。建议阅读红宝书第四版并结合神三元的js灵魂之问系列按需完善。

css方向

对于css而言,我觉得基础应该是常用选择器,权重,垂直居中方案,rem和em,flex,动画...等等。对于这方面的准备,网上很多博客就能解决。如果想系统了解一下,推荐张鑫旭的《css世界》。flex的话,推荐小青蛙网站和阮一峰的博客。

源码方向

react技术栈,推荐阅读的源码是react,react-router,redux,react-redux,axios。

vue的话,推荐阅读的源码是vue,vue-router,axios,vuex。

如果涉及nodejs,那koa2,koa-router,express,也都可以安排下。

至于源码方向的推荐有三个:

  • 卡颂的react技术揭秘
  • 若川的源码系列(很多,文末直接贴作者主页了)
  • 难凉热血的vue源码分析

数据结构和算法方向

面试过程中问到算法很正常,这个时候就要注重平时的积累了。

算法方向推荐的有五个:

  • 极客时间王争的数据结构与算法之美
  • 政采云团队的博客--算法篇
  • 天天的前端算法总结
  • ssh的前端算法进阶指南
  • 修言算法小册

计算机网络方向

无论是前端还是后端,通信都是极为重要的概念,最起码应用层http和https要有一定的了解。

如果想全面了解一下,推荐谢希仁那本特别厚的《计算机网络》,看前六章就可以了。

如果觉得特别多,可以看一下神三元的http灵魂之问。

浏览器方向

这部分只推荐一个,极客时间李兵老师的浏览器专栏

其他方向

我这边因为项目中会兼顾一些运维的工作,所以对nginx常用配置和linux常用命令有一定的了解, 这部分可参考我之前写的笔记。当然这个不算必须项,大概可以算个加分项吧。

面经

接下来我会分享我面试的七家公司的面经,可作为面试参考。

58同城一面

  1. 自我介绍
  2. 诸多业务问题
  3. 项目中主要负责什么
  4. 原生js怎么实现拖放
  5. react-dnd拖放的核心API
  6. react diff 算法复杂度是多少
  7. diff造成的非预期更新如何解决
  8. 如何实现路由监听
  9. 页面适配方案:百分比,flex,vh,vw
  10. 平时对js和css基础有过了解吗
  11. 从地址栏输入地址到页面回显,都发生了什么
  12. 解释下重绘和回流
  13. 说一下js中的类和java中的类的区别
  14. 说一下js中如何实现函数重载
  15. webpack动态加载

面试感受:

58同城是我面的最早的一家,一面是电话面,大概聊了有一个小时。整个面试过程很nice,最后让面试官给我一个评价。讲真,面试官很真诚,说我的表现是超预期,但是在年限和经验上有所欠缺,hr那边可能会影响定级。我表示理解,毕竟确实年限短。

58同城二面

  1. 自我介绍
  2. 为什么刚工作不久离职了
  3. 业务中负责什么
  4. node偏运维方向的有没有了解过(docker k8s)
  5. 业务中主要用node干了什么
  6. react生命周期有了解吗
  7. 说下react-router源码你看完后印象深刻的部分
  8. 数组去重怎么实现,不用set怎么实现
  9. 实现一下es6的extends
  10. 有没有接触过移动端,小程序,h5等方向

面试感受:

二面是视频面,面试官和我聊了一下接下来的发展方向,描绘了一张美好的蓝图。听起来还不错,虽然没听懂。某些不可说的原因,58同城结束在二面,后续没有再进行。

百度一面

  1. 自我介绍
  2. js数据类型和存储方式,如何判断
  3. typeof [] 返回什么
  4. new操作符 做了什么
  5. 数组中一万个数据,访问第一个和最后一个效率会有什么差异,为什么
  6. forEach for in for of 的差异
  7. 如何改变this指向
  8. js中函数是如何调用的
  9. 说下原型和继承
  10. 浏览器缓存
  11. 说下浏览器事件循环
  12. js是单线程还是多线程,为什么这么设计
  13. css弧形永动动画实现
  14. css 1px像素适配
  15. css设置div宽高比3:4 padding-bottom:75%
  16. 说下transform 和transition
  17. 类数组怎么转换成数组
  18. new Array()接收的参数是什么
  19. get和post的区别
  20. http状态码
  21. react生命周期
  22. setState更新是同步还是异步
  23. axios源码整体架构
  24. 手写Promise.all
  25. Promise中用了什么设计模式
  26. Promise都有哪些状态
  27. 算法12345678.01 =>123,456,78.01
  28. 算法12345678.01=>12,345,678.01
  29. 从地址栏输入地址到页面回显,都发生了什么

面试感受:

女面试官,题是有点多,但感觉还好,都是偏基础。印象最深的是算法部分,面试官出了题,我直接说了思路,好像还巴拉巴拉说了一下其他的。面试官说:哎呀,我只是想让你做个题...(撒娇语气??) 好的,做题。

百度二面

  1. 自我介绍
  2. 业务中你用node都做了什么
  3. 你对node还有什么想分享的吗,觉得用起来爽的部分(gzip pipe)
  4. 业务中数据是怎么存储的,node为什么没有接入数据库
  5. node单线程容易崩溃,怎么维护服务的
  6. pm2内部机制了解吗
  7. cluster了解多少
  8. 业务线如何用端口号区分(nginx http-proxy)
  9. 业务上有什么坑嘛 (环境多)
  10. webpack常用配置
  11. webpack插件写过吗
  12. webpack常用插件
  13. 关于webpack你还有什么想分享的吗 (同步加载异步加载的实现)
  14. 浏览器地址栏输入请求地址到页面回显发生了什么
  15. 重绘和重排了解吗
  16. 重绘和重排如何做取舍
  17. 如何将css内容插入到页面上(style-loader)
  18. 如果让你实现style-loader,你打算怎么做
  19. 算法题-手写快排
  20. 算法题-查找一个字符串中出现次数最多的字符
  21. 算法复杂度层面比较一下快排和其他排序
  22. 项目是内部使用吗 (是,未开源)
  23. 有没有考虑过高并发场景,如何解决(缓存,压缩,负载均衡,集群)
  24. 现在是在职状态吗
  25. 最后离职日期是多少
  26. 手上有没有其他offer
  27. 如果今晚三面是否有时间(说有上线,推迟了)
  28. 反问一:百度App部门有没有使用node的场景
  29. 反问二:App部门是不是只有移动端场景,有没有其他的,比如pc
  30. 反问三:百度怎么做容灾的
  31. 反问四:百度App是分工明确还是也会出现身兼多职的情况
  32. 反问五:给我一个今后学习发展的建议和这次面试的简单评价

面试感受:

不得不说,和二面面试官聊的很是带劲,给我很多鼓励,完事大概是晚上十点多了,意犹未尽。当场要整三面,当时也恰好11点要上线,就改时间了,三面约到了一周后。

百度三面

三面面试官是手机百度部门的leader,电话面的,主要是问了我一下期望薪资和来百度的意愿。然后又是一波鼓励,还教我怎么谈薪资,感动到爆炸。说实话当时我已经决定同等薪资必去百度,奈何后续流程太长了,我已经接到抖音正式offer邮件那边还没反馈。

抖音一面

  1. 自我介绍
  2. 说一下业务中你负责的部分
  3. 业务中数据是怎么存储的
  4. 业务中拖拽如何控制位置的,适配怎么处理,全屏怎么控制
  5. 你用nodejs和java分别做了哪些业务
  6. 业务中的缩略图是什么,实现方案
  7. 说下jwt
  8. 说下js中数据存储方式
  9. 知道内存碎片怎么产生的吗 v8
  10. post请求有几种方式触发
  11. post的ContentType类型有哪些(application/x-www-form-urlencoded/multipart/form-data/text/plain)
  12. 知道jwt有哪些缺点吗
  13. 说一下http和https的区别
  14. https的tls了解吗
  15. 说一下锁(懵逼),举例是读锁和写锁
  16. 为什么要去看axios的源码,大体实现
  17. 业务中权限是怎么接入的,数据表怎么划分的
  18. 能说一下css盒模型吗
  19. 说下box-sizing中border-box 和content-box的区别
  20. this指向
var fullname = '1';
var obj = {
   fullname: '2',
   prop: {
      fullname: '3',
      //如果改成普通函数呢?
      getFullname:()=> {
         return this.fullname;
      }
   }
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());



  1. 算法题1:节点渲染

const el = require('./element.js');
const ul = el('ul', {id: 'list'}, [
  el('li', {class: 'item'}, ['Item 1']),
  el('li', {class: 'item'}, ['Item 2']),
  el('li', {class: 'item'}, ['Item 3'])
])
const ulRoot = ul.render();
document.body.appendChild(ulRoot);

<ul id='list'>
  <li class='item'>Item 1</li>
  <li class='item'>Item 2</li>
  <li class='item'>Item 3</li>
</ul>

  1. 算法题2:属性获取
{
    a:{
      b:{
        c:{f:"aa"}
      },
      d:{
        e:{g:"bb"},
        h:{i:"cc"}
      },
      j:{
        k:"dd"
      }
    }
}
// [f,g,i,c,e,h,k,b,d,j,a]


面试感受:

面了百度和58同城,有点膨胀,字节让我清醒。算法被吊打,只写了个大概和思路。感觉要凉了,最后反问环节我已经没什么想问的了。如果说有,我想问一下我还有机会吗?最后说了一下我的遗憾,表示我擅长的没有完全体现出来,命中的很多盲区。好家伙,峰回路转,面试官说我还是有其他亮点的,再给我一次机会,就到了二面,感动到冒泡泡...

抖音二面

  1. 看你简历有提到nginx配置,主要配置了什么
  2. 说下上线部署流程中常用的linux命令
  3. node的进程守护怎么做的,发现非预期故障怎么排查
  4. 项目中为什么选择用nodejs
  5. 业务中负责哪些部分
  6. 手写一个koa2的compose
  7. 手写一个Scheduler类,实现并发控制

//JS实现一个带并发限制的异步调度器Scheduler,
//保证同时运行的任务最多有两个。
//完善代码中Scheduler类,使得以下程序能正确输出:
//Scheduler内部可以写其他的方法
class Scheduler {
  add(promiseCreator) { ... }

  // ...
}

const timeout = (time) => new Promise(resolve => {
  setTimeout(resolve, time)
})

const scheduler = new Scheduler()
const addTask = (time, order) => {
  scheduler.add(() => timeout(time))
    .then(() => console.log(order))
}

addTask(1000, '1')
addTask(500, '2')
addTask(300, '3')
addTask(400, '4')
// output: 2 3 1 4

// 一开始,1、2两个任务进入队列
// 500ms时,2完成,输出2,任务3进队
// 800ms时,3完成,输出3,任务4进队
// 1000ms时,1完成,输出1
// 1200ms时,4完成,输出4


面试感受:

二面问的不多,主要是写代码吧。Scheduler没有完整写出来,koa2的compose写出来了,其他的回答还行,完事约了三面。 抖音二面时快手hr打电话告诉我二面过了,当场愣住,我不是正在二面吗?怎么就过了?

抖音三面

  1. 为什么工作不久离职
  2. 你觉得你擅长哪些技术(react+node+计算机网络)
  3. 说一下进程线程,如何通信?
  4. 两个线程可以直接通信吗
  5. 你觉得node的适用场景是什么
  6. 相比其他后台语言,为什么你更倾向node?
  7. 在业务开发上,你觉得node和java的区别是什么?
  8. node服务的性能监测有没有了解过?
  9. http中间人劫持了解吗?如何解决呢?(说了https)
  10. 为什么https可以做到避免中间人劫持?(说了加密层tls)
  11. 展开说一下tls握手(对称,非对称,对称+非对称的组合)
  12. 加密套件指的是?(举例了AES)
  13. 业务中的安全问题有没有遇到过?怎么解决的?(说了base64,cors,xss,csrf,cookie的httponly和samesite属性)
  14. 你倾向的技术领域和业务场景是怎样的?
  15. 算法1:二叉树层序遍历和s形的层序遍历
  16. 算法2:如何在从左到右升序,从上到下升序,每一行第一个元素大于上一行最后一个元素的二维数组中查找某个数字的索引?如果是一维数组呢?
  17. 算法3:二分法的实现
  18. 算法4:单链表反转
  19. 反问:抖音安全部门主要的业务范围是什么?

面试感受:

三面问的更全一点,理论和代码层面的都有,算法2没写出来,其他的应该都抗住了。后续流程很顺利,已拿offer。

猿辅导一面

猿辅导那天是招聘专场,一面到底,直通hr面。因为某些非预期情况,不再考虑这边,选了抖音。

  1. 自我介绍
  2. 业务中负责的部分
  3. 业务中数据怎么存储的
  4. 为什么坚持用node
  5. 算法1:promise并发控制
  6. 算法2:前k个元素
  7. js中遍历数组的方式
  8. react中遇到的坑,怎么解决的
  9. 说一下类组件和函数组件
  10. 选择hooks的优点
  11. 什么时候用类组件
  12. 说下http缓存,如何实现
  13. 反问一:这边有没有使用node的场景
  14. 反问二 :业务线中使用的技术栈是什么
  15. 反问三:有没有jq那种老项目
  16. 反问四:面试评价和今后发展的建议

面试感受:

和面试官聊的很开心,从技术到业务到技术选型,巴拉巴拉聊了很多。那边是用的angular11,还有vue2.x,后续打算迁移到react技术栈上。

猿辅导二面

  1. 自我介绍
  2. 诸多业务问题
  3. react diff算法如何实现的,比对复杂度是多少
  4. 如何使用react-dnd完成拖放的,说下主要API
  5. 大数据量场景前端怎么处理,让页面展示尽可能流畅
  6. 业务中看你有涉及到node的文件读写操作,有没有想过如果某个文件被锁怎么处理?
  7. 前端缩略图(截图)方案是什么
  8. 业务中的实时保存会有性能开销,又没有做什么优化?
  9. node转buffer输出字符串会比直接string输出快,你的依据是什么?
  10. 算法一:给定一串数字,求它全排列结果
  11. 算法二:实现类似百度那种联想搜索(模糊匹配)
  12. 收尾闲聊:你觉得一面难还是二面难?我说二面吧,数学不太好,全排列没屡清楚。

面试感受:

和面试官聊的依旧很开心,二面聊了很多业务。好家伙,我和面试官开始在白板上画图交流了。咱数学确实菜,全排列也没整清楚,和逻辑混一起更想不明白。面试官表示理解,然后约了三面,部门大leader。

猿辅导三面

  1. 根据简历确认了一下基本信息
  2. 为什么刚工作几个月就离职
  3. 看你大学学的挺多的,高中是不是没好好学习呀(笑,解释说高中是为了高考被动式学习,大学是为了工作主动学习)
  4. 日语N2是指?(解释了下等级,日企门槛)
  5. 看你对前端热情挺高的,为什么选择了前端呢?
  6. 然后面试官直接给我安排了研发方向,前期ng,后期react,说是在组建一个复杂架构小组,目前两人,预计4-6人。(说实话,有点慌)
  7. 做个题吧,给定学生id和分数组成的列表,写一个函数,通过id获取排名,注意分数相同并列名次的处理(写了七七八八,后边面试官说思路可以,就这样吧)
  8. 然后让我等下hr,面试官去下一场面试了(面试专场,一下午来了大概20+,每个面试官都很忙,后续基本没有反问时间)

面试感受:

亲切,看面试官第一眼就觉得很亲切。整体聊的也很顺利,过往经历和一道算法题,完事。看的出来,是想要我的。之后hr面结束,打道回府。

猿辅导hr面

  1. 之前有了解过猿辅导吗
  2. 确认了一下简历基本信息
  3. 还有其他公司在面试吗,进展如何?
  4. 说了下福利,餐补800,六险一金,不限量零食下午茶,健身房,晚下班打车企业报销,巴拉巴拉……说了好多福利
  5. 聊了下薪资,之前的,预期的。
  6. hr表示不会因为工作经验而刻意压薪资,扁平化管理,会根据每一轮面试官评价来定(给我的预期是校招生水平,实际是超预期)
  7. 你是97年的嘛?(惊讶) 感觉你表现上更成熟一些(我说和个人经历和读的书有关吧)
  8. 个人经历,比如呢? (笑,爱情算吗?)
  9. 然后和hr聊起了爱情观
  10. 所以你现在状态是?(单身)
  11. 大学读了哪些类型的书?
  12. 我问了下工作时间,早10晚7,双休不打卡
  13. hr表示offer流程会根据我这边其他公司面试进展随时同步,很热情的送我到电梯门口

面试感受:

面试体验确实不错,后期就有点遗憾了。也难怪,我的年限和期望偏差确实有点大,这边流程上多加考虑也可以理解。

快手一面

  1. 自我介绍
  2. 项目应用场景和优势
  3. 写个继承案例
  4. Object.create实现
  5. Object.create传null和{} 有啥区别吗
  6. 手写promise(写完then后面试官说可以了)
  7. 实现一个数组扁平化方法flat
  8. js为什么设计成单线程
  9. 事件循环说一下
  10. Promise里都是微任务吗
  11. 平时怎么学习的
  12. koa2中间件和redux中间件比较,原理
  13. koa2的洋葱模型和redux中间件的洋葱模型一样吗
  14. 两个compose的大概实现,reduce的妙用
  15. 对比一下express,koa2(我连同比较了egg)
  16. 为什么不要在循环、条件语句或者嵌套方法中调用Hooks
  17. new Promise返回的实例和实例then方法执行后返回的promise是一个吗
  18. 平时有浏览过哪些国外的网站吗

面试感受:

女面试官,聊了很多,感觉想早点下班。hh,我要写代码,刚写了大概,面试官说可以了,可以了,之后约了二面。

快手二面

  1. 说一下为什么要用hooks,解决了什么问题
  2. react函数组件和类组件触发更新的方式有哪些
  3. react的强制更新有了解吗
  4. react在一秒内点击按钮多次(+1),如何获取最后一次的新状态
  5. react-router权限路由写一下
  6. 实现一个带缓存的求阶乘函数
  7. 说说你对koa2中间件的理解
  8. 某些接口允许跨域,某些不允许,如何实现?能不能使用koa2中间件的方式实现一下?
  9. koa2中ctx.set的等价写法
  10. 用node如何实现一个带压缩和缓存的http-server?

面试感受:

面试官给我一种道法自然,万法皆通的感觉,某些想法秀到我了,很强。问的基本都答上了,很快约了三面。

快手三面

  1. 自我介绍(侧重说下个人优势和项目亮点)
  2. 为什么刚工作不久离职
  3. 如果有成熟稳定的A团队和从0到1的B团队,你倾向哪种
  4. 如果B团队做不好有可能会因为业绩不达标被砍掉,做的好会有高收益,A团队一直是稳定的,你倾向哪种
  5. A团队业务线偏向底层功能开发,为B团队服务。B团队在A团队产出基础上,会面对更多复杂业务,你倾向哪种
  6. 反问1:刚才提到的AB部门的业务覆盖场景是只有pc端吗?还是也有其他端?
  7. 反问2:工作模式是否为导师制?

面试感受:

无关技术,只谈选择。我选了BBB。之后约了hr面,然后又加面,其实也没问太多技术问题。流程和字节基本同步,薪资待遇持平,只是多了一个背调。我比较想早点入职,选了更快的抖音。说实话,有点舍不得负责招聘的hr小姐姐,hh,给了我很多祝福。

美团一面(部门A)

我怀疑美团有毒,二面必挂。第一次面到2面,题基本都答上了,莫名挂掉。然后又被打捞,依旧面的很顺利,二面挂掉... 好家伙,分手都没个预兆。遗憾是有,但也无能为力。美团到店,我可能到不了店了。

  1. 自我介绍
  2. 为什么刚工作不久就离职了
  3. 项目中常用的linux命令
  4. 业务中打包怎么做的
  5. 如何查询某个进程占用的端口号(linux中) netstat -tunlp|grep 80 lsof -i:80
  6. 实现一个new操作符
  7. git reset 和git rebase了解吗
  8. 实现Object.create
  9. 实现数组扁平化函数flat
  10. webpack有哪些优化方案
  11. loader和plugin有写过吗
  12. react合成事件了解吗?
  13. 这些事件处理函数最终挂载到了哪?
  14. react中如何阻止冒泡
  15. react中setState同步还是异步
  16. react15和react16更新机制的差异
  17. 为什么react16架构升级后就能中断更新,根据什么决定是否中断
  18. react源码看过哪些?
  19. react中调和的部分是在哪个包?有看过实现吗
  20. hooks为什么不能在条件或循环中使用,原理清楚吗?
  21. react为什么要引入hooks,解决了哪些问题
  22. 类组件如何实现逻辑复用?
  23. 打印题
const o1 = {
	text: 'o1',
  fn: function() { 
  	return this.text
  }
}

const o2 = {
	text: 'o2',
  fn: function() {
  	return o1.fn()
  }
}

const o3 = {
	text: 'o3',
  fn: function() {
  	var fn = o1.fn
    return fn()
  }
}
console.log(o1.fn())
console.log(o2.fn())
console.log(o3.fn())




面试感受:

美团的面试还是有点东西的,问的很全。linux那个和git rebase不太清楚,其他的基本都ok,然后约了二面。

美团二面(部门A)

  1. 自我介绍
  2. 诸多业务问题
  3. 你期望的业务场景或者工作环境
  4. js为什么会有回调地狱呢
  5. 为什么java没有回调地狱
  6. promise.all返回的是什么
  7. promise和async你觉得差异点是什么
  8. 算法1:rgb转16进制函数
  9. 算法2:
//实现一个retry函数
//如果fn返回成功,则打印一下,最终结果成功
//如果fn返回失败,则打印times下,最终结果失败
retry(fn,times)
retry(() => {
  console.log('doing')
  return Promise.reject(Error('done'))
}, 3)

retry(() => {
  console.log('doing')
  return Promise.resolve('done')
}, 3)

  1. 打印题
var a = 20;
var test = {
  a: 40,
  init: () => {
    console.log(this.a);
    function go() {
      console.log(this.a);
    }
    go.prototype.a = 50;
    return go;
  }
};

var p = test.init();
p();
new p()

面试感受:

题基本都答上来了,莫名挂。被打捞的时候问了一下一面面试官,他表示也很迷,说确实有二面面试记录,但是没评价??

美团一面(部门B)

  1. 自我介绍
  2. koa-compose实现
  3. react权限路由实现
  4. 前端路由实现原理(对比react,vue)
  5. 单页面应用和传统服务端渲染的差异比较
  6. 前端页面性能优化
  7. nginx 负载均衡配置
  8. node端处理大文件上传
  9. react hooks用过哪些
  10. react使用心得
  11. redux模板语法的改良(使用装饰器)
  12. 聊一下代码检查(eslint,ts)
  13. 防抖节流区分,手写
  14. 实现map,reduce
  15. 统计字符串中次数最多字母

面试感受:

和面试官聊的很带劲,好家伙,相见恨晚。面试结束不到一小时hr打电话约二面,并告知一面给了满分。

美团二面(部门B)

  1. 如何区分函数是new调用还是直接调用
  2. 解释下下面两段代码执行结果的差异
function foo() {
    foo();
}
function foo() {
    setTimeout(() => {
        foo();
    }, 0)
}
  1. requestAnimationFrame 和 requestIdleCallback了解吗
  2. 说下react的key
  3. node中加载相同模块,会重复打印吗
//a.js 
function foo() {
    console.log('foo'); // 
 }
foo();
//b.js
require('./a.js');
require('./a.js');
//node b.js

  1. 如何设计这套缓存
  2. http模块起一个服务,如果想修改请求体并转发给另一个服务,怎么实现
  3. 说下react-redux干了什么事
  4. mapStateToProps的第二个参数作用
  5. 实现一个Map
  6. 说下react常用的性能优化手段
  7. linux中exec ls 和ls 差异
  8. linux 中的source了解吗

面试感受:

我和面试官都提前到了视频会议室,然后我提议可以提前开始。面试官说ok,大概是45分钟。好家伙再问一个,再问一个,再问一个...差不多一个半小时,刺激。最后莫名挂掉,原因未知...

去哪儿网一面

  1. 自我介绍
  2. 说一下项目中遇到的挑战和你认为的亮点
  3. 能说一下你用mvc模式重构node业务代码的大概方向和效果吗
  4. 说下跨域
  5. 这个项目里前后端联调的话,有问题一般怎么排查(表示基本都是自己写)
  6. 追问:为什么是都要自己写呢?(相对偏向全栈,人少)
  7. 感觉你个人比较喜欢node,是想往这个方向发展吗
  8. 对技术栈或新技术上是怎样的一个态度
  9. 项目中写的css多吗,主要是哪些?(说了less,css,styled-components)
  10. 有没有接触过移动端,小程序,App这些场景
  11. 有在面其他公司吗?进展?
  12. 为什么刚工作不久离职了
  13. 你说离职是追求技术的突破,能解释下你想要的是怎样的吗
  14. 对于公司和业务部门,你更倾向哪一边的考虑(类比了选学校和选专业)
  15. 事件循环的打印题(比较基础)
setTimeout(() => {
    console.log(1)
}, 0)
new Promise((resolve) => {
    console.log(2)
    for (let i = 0; i < 10000; i++) {
        if (i === 9999) { resolve() }
    }
    console.log(3)
}).then(() => {
    console.log(4)
})
console.log(5)

面试感受:

女面试官,聊的也还行,比较满意我的表现吧,很快约了二面,现场。

去哪儿网二面

  1. 自我介绍
  2. 为什么刚工作不久就离职
  3. 诸多业务问题
  4. 说下你擅长的
  5. 解释下重绘和回流
  6. 说一下你知道的浏览器渲染相关的点
  7. 你觉得有哪些优势
  8. 平时怎么学习的
  9. 说下tls握手
  10. 还有在面其他公司吗?
  11. 前端如何做性能优化
  12. 算法1:数组中出现最多的数字
  13. 算法2:斐波那契数列
  14. 闲聊:你觉得你的缺点是什么

面试感受:

感觉面试官有些漫不经心,简单聊了聊,然后我说了期望薪资,好家伙,估计又说多了...没后续。

致谢

在我看来,面试并不是一个人的战斗。站在巨人的肩膀上,可以加快你前进的速度。 感谢这一路上,直接或间接给我帮助的大佬们,排名不分先后。

  • 磐冲, 曾多次参加磐冲大佬组织的直播面试,表示受益良多。
  • 张仁阳, 珠峰架构公开课诸多知识点面试命中
  • 若川, 源码系列收获颇丰
  • ssh, react性能优化方案,多次面试命中
  • 神三元,灵魂之问系列查漏补缺
  • 卡颂,react源码系列,多次面试命中
  • 阿紫, 鼓励君+祝福小天使
  • 大月, 经历很相似的战友,抱团取暖

相关链接