记一次前端面经


本文总阅读量

写在前面

作为一个双非一本渣校,还不是应届(去年毕业的),个人还是很想去大公司氛围好的团队(虽然很菜但是还是想去哈哈),然后就选了上海的两件比较不错的去面试:携程和哈罗单车。

携程

我是在 Boss 直聘上投的,因为公司业务也算是和携程相近,所以就想试试,投的第二天就收到了 hr 的信息,然后简单聊了几个问题:你简历上怎么写的毕业后至今职位是打杂?(下次不会这样了,就是自嘲一下的) 跟 hr 解释了一番之后,邀请了去面试。

一大早去的凌空 soho,感觉满满的一股互联网的年轻气息,人山人海。

到了之后联系 hr,hr 小姐姐相当热情,告诉我指示以后跟着指示进了办公区,然后开始等面试官,大约等了半个多小时(反正我倒也无所谓),面试官开完会终于来了,态度挺不错的,然后先让我做个自我介绍,我就总结了一下现在手头的一些工作之类的。然后就进入正式的面试环节了:

问的基本都是原生 js 的东西,就把自己能记住的写下来:

  • 什么是闭包?(说了点闭包,然后还有闭包的 gc)
  • ajax 实现(就是 XMLHttpRequest 那里的东西)
  • 给你一个移动端翻页的需求,你会怎么做?(监听滚动到底部,讲了一下节流函数,然后还有图片懒加载,然后弄个动画之类的)
  • cookie 和 storage 区别
  • 事件捕获和事件冒泡(这里记得不清楚了,就答了一个捕获是由外到内,冒泡是由内到外)
  • 跨域,优化(我顺带还把 cors 然后携带 cookie 那里说了一下)
  • 总结下你能想到的操作 dom 的方法(jq 的、document 上的 getElementById/ClassName/TagName/Name,还有 querySelector、querySelectorAll 就想起这些)
  • setTimeout 的运行机制(eventloop 机制)
  • 说一下 dom 上面的属性的功能和用途(把 vue 里面所用的讲了一下)
  • 如何实现一个数据驱动(又把 vue 的讲了一下哈哈)
  • 在调试一个页面的时候鼠标一直在闪,你会从哪几个方面去找问题的原因
  • 性能优化
  • 还有的想不起来了,待补充
  • 你还有什么想问的吗

总体来说感觉面得蛮爽也蛮久的,最后谈了很多关于他们的部门业务还有想招什么样的人,面试官中间也会给一些提示什么的,就是最后那个题感觉比较懵逼,实在不太好答(其实我是想说是不是写了一个无限 reload 之类的才一直闪或者 chrome 内存溢出之类的哈哈)

能够从里面总结一些自己的不足和今后需要努力的,比较细的一个方向吧。

中午出来拍了张照片,随便拍的哈哈:

中午的凌空soho

哈罗单车

这里是两面, 而且这次的除了穿插一些 es6es7 的东西以外主要问了好多 vue 当中的东西:(问的挺多的能记住多少写多少吧。。)

一面

  • vue1 向 2 迁移(没迁移过,只记得钩子函数名称变了,然后还有 sync。)
  • 子向父组件通信(子组件$emit 父组件监听,$parent 访问父组件,sync 修饰符-2.3 加的,然后问 vue1 和 vue2 的 sync 的原理,我知道 2 的其实就是个语法糖,1 没看过,sync 用在解析一个复杂表达式的时候有问题也没去了解)
  • 数组搜索值(includes、indexOf),有啥区别(想了半天最后终于想起来:NaN
  • typeof、instanceof、Object.defineProperty 这些
  • es6 有啥不好用 es5 去实现的吗(Symbol、Map、WeakMap 这些,原因巴拉巴拉)
  • seo (然后就巴拉巴拉把 ssr 和 spa 区别啥的都说了,还有 ssr 原理,然后还有确定你的目的性,如果只是部分页面想要 seo,只需要 prerender 并不要 seo 要明白最终目的)
  •  你知道 webpack 吗?说说理解什么的
  • 引一个 lodash 要怎么样打包(CommonsChunkPlugin 来公用模块拆出来,webpack4 不用这个写,在 optimization 写一个 splitChunks)
  • 代码分割( 用上面的拆分公共模块防止重复,css 也有一个 plugin 去分离,然后用动态导入的方式-> vue-router 懒加载)
  • 最终你发现打包出来有点问题,你会怎么去找问题,怎么看(web 官方文档有,有 3 种方法,还好用过 23333)
  • vue 双向绑定相关(数组那里只能重写数组的方法,因为 Object.defineProperty 没办法去监听数组的 set,然后把 Proxy 说一下,在 set 时候去触发 Dep 的 notify,然后用 return Reflect.set(target, name, value, receiver))
  • 还有什么想问我的
  • 还有一些忘了,想起来加上

二面

二面是 leader 面,问了好多发散性的问题吧,可能自己答得不太好:

  •  你第一个项目负责的部分,主要做了哪些功能
  • 说一下具体的一个实现
  • 你读过哪些源码
  • 简单讲一个你读的最深刻的源码
  • 说一说你读源码的一些心得,你从源码当中  学到了什么
  • 性能优化
  • 对自己的定位,规划
  • 平常去哪些地方学习、遇到过比较棘手的问题
  • 为什么想跳槽,为什么投我们
  • 还有什么想问我的

面试官很 nice,人也很好,问的问题也相当有深度,就是感觉脑壳像被挖干了一样很难受哈哈

目录
  1. 1. 写在前面
  2. 2. 携程
  3. 3. 哈罗单车
    1. 3.1. 一面
    2. 3.2. 二面

Proudly powered by Hexo and Theme by Lap
本站访客数人次
©2016 - 2018 BosenY