原作链接:https://blog.csdn.net/allenliu6/article/details/62441325
科大讯飞武汉研发中心前端面试
很幸运遇到了一个人很好的面试官,问的问题也比较基础,不过自己可能还是基础不扎实吧,也有点紧张,问题回答的一般,主要自己会的都没有说的太好,希望下次面试会有进步,加油!
面试过程还真是步步紧逼的感觉,我自我介绍还没到一半就被打断了。。
js如何实现面向对象
答:面向对象有三大特性,封装,继承,多态还没说出口,他就问我如何继承如何继承
我说js主要基于原型链进行继承,原型链主要是基于一个母对象,然后层层分级,原型链最顶层是一个Object原型对象,接着还没说然后下一层分为function array object string number问题变成了原型链是什么
我就说了一堆 不过感觉没说好 只说了根据proto属行进行继承,形成一个链式结构,顶层是母对象,底层是自己创建的对象
求答案又问我基本类型有哪些
我竟然把boolean给完全想不起来了接着问我如何鉴别各大基本类型,如何鉴别null,如何鉴别array和function等
我说用typeof instance鉴定
其实最简单的应该是null === null判断
array直接用isArray
function直接用typeof终于完整回答完一个问题了,又问我prototype和proto是什么关系
我就说前者主要在new关键字中起作用,后者是原型链继承的属性问我闭包的意义
封装私有变量 保持不被回收 回答的有点乱不过这两点都说出来了有接着问私有变量有什么意义
避免全局变量污染和错误访问 没回答出安全和保持代码封装性,少出bug,访问便利,只要向上一个作用域问我知道跨域吗
说了 jsonp document.domain window.name
若要详细解答请看我的跨域小结问ajax你知道有几种请求
get posthttp状态码
说了 200 400 401 402 403 404然后终于被打断了问我为何选择vue这个框架
同学推荐
网上评论
看书如何认识组件化开发
答得不好,下面是自己的一点看法
很多人说组件化就是html css js写在一起,并且追求面向对象高内聚、低耦合,实现可复用、拼接。
我理解的组件化开发其实没那么复杂,具体来说,他可能只是一种具体功能的抽象化,如ajax,它也可能只是一个私人个性化定制的元素,当然其实浏览器已经给我们私人定制了input,checkbox等组件,包括样式以及各种接口和性质。当然实际开发中还是要考虑到实际的业务需求,可能跟开源、抽象形成可复用模块不同,实际业务需求中可能会牺牲掉一部分可扩展性来提高性能等,当然反过来说其实我们在选择了抽象、可复用后就增加了复杂度以及牺牲了性能,总之一切还是以项目需求为主,但开源模块就需要相对绝对的可扩展性,高度封装高内聚低耦合很大程度上决定了它的应用范围、未来高度和潜力。
综合一下,说白了组件就是一个高度封装的可扩展的实现一定功能的代码块MVC和MVVM的区别是什么,如何理解MVVM机制
这个问题回答不好,自己根据书在另一篇博客整理了答案介绍vue vuex vue-router
这块答得还可以吧
主要先介绍了vue
后基于vuex如何进行状态管理,vue-router的路由功能展开说了一下,顺便介绍了SPA问看了什么书
dom编程艺术
js高程
js设计模式与开发设计
es6入门
js设计模式
vue权威指南最后我问他对自己的建议和评价
缺项目经验
团队合作经验
可以考虑转产品?ex me
最后又交流了一下前端技术发展,开发流程等,面试官人不错,虽然感觉他好像知道的也不多。。。
总结一下:
缺乏项目经验,联合后台开发经验
职业规划不明确
学习深度不够,跨域、性能以及对框架认识不够
代码量不够,基础不太扎实