记科大讯飞武汉研发中心前端面试

很幸运遇到了一个人很好的面试官,问的问题也比较基础,不过自己可能还是基础不扎实吧,也有点紧张,问题回答的一般,主要自己会的都没有说的太好,希望下次面试会有进步,加油!
面试过程还真是步步紧逼的感觉,我自我介绍还没到一半就被打断了。。

1.js如何实现面向对象
答:面向对象有三大特性,封装,继承,多态还没说出口,他就问我如何继承

2.如何继承
我说js主要基于原型链进行继承,原型链主要是基于一个母对象,然后层层分级,原型链最顶层是一个Object原型对象,接着还没说然后下一层分为function array object string number

3.问题变成了原型链是什么
我就说了一堆 不过感觉没说好 只说了根据proto属行进行继承,形成一个链式结构,顶层是母对象,底层是自己创建的对象
求答案

4.又问我基本类型有哪些
我竟然把boolean给完全想不起来了

5.接着问我如何鉴别各大基本类型,如何鉴别null,如何鉴别array和function等
我说用typeof instance鉴定
其实最简单的应该是null === null判断
array直接用isArray
function直接用typeof

6.终于完整回答完一个问题了,又问我prototype和_proto_是什么关系
我就说前者主要在new关键字中起作用,后者是原型链继承的属性

7.问我闭包的意义
封装私有变量 保持不被回收 回答的有点乱不过这两点都说出来了

8.有接着问私有变量有什么意义
避免全局变量污染和错误访问 没回答出安全和保持代码封装性,少出bug,访问便利,只要向上一个作用域

9.问我知道跨域吗
说了 jsonp document.domain window.name
若要详细解答请看我的跨域小结

10问ajax你知道有几种请求
get post

11.http状态码
说了 200 400 401 402 403 404然后终于被打断了

12.问我为何选择vue这个框架
同学推荐
网上评论
看书

13.如何认识组件化开发
答得不好,下面是自己的一点看法
很多人说组件化就是html css js写在一起,并且追求面向对象高内聚、低耦合,实现可复用、拼接。

我理解的组件化开发其实没那么复杂,具体来说,他可能只是一种具体功能的抽象化,如ajax,它也可能只是一个私人个性化定制的元素,当然其实浏览器已经给我们私人定制了input,checkbox等组件,包括样式以及各种接口和性质。当然实际开发中还是要考虑到实际的业务需求,可能跟开源、抽象形成可复用模块不同,实际业务需求中可能会牺牲掉一部分可扩展性来提高性能等,当然反过来说其实我们在选择了抽象、可复用后就增加了复杂度以及牺牲了性能,总之一切还是以项目需求为主,但开源模块就需要相对绝对的可扩展性,高度封装高内聚低耦合很大程度上决定了它的应用范围、未来高度和潜力。

综合一下,说白了组件就是一个高度封装的可扩展的实现一定功能的代码块

14.MVC和MVVM的区别是什么,如何理解MVVM机制
这个问题回答不好,自己根据书在另一篇博客整理了答案

15.介绍vue vuex vue-router
这块答得还可以吧
主要先介绍了vue
后基于vuex如何进行状态管理,vue-router的路由功能展开说了一下,顺便介绍了SPA

16.问看了什么书
dom编程艺术 js高程 js语言精粹 js设计模式与开发设计 you dont know js es6入门 js设计模式 vue权威指南

最后我问他对自己的建议和评价
缺项目经验
团队合作经验
可以考虑转产品?ex me

最后又交流了一下前端技术发展,开发流程等,面试官人不错,虽然感觉他好像知道的也不多。。。

总结一下:
缺乏项目经验,联合后台开发经验
职业规划不明确
学习深度不够,跨域、性能以及对框架认识不够
代码量不够,基础不太扎实

你可能感兴趣的:(面经,JavaScript)