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


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

    跨域请求原理

    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

  • 相关阅读:
    知识体系总结
    计算机基础总结
    Redis总结
    Mysql总结
    JAVA基础总结
    有锁编程
    CAS
    读写自旋锁
    org.apache.log4j.Logger详解
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
  • 原文地址:https://www.cnblogs.com/zdz8207/p/web-js-devloper-face.html
Copyright © 2020-2023  润新知