猫眼前端面试经历(已拿offer)
1. 一面
- 面试官比较高冷,问了我很多问题有四五个没答上来。首先是自我介绍,没有获奖经历所以就简单说了姓名来自哪里在哪所学校上学跟老师做什么项目。之后开始面试。
- 三列布局的实现方式列出几种来,我就说出三种flex float inline-block
- flex 中的 jusitify-content是什么意思
- cookie和session的区别(我说了我的项目中用了sessionStorage)
- 列举es6的新特性,let const promise generator class 方法声明简写 解构赋值·····
- 在墨客文档上出的题让我做的解构赋值的题比较简单{a: toString} = 123 {toString: a} = 123说出模式匹配来应该就没问题
- 封装一个函数能够把url中的query部分转化成query对象,注意审题我这里就没仔细看题整体不难注意用正则或者str.replace替换字符串达到题目要求
- 栈和队列的区别
- 封装一个方法实现栈不能用数组(提示:可以用链表的数据结构通过指针来倒序输出)
- 为什么构造函数的方法要放在prototype里边为什么不直接用this.的方式声明,因为prototype占用一个存储空间实例通过proto指针指向prototype,可以减少内存占用减少不必要的开销
没有问问题的环节 注意代码整洁
2. 二面
二面面试官比较亲切,也实现自我介绍然后开始面试。
首先问我学前端多久了我说的三个月,然后又问的我一些基础。
- 我简历中写了了解web安全所以问我对XSS和CSRF哪个比较熟悉,我对CSRF中的cookie不太熟悉所以说的XSS然后就问我XSS攻击方式防御手段,H5中哪些标签会被XSS利用,如何处理要展示js代码的部分(例如csdn中的md编辑器)
- 一个代码题,要实现秒杀倒计时的功能,一开始给我一段错误代码,(vue的代码)用的computed属性主要考对计算属性是否熟练,要知道计算属性监控的是哪一部分的属性,之后让我改正。这个还是比较简单的。
- 根据这个代码题又延伸出为什么两个计时器会同时计时,先问的js是如何做到异步的,js的多线程是怎么实现的,然后才问的计时器的原理,因为js是单线程所以要通过浏览器其他线程的辅助,比如ui线程、事件线程、计时器线程等等,然后问的计时器线程应该也是单线程如何让两个计时器同时开始计时的。
- 然后有考的一个代码题for循环里每次绑定一个点击事件最后问输出这个和for循环里放一个定时器是一个原理都是最后输出len(长度)比较简单就不多说了。
- 之后有封装一个node的Emiter就是on和emit方法,因为我说我看过js设计模式所以问得我这个观察者模式。
- 因为我看了js高性能问得我性能方面如何优化。
- vue的插件机制的应用,举例。
- 在学前端的过程中遇到的比较难的问题(已解决的),我说的async await的原理因为我在看《你不知道的JavaScript》的时候看到promise和generator发现两者结合合asnyc和await很像然后研究源码的时候遇到的问题。
- 最后让我问他问题,我问的react的双向数据绑定原理和vue的双向数据绑定原理。
3.三面
面试官好像是总监。首先自我介绍,然后让我讲一下我学前端的原因和经历。
问我读的设计模式中的***模式(这个我给忘了就没说上来)。
问我一个逻辑题,一副扑克拿掉大小王问最多几个人能够抽到相同的两个花色,当时面试官给我疯狂提示,我在楼道接电话面试大脑一片空白一顿胡扯没答上来,面试官有点失望,感觉不想理我了,又问的我如何计算黄河一天流多少吨水,这个幸好说出来了。然后就直接不想面我了问我还有什么问题吗,然后我问的他们的前端是做什么工作,然后很高兴的跟我讲了七八分钟,他负责的是猫眼的核心业务,应该是说到他比较自豪的地方了就态度比较好了,然后我就根据全息投影和体感游戏,问他之后有可能选票可以通过全息投影增强交互感,然后就问的3d对于前端的必要性,问完问题,他又问了我十多分钟,然后就告诉我过了。
这个问问题很关键。
最后晚上hr给我打电话告诉我实习工资然后问我什么时候可以去实习给我办实习offer。