2018-04-02(面试题总结)
一面
-
三列布局8种方法
-
call和apply的区别, 手写ES5 bind的实现, 及作用
-
Promise的使用和实现原理, 手写
-
Promise resolve后是否立即执行
-
多个请求发出, 只要最后一个请求来的数据(使用闭包包裹 ajax , 函数中加参数 (中间件))
-
react动画, 解决DOM显示与隐藏效果
-
subStr和subString的区别 (slice?也可以)
-
如何区分
Obj.a 是原型上的还是自身的 (首先通过查找对象的proto循环查找, 最后是 null; 再检测当前对象的)
-
未知宽高垂直居中
- 遍历
data = {
key1: {
key2: 'str111',
key3: 'str222'
}
key4: '444'
}
function find (data, value) {
}
根据字符串的值返回字符串所在的key及它父级的key
find (data, 'str111') 返回 ['key1', 'key2']
find(data, '444' ) 返回 ['key4']
实现 find函数,
- 二倍图, 多倍图如何处理?
- 如何监听一个数据的变化,自动执行一些函数?
(使用Object.defineProperty添加 set 和 get)
如果这个函数 又修改了 这个值会造成死循环, 怎么解决?
(使用标记变量)
- 如何让 对象的属性不可以枚举(不能使用 for in)?
Object.defineProperty和 enuemerable: false
- 如何让对象的某个属性不可以修改?
Object.freeze
- getElementById和 getElementsByName的区别?
区别是 后者是NodeList 是一个类数组?
如何证明它不是数组?
答: 它没有数组原型里的那些方法?
那如何让它和数组一样, 有那些方法?
Array.prototype.slice.call(NodeList, 0)
- vue用的哪个脚手架? react呢?
如何改造的?
- jsBridge实现原理? hybrid交互原理?
- 是否做过electron ?打包过 dmg?
- 是否在工作中用过网格布局?为什么?
- vh vw是否用过?你用过最多的单位是什么?兼容性如何?
- webpack 代码分割如何做?分割原理什么?
- 你在vue的哪些钩子函数中做什么事儿?
23.微信小程序怎么做的?是否使用原生API?
- Object.defineProperty是 ES几的?
二面
- 设计一个 弹层组件 使用vue实现?
考察:
抽象需求, 设计props, 接口设置, 显示和隐藏使用 某个属性, 子传父 $.emit和callback哪个好? slot
动画内部设置免去用户设置
- 你在项目中用的vue-router的哪种模式?
hash
- 父子组件传参
vuex在那些情况用?
vuex怎么取出数据? mapSetter mapGetter
- display有哪些属性?
flex最低兼容到哪个版本?
- 你用过哪些ES6的东西? 说的越多越好
esModule, class, 箭头函数,
结构, 计算属性(函数), 延展符号,
async/await, 模板字符串, for of
map set
- 单词语音朗读记录?如
Happy, "new" world !!!
会调用服务器接口
返回 某些单词的分数结果, 只包含 <=60的(读的不好的, 让你用红色的标记出来, 再显示出来)
返回结果类似
[
{
word: 'Happy',
score: 55
}
]
参考答案:
<1> 正则捕获所有单词 var arr = []
<2> 把这个 句子 根据所有单词 生成 DOM结构,如
<p>Happy</p >
<3>遍历结果数组,看那些有, 找到索引后把DOM对应索引的东西class改变
7.如何处理css,兼容不同浏览器?
构建工具: postcss, autoprefixer
- 如何线上埋点 , 追踪分析性能问题?
- v-if和 v-show的区别?如何选择?
- 在 vue中是否使用了 jsx?
- $emit的原理?
三面
HTTP状态码?
301
302
304
304是由哪个header产生的?
max-age是什么
cache-control是什么
etag是什么
你在工作中觉得技术 最有亮点的一次经历?
职业发展方向?