zoukankan      html  css  js  c++  java
  • ajax常考的面试题汇总

    (面试题从网上收集)

    1、什么是AJAX,它的特点是什么,为什么要使用Ajax(请谈一下你对Ajax的认识)

      AJAX的全称是Asynchronous JavaScript And XML.

      Ajax可以实现动态不刷新(局部刷新) 就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

      AJAX是2005年由Google发起并流行起来的编程方法, AJAX不是一个新的编程语言,但是它是一个使用已有标准的新的编程技术。
      使用AJAX可以创建更好,更快,更用户界面友好的Web应用。
      AJAX技术基于Javascript和HTTP Request.

    2、什么样的情况会造成跨域,跨域解决方案有哪些?

      同源策略限制 不同源会造成跨域。子域名不同,主域名不同,端口号不同,ip地址和网址不同都会造成跨域。

      解决方案有三种:

      1、代理服务器

      2、设置请求头:Access-Control-Allow-Origin: * //允许所有域名访问

             Access-Control-Allow-Origin: http://a.com //只允许所有域名访问

      3、jsonp(只能解决get跨域

        原理:动态创建一个script标签。利用script标签的src属性不受同源策略限制。因为所有的src属性和href属性都不受同源策略限制。可以请求第三方服务器数据内容。

        步骤:

      1.   去创建一个script标签
      2.   script的src属性设置接口地址
      3.   接口参数,必须要带一个自定义函数名 要不然后台无法返回数据。
      4. 通过定义函数名去接收后台返回数据

    3、http常见状态码有哪些?  

      状态码:

        0: 请求未初始化

        1: 服务器连接已建立

        2: 请求已接收

        3: 请求处理

        4: 请求已完成,且响应已就绪

      http状态响应码:
        1xx 信息类

          100   (继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分

        2xx 成功

          200   (成功)  服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

        3xx 重定向

          304   (未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

        4xx 客户端错误

          404   (未找到)服务器找不到请求的网页。

        5xx 服务端错误 

          503   (服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

    4、简述原生js ajax请求的几个步骤?

    //创建 XMLHttpRequest 对象
    var ajax = new XMLHttpRequest();
    //规定请求的类型、URL 以及是否异步处理请求。
    ajax.open('GET',url,true);
    //发送信息至服务器时内容编码类型
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    //发送请求
    ajax.send(null);  
    //接受服务器响应数据
    ajax.onreadystatechange = function () {
        if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) { 
        }
    };
    

      

    5、介绍ajax中get和post的请求方式及他们的优缺点?

       代码上的区别

        1:get通过url传递参数

        2:post设置请求头 规定请求数据类型

      使用上的区别

        1:post比get安全 (因为post参数在请求体中。get参数在url上面)

         2:get传输速度比post快 根据传参决定的。 (post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)

         3:post传输文件大理论没有限制 get传输文件小大概7-8k ie4k左右

        4:get获取数据 post上传数据 (上传的数据比较多 而且上传数据都是重要数据。所以不论在安全性还是数据量级 post是最好的选择)

    6、Ajax和javascript的区别。

      javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript。

      Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是没有任何关系的,它们相似的名称只是一种行销策略。
      在一般的web开发中,javascript是在浏览器端执行的,我们可以用javascript控制浏览器的行为和内容。
      在 Ajax应用中信息是如何在浏览器和服务器之间传递的,通过XML数据或者字符串

    7、Ajax都有哪些优点和缺点?

      优点:

      1、最大的一点是页面无刷新,用户的体验非常好。

      2、使用异步方式与服务器通信,具有更加迅速的响应能力。
      3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
      4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

      缺点:
      1、ajax不支持浏览器back按钮。
      2、安全问题 AJAX暴露了与服务器交互的细节。
      3、对搜索引擎的支持比较弱。
      4、破坏了程序的异常机制。
      5、不容易调试。

    8json字符串转换集json对象、json对象转换json字符串

    //字符串转对象
    JSON.parse(json)
    eval('(' + jsonstr + ')')   
    // 对象转字符串
    JSON.stringify(json)
    

    9、Ajax主要包含了哪些技术?  

      Ajax(Asynchronous JavaScript + XML)的定义
      基于web标准(standards-based presentation)XHTML+CSS的表示;
      使用 DOM(Document Object Model)进行动态显示及交互;
      使用 XML 和 XSLT 进行数据交换及相关操作;
      使用XMLHttpRequest 进行异步数据查询、检索;
      使用 JavaScript 将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文,原文题目(Ajax: A New Approach to Web Applications)。
      类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
      AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式对象,也不支持XSLT。

    10、AJAX技术体系的组成部分有哪些。

       HTML,css,dom,xml,xmlHttpRequest,javascript

    11、请解释一下 JavaScript 的同源策略。

      同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。所谓同源指的是:协议,域名,端口相同,同源策略是一种安全协议,

        指一段脚本只能读取来自同一来源的窗口和文档的属性。

    12、AJAX请求总共有多少种CALLBACK

       Ajax请求总共有八种Callback 
        onSuccess 
        onFailure 
        onUninitialized 
        onLoading 
        onLoaded 
        onInteractive 
        onComplete 
        onException 

    13、介绍一下XMLHttpRequest对象的常用方法和属性。 

      open(“method”,”URL”) 建立对服务器的调用,第一个参数是HTTP请求 方式可以为GET,POST或任何服务器所支持的您想调用的方式。
      第二个参数是请求页面的URL。
      send()方法,发送具体请求
      abort()方法,停止当前请求
      readyState属性 请求的状态 有5个可取值0=未初始化 ,1=正在加载
      2=以加载,3=交互中,4=完成
      responseText 属性 服务器的响应,表示为一个串
      reponseXML 属性 服务器的响应,表示为XML
      status 服务器的HTTP状态码,200对应ok 400对应not found

    14、解释jsonp的原理,以及为什么不是真正的ajax  

      Jsonp并不是一种数据格式9,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签的src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,

      参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术

    15、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

      分为4个步骤:

        1. 当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。

        2. 浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服

          务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

        3. 一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。

        4. 此时,Web 服务器提供资源服务,客户端开始下载资源。

    16、介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用

      $() 方法是在DOM中使用过于频繁的document.getElementByIdx_x_x() 方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的id的那个元素。
      $F()函数是另一个大收欢迎的“快捷键”,它能用于返回任何表单输入控件的值,比如textbox,drop-down list。这个方法也能用元素id或元素本身做为参数。
      $A()函数能把它接收到的单个的参数转换成一个Array对象。
     
    17、同步和异步的区别?

      同步:浏览器向服务器请求数据,服务器比较忙,浏览器一直等着(页面白屏),直到服务器返回数据,浏览器才能显示页面。

      异步:浏览器向服务器请求数据,服务器比较忙,浏览器可以自如的干原来的事情(显示页面),服务器返回数据的时候通知浏览器一声,浏览器把返回的数据再渲染到页面,局部更新。

    18、为什么利用多个域名来存储网站资源会更有效?
     
      确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他域名访问网站,并且不同的资源放到不同的服务器上有利于减轻单台服务器的压力。
  • 相关阅读:
    java模拟多线程
    zookeeper的搭建方法
    虚拟机无法ping通物理机的解决方案
    虚拟机桥接模式下多台Ubuntu16.04系统互相连接
    Ubuntu下安装libpcap+测试安装
    在Ubuntu下安装gcc编译器+测试
    在Ubuntu下配置jdk+maven
    使用Xshell对虚拟机上的Ubuntu系统进行远程连接
    javaWeb开发中常见的问题
    如何用eclipse运行导入的maven项目
  • 原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10439502.html
Copyright © 2011-2022 走看看