网易考拉前端面经
一面:
- 因为提到了 weex 所以问了点 weex 的问题就不说了
- 然后就是封装一个 url promise
function(url,option){ // option里面的内容是自定义的,说是你可以自己定义 var promise = new Promise({ var xhr = new XMLHttpRequest(); xhr.open(option.method,url,false); xhr.onreadystatechange = handler; xhr.setRequestHeader(option.Header,option.Value); if(option.method == 'get'){ // 写到这里让别写了,说下思路 xhr.send(null); }else{ xhr.send(option.data); } function handler(){ if(this.readyState === 4){ if(this.status >= 200 && this.status < 300 || this.status == 304){ resolve(this.responseText); }else{ reject(New Error(this.statusText)) } } } }) return promise; }
- 防抖和节流,简单实现
// 防抖 function debounce(func,wait){ var timeout; return ()=>{ var self = this; var args = arguments; if(timeout) clearTimeout(timeout); timeout = setTimeout(()=>{ func.apply(self,args); },wait) } } // 节流 function throttle(func,wait){ var timeout; return ()=>{ var self = this; var args = arguments; if(!timeout){ timeout = setTimeout(()=>{ timeout = null; func.apply(self,args) },wait) } } }
- 一个场景题,两栏布局左边定宽,里面的内容居中,右边自适应,然后右边是一个类似购物车一样的东西,可以随意添加删除
- 怎么实现布局,说了 flex,居中有 justify-content,还有一个 align 什么的(align-items)当时忘了。
- flex 1 的意思
- 然后右边怎么做,事件***,怎么知道是哪个触发,有个 target
- 代码里面的性能优化,说了个文档碎片和利用 requestAnimationFrame 实现延迟加载
- 跨域,jsonp 的实现原理
- 数组的遍历方法,reduce 使用场景,这里举了一个自己不是很熟的例子,没圆好
- $emit 用过吗(没有。。。)
- 强缓存和协商缓存
一面大概就这些吧,代码都写出来了感觉还可以,不过二面好多问的都不清楚,很多东西也不记得了,写一下还有印象的吧
二面:
- 模块化的东西了解哪些
- AMD CMD commonjs es6 模块化的区别,CMD 和 ES6 的模块化没怎么了解
- 说下 ES6 的 Map,Set,Promise,Class。说下 Map 和对象的区别,为啥有了对象还要 Map(没答好)
- 写过动画吗(没有)
- webwoker 的作用
- 函数柯里化
- 防抖和节流及应用场景
- 怎么实现一个 tab 吸顶。说了获取位置,根据位置改变 css。具体怎么获取位置没答上来
- 怎么用原生 js 添加类,.className,setAttribute
- 问框架的一些东西说自己因为跨专业没怎么看,所以原理不是太了解
- 前端模块化的一些东西项目中应用的不多,所以了解也有限
大概就这些了吧,实践太少了,好多东西没用过,所以都没说上来,hr 面应该差不多就不说了。
感觉应该是凉了,二面表现的不太好,还挺喜欢网易的,秋招再试试吧。