美文网首页
阿里前端面试总结

阿里前端面试总结

作者: 65f1a3abfb76 | 来源:发表于2017-07-10 13:53 被阅读0次

    有一种总结叫,别人的面试,我自己的总结是,话不多说,说说我的总结。

    1.HTTPS里面能发送HTTP请求吗?

    是不行的,HTTPS下无法发送HTTP资源请求,但是利用iFrame或者相对路径来实现

    HTTP与HTTPS的区别 

    这个问题已经牵扯到了跨域问题(具体见问题3)

    2.Ajax底层的实现

    关于Ajax需要记住三点:异步 / 回掉 / 线程

    理解:Ajax是告诉浏览器给我要发送一个HTTP请求,你给我新开个线程去执行下,完事后告诉我一声,我在其他function中执行后续操作(回调)。在线程返回结果前,我可以继续做其他事情。(异步

    使用Ajax的JS代码:

    var xhr;

    if(window.XMLHttpRequest) {

            xhr = new XMLHttpRequest();

    }else {

            xhr = new ActiveXObject('Microsoft.XMLHttp');

    }

    xhr.open("get", URL, true);

    xhr.onreadyStateChange = function() {

           if(xhr.readyState && xhr.status == 200) {

                   console.log("成功")

            }

    }

    xhr.send(null);

    还可以通过fetch来替代XMLHttpRequest(并不是专为Ajax实现的),Fetch API 是基于 Promise 设计

    关于Fetch

    3.Ajax和HTTP协议的关系

    HTTP协议基于可靠的TCP协议,TCP协议是面向连接的,可靠的,面向字节流,拥有流量控制和拥塞控制的传输层协议,HTTP协议是无连接无状态的,HTTP的请求生命周期就是一个往返,请求道响应

    AJAX指代的就是浏览器通过JavaScript发起HTTP请求的一系列技术,主要目的就是实现局部刷新,AJAX的核心就是通过JavaScript程序调用而发起的一次HTTP请求

    4.跨域的问题

    跨域的解释和解决办法

    关于callback函数名字能不能重复?

    这个我觉得是不能重复的,在JavaScript中是没有多态的,所以如果出现重复的函数名,则会发生覆盖现象,后者会覆盖前者

    如果能重复,怎么区别?比如A,B两个请求,callback的名字是一样的,怎样去区分返回的数据是a的还是b的?

    既然都是假设,那么我也来假设一下,假设A和B请求到的JSON格式的数据的键存在不同的,那么可以通过对该字段判断存在是否,从而确定是A的请求数据或者是B的请求数据,或者说键的个数是不一样的,然后进行判断

    5..textarea和input的区别?用一个div模拟textarea的实现?

    区别: input是一个单行输入框,有value属性,不能自动换行,用来放置字数较少的单行内容

    textarea是一个多行输入框,没有value属性,但是可以自动换行,一般用户可以输入多行文字

    实现:   div实现textarea

    6.一个页面节点太多,会出现什么问题?优化?

    当页面的节点过多,会出现卡顿现象,界面的修改都是通过DOM操作实现的,而不是简单的刷新页面,DOM操作会影响前端性能,那么DOM操作的优化就显得尤其重要,DOM操作优化的总原则就是尽量减少DOM操作

    回流与重绘: 回流就是渲染树上的一部分或者全部因为元素的规模、尺寸、隐藏等改变而需要重新构建; 重绘就是渲染树中的一些元素需要更新,但是这些属性只影响元素的外观,风格,而不影响布局; 其中回流比重绘代价高

    优化: 合并多次的DOM操作为单次的DOM操作,把DOM元素离线或隐藏后修改(文档碎片、display-none,克隆DOM到内存中),尽量少取得DOM的布局信息,事件委托方式

    相关文章

      网友评论

          本文标题:阿里前端面试总结

          本文链接:https://www.haomeiwen.com/subject/gacehxtx.html