半年前端寒冬小厂面试经

1,600 阅读3分钟

都说程序员应该多出去面试,不然不知道自己有多菜,本着我是菜鸡我怕谁的铁头精神,这两天也积极投递简历,寻求面试机会,但是因为经验不足的问题,很多大公司连简历都过不了,只有一些创业公司给了面试机会,不过创业公司问的也挺具代表性的,不敢苟藏,分享出来。

首先自我介绍一下,我叫XXX,武汉某211小本,18年6月毕业,刚毕业的时候写了三个月的java(Ctrl C + Ctrl V);三个月前,前端基础很薄弱,连引用类型和值类型都傻傻分不清楚,是一个24k如假包换的菜鸡。经过三个月的学习,自我感觉长进了不少(或许是错觉),结果面试下来还是觉得,嗯,果然还是菜鸡。

因为是创业公司,就不报公司名字了(反正没人听过),是一家做区块链的。

一面:
  1. 一道算法题,大意如下:1由一个1组成(1 = 1),2由一个2或两个1组成(2 = 1 + 1; 2 = 2),3由一个3,3个一,一个1和一个2组成(3 = 3; 3 = 1+1+1; 3=1+2),问n有几种组成方式。(dp,找出dp表达式即可)
  2. 说一下数组去重的方式(这个芽羽大神的博客上讲的很清楚,想了解的可以去看一下,set和O(n^2)复杂度的这两个方法肯定不是面试官想听的,排序去重,indexOf,es6等是比较好的答案,为了装逼,我还说了一个前缀树去重)
  3. 你说到前缀树去重,那你讲一下怎么做(装逼成功,想了解前缀树的自己百度去吧,很多资料)
  4. 说一下vue双向绑定的原理(这里从源码层面讲了十多分钟,效果应该还不错)
  5. 平时用过哪些es6的特性(let,const,模板字符串,promise,箭头函数等等)
  6. promise是解决什么的
  7. 如果要你实现一个promise,你该怎么实现(这个因为看过promise的实现方法,也答得不错)
  8. 有了解async,await吗(generator的语法糖,使异步代码表现得像同步)
  9. 那你说说generator呢
  10. 讲一下XSS(对不起,只知道是安全方面的,了解的不多)
  11. 有了解过weex,rn这些吗(没,目前只做过pc端)
  12. node呢(没)
  13. 说说跨域吧(浏览器有个同源策略,巴拉巴拉,解决方案是,后端设置cors,前后端配合jsonp,个人觉得最好的方案是修改nginx配置)
  14. 讲一下闭包(这个要讲的东西很多,能够把作用域,作用域链,执行上下文栈讲清楚即可)
  15. 如何实现一个居中布局(老生常谈了)
  16. 各种奇奇怪怪的css,具体题目忘了,反正css答得不好
一面大概面了一个多小时,我以为挂了,结果让我等一下,所以又苟到了二面:
  1. 讲一下vue数据驱动原理
  2. 讲一下vNode,为什么要用vNode,讲一下diff算法
  3. 讲一下let和var的区别
  4. 你刚刚说到暂时性死区,讲一下暂时性死区呢
  5. 箭头函数和普通函数的区别(this?)
  6. 怎么实现promise的all方法
  7. 讲一下浏览器的缓存
  8. js的继承机制
  9. 说一下闭包
  10. 了解过哪些设计模式
  11. 怎么实现一个单例
  12. 平时获取知识的渠道(掘金,github,公众号,微信群?)
  13. 有做过weex,rn这些吗(没有)
  14. 怎么没去试试大厂(因为菜啊)
  15. 前端打包工具有了解吗(webpack只跟着官网配过,没在项目中实操过)
二面大概面了四十多分钟,我以为要让我走了,结果让我等一下,来了hr,好了,没了。