高级前端面试题,部分答案待补充

高级前端面试题,部分答案待补充,有好的答案可留言提供。

跨域请求原理

1、通过jsonp跨域
利用在页面中创建<script>节点的方法向不同域提交HTTP请求的方法称为JSONP,这项技术可以解决跨域提交Ajax请求的问题。
js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
要解决跨域的问题,我们可以使用以下几种方法:
jsonp的原理就很清楚了,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。
jquery的$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。

2、通过修改document.domain来跨子域
修改document.domain的方法只适用于不同子域的框架间的交互。如果你想通过ajax的方法去与不同子域的页面交互,除了使用jsonp的方法外,还可以用一个隐藏的iframe来做一个代理。原理就是让这个iframe载入一个与你想要通过ajax获取数据的目标页面处在相同的域的页面

3、使用window.name来进行跨域
window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。
window.name的值只能是字符串的形式,这个字符串的大小最大能允许2M左右甚至更大的一个容量,具体取决于不同的浏览器,但一般是够用了。
能兼容到几乎所有浏览器。

4、使用HTML5中新引进的window.postMessage方法来跨域传送数据
使用postMessage来跨域传送数据还是比较直观和方便的,但是缺点是IE6、IE7不支持,所以用不用还得根据实际需要来决定。

除了以上几种方法外,还有flash、在服务器上设置代理页面等跨域方式。

=============================
基本数据类型:String,Boolean,Number,Undefined, Null
引用数据类型:Object(Array,Date,RegExp,Function)
什么是基本数据类型?基本数据类型的概念是什么?
ECMAScript中有5中简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number和String。还有1中复杂的数据类型————Object,Object本质上是由一组无序的名值对组成的。

grunt实时刷新,浏览器如何监听文件改变?
watch + liveReload 实时监测文件变化自动刷新浏览器
LiveReload会监控你指定的目录中文件,如果有文件被更改,它就自动触发浏览器刷新页面。但如果你修改的是CSS或者图片,页面内容会即时更新,无需重新加载。

数据绑定mvvm,双向数据绑定,数据双向刷新,双向数据选择?
如何改变类的作用域?(call apply bind)
字面变量var a = [1,2,3];是否为伪数组?
数组,伪数组,agrument传入的是不是伪数组,es6可用...展开操作符
let var 的区别,优劣点?

npm全称是什么?
NPM的全称是Node Package Manager

less sass 优劣点,bootshrap5会用什么作为css?
CSS 的预处理程序(Sass、LESS、Stylus 等)分别都有哪些优缺点?
SASS2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的css框架,目前受LESS影响,已经进化到了全面兼容CSS的SCSS。
LESS2009年出现,受SASS的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手,在ruby社区之外支持者远超过SASS,其缺点是比起SASS来,可编程功能不够,不过优点是简单和兼容CSS,反过来也影响了SASS演变到了SCSS的时代,著名的Twitter Bootstrap就是采用LESS做底层语言的。
Stylus,2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,在此社区之内有一定支持者,在广泛的意义上人气还完全不如SASS和LESS。


webgl opengl canvs 区别?canvs用到是cpu还是gpu?
Canvas是使用JavaScript程序绘图(动态生成),SVG是使用XML文档描述来绘图。
当浏览器开发商实现了canvas GPU 加速
如果没有GPU加速,移动平台的浏览器一般没有足够强大的CPU来处理基于 canvas的应用。

less 里面有没有for循环?
less没有for循环,用loop方法实现

vue 有那些缺点,react vue 有什么区别?
vue是谁开源的?国内公司用的比较多 Vue.js 的作者尤小右,由饿了么UED设计的桌面端组件库已经开源

nodejs 用在那些地方?跟java比有那些区别?有那些技术框架?跟自动化构建工具有那些关系?跟vue react这种数据绑定框架有什么关系?必须用nodejs吗?高并发,网易pemiloe
响应式布局的核心是什么?栅格化系统的核心是按百分比划分,除了这个还有其他解决方案吗?

大前端,saas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值