技术干货让前端飞

前端常问面试题

2017-07-06  本文已影响0人  getElementsByMK

1.什么是面向对象?

面向对象是一种编程思想,是一种解决问题的思路。
传统的编程思想是面向过程,他关注的是实现功能的步骤。
在面向对象的思想中我们只需要关注实现功能的对象。而不必要知道这个对象是怎么实现这个功能的。拿来用就行了。比如说吃饭,我们不需要会做饭,只要知道点个餐,就会有饭吃就行了。
面向对象的三个特点:
封装:将数据和功能结合在一起就是封装。
继承:所谓继承就是别人没有的东西,我拿过来,变成自己的东西。
多态:多态这个概念是基于强类型的语言的,而js是弱语言,他本身就是多态的。

2.sass与less有什么区别?二者有何优缺点?

Sass(Sass3又称为SCSS)和less都是CCS的预处理器。
而且less是参考了sass而创造出来的。二者的语法都差不多。
sass比less要强大,sass可以自定义函数,自由使用if语句,而这些都是less所不具备的。我推荐使用sass。

3.什么是AMD规范?

AMD是Asynchronous Module Definition,异步模块定义,是一种浏览器端的模块开发规范。而服务端是用的CommonJS规范。
requireJS对模块的态度是预执行,将需要依赖的的模块先加载出来。
优点:
(1)实现js文件的异步加载,避免网页失去响应;
(2)管理模块之间的依赖性,便于代码的编写和维护。
前端模块化开发的优点:
(1)方便代码的后期维护
(2)防止全局变量的污染
(3)更好的进行HTML和JS分离

MVC和MVVM设计模式

MVC(Model View Controller)数据模型 视图 控制器
缺点:
1.模型的代码很少
2.容易造成控制器代码冗余
3.不好测试
MVVM(Model View ViewModel)数据模型 视图 视图模型
MVVM的概念:
1.在MVVM中,View和Controller联系到一起,成为一个组件
2.View和Controller都不能直接引用model
3.在ViewModel中写验证逻辑、视图显示逻辑、发起网络请求和其他代码
MVVM使用注意事项:
1.view 引用 view model,但反过来不行
2.view model 引用了 model,但反过来不行
3.如果我们破坏了这些规则,便无法正确地使用 MVVM
MVVM 的优点
1.低耦合:View 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的 View 上
2.可重用性:可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑
3.独立开发:开发人员可以专注于业务逻辑和数据的开发 ViewModel,设计人员可以专注于页面设计
4.可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对 ViewModel 来进行测试

JSONP的优缺点?

优点:
1.它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制,JSONP可以跨越同源策略;
2.它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持
3.在请求完毕后可以通过调用callback的方式回传结果。将回调方法的权限给了调用方。这个就相当于将controller层和view层终于分开了。我提供的jsonp服务只提供纯服务的数据,至于提供服务以 后的页面渲染和后续view操作都由调用者来自己定义就好了。如果有两个页面需要渲染同一份数据,你们只需要有不同的渲染逻辑就可以了,逻辑都可以使用同 一个jsonp服务。
缺点:
1.它只支持GET请求而不支持POST等其它类型的HTTP请求
2.它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。
3.jsonp在调用失败的时候不会返回各种HTTP状态码。
4.缺点是安全性。万一假如提供jsonp的服务存在页面注入漏洞,即它返回的javascript的内容被人控制的。那么结果是什么?所有调用这个 jsonp的网站都会存在漏洞。于是无法把危险控制在一个域名下…所以在使用jsonp的时候必须要保证使用的jsonp服务必须是安全可信的。

上一篇下一篇

猜你喜欢

热点阅读