2011 面试题

    技术2022-05-20  35

    一、前端技术

      1、ajax原理

    Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。

    XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

    所以我们先从XMLHttpRequest讲起,来看看它的工作原理。

    首先,我们先来看看XMLHttpRequest这个对象的属性。

    它的属性有:

    onreadystatechange 每次状态改变所触发事件的事件处理程序。

    responseText     从服务器进程返回数据的字符串形式。

    responseXML    从服务器进程返回的DOM兼容的文档数据对象。

    status           从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)

    status Text       伴随状态码的字符串信息

    readyState       对象状态值

    0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)

    1 (初始化) 对象已建立,尚未调用send方法

    2 (发送数据) send方法已调用,但是当前的状态及http头未知

    3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

    4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

     

    2、ajax的优点

       Ajax的给我们带来的好处大家基本上都深有体会,在这里我只简单的讲几点:

        1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。

        2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。

      3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

        4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

     

    a.创建XMLHttpRequest对象

    <mce:script language="javascript"><!-- var xmlHttp = null; try { // Firefox, Opera 8.0+, Safari 非IE浏览器 xmlHttp=new XMLHttpRequest(); } catch (e) { //IE浏览器 try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } // --></mce:script>

    b、请求webServer

    function makerequest(serverPage, objID) { //将要被替换的页面位置obj var obj = document.getElementById(objID); //发出页面(serverPage)请求 xmlhttp.open("GET", serverPage); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //将服务器返回的信息替换到页面位置obj obj.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); }

     

          2、ajax应用场景

    场景1.数据验证 在填写表单内容时,需要保证数据的唯一性(例如新用户注册填写的用户名),因此必须对用户输入的内容进行数据验证。

    场景2.按需取数据 分类树或者树形结构在web应用系统中使用得非常广泛,例如部门结构,文档得分类结构常常使用树形空间呈现。

    场景3.自动更新页面 在web应用中有很多数据的变化时十分迅速的,例如最新的热点新闻,天气预报以及聊天室内容等。在Ajax出现之前,用户为了即使了解相应的内容必须不断刷新页面,查看是否有新的内容变化,或者页面本身实现定时刷新的功能(大多数聊天室页面就是这样做的)。

     

          3、js面向对象

     

          4、js作用域

    // 一 js作用域例子 var scope = "global"; var scope2 = "global-scope2" var f1 = function(){ var scope = "function1"; var scope2 = "function1-scope2"; return (function(){ var scope = "function2"; return function(){ alert(scope); alert(scope2); } })(); } f1(); // 结果: function2 function1-scope2 // 说明: 全局作用域-> f1的作用域 ->f2的作用域-> f3的作用域。对于变量scope,先在f3作用域内找,没找到,往外,在f2作用域里找到,使用该值,所以打出的值为 function2。对于scope2,先在f3找,没找到,住外,在f2找,还是没找到,再往外,在f1找,找到,使用该值,所以打出的值为 function1-scope2。 // 二 js作用域特性 var a = 100; function testResult(){ var b = 2 * a; var a = 200; var c = a / 2; alert(b); alert(c); } testResult() // 结果: NaN 100 // 说明:当全局变量和局部变量同名的时候,全局变量是不会主用于同名局部变量的作用域的。也就是说var a=100是不会作用于testResult这个函数中的。

     

     

    二、代码能力

          1、冒泡算法

     

          2、例:如有AAABBBAAAisisisiAAACCC这样一串字符,将前两个AAA替换为ZZZ

     

          3、写个矩型类,再写个彩色矩型类继承上个矩型;

     

          4、

     

     

    三、数据库

          1、静态列交叉表 + 动态列交叉表

     


    最新回复(0)