1、有没有用过MVVM框架?
2、es6你懂多少(主问promises,对象字面量)?
答: Promises 是处理异步操作的一种模式
3、ng自定义指令中compile和link的区别?
答:两者都是可以对指令的模板进行转换,link作用在于模型和视图之间建立关联。
conpile种必须要在函数体内返回一个return ,而这个return就是link
4、浏览器缓存
答:第一种方法:前端修改文件名称后缀添加时间戳和随机数,这样会修改文件名
第二种方法:(后台把状态码304指向200,达到消除缓存) 301 才是重定向
5、ng-if和ng-show/ng-hide有什么区别实现的原理是什么?(不是问怎么用)
答:1、ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。通过display
2、ng-if指令可以根据表达式的值在DOM中生成或移除一个元素。
6、给你一个PSD图,你能把他还原出来吗?
7、TypeScript有了解过吗?(公司使用ng2和TypeScript作开发)
答:类似于es6,单语法上有区别
8、要把一个伪数组转为真数组?
答:[].slice.call(obj)。
当时答了[].push.call(obj).... 我也记得有一个东西可以转换,但真的自己一个人想和被问到两码事
9、说说DOM的一些基本API?
10、documentfragment
答:当页面需要加载10000个div时,用这个方法临时占位,可以提高浏览器性能,具体百度
11、简单说说原型链继承?继承过来的属性和方法能否被修改
答:原型链继承就是通过父对象的实例赋值给子对象的原型,实现子对象的实例可以获取父对象的所有实例属性和方法以及原型属性和方法,继承过来的属性和方法当遇到是引用类型的时候会出现共享问题,也就是子对象实例可以修改到父对象的属性和方法
真想不到当年我把这个教人教得如何如何,还自己写blog分析,当真正面试被问到,我竟然答错了这个最基础的问题,笑了,估计要败也是败在这里。
12、js中怎样避免过多的回调函数的嵌套(回调嵌套:http://callbackhell.com/)
1、把你的回调函数提取出来,命名,写成可复用的函数;
2、尽量使用模块,一个模块处理一件事情;
3、如果是node.js的话,单独处理每个错误;
4、嵌套结构不要太深,可以合理的使用promise;
回调函数在异步调用的时候真正需要它,通过你对函数的接口设计来减少
Promise方法可以使异步回调函数调用代码结构同步化,但不能改变回调函数的存在
promise深度分析好文章(https://juejin.im/entry/58e1d720ac502e006c0e0196)