1.HTTP状态码

100  Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
    200  OK   正常返回信息
    201  Created 请求成功并且服务器创建了新的资源
    202  Accepted 服务器已接受请求,但尚未处理
    301  Moved Permanently  请求的网页已永久移动到新位置。
    302 Found  临时性重定向。
    303 SeeOther  临时性重定向,且总是使用 GET 请求新的 URI。
    304  Not Modified 自从上次请求后,请求的网页未修改过。
    400 BadRequest  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
    401 Unauthorized  请求未授权。
    403Forbidden  禁止访问。
    404 NotFound  找不到如何与 URI 相匹配的资源。
    500 InternalServer Error  最常见的服务器端错误。
    503 ServiceUnavailable 服务器端暂时无法处理请求(可能是过载或维护)。


    2.说说你对Promise的理解

    依照 Promise/A+ 的定义,Promise 有四种状态:
    
    pending: 初始状态, 非fulfilled 或 rejected.
    
    fulfilled: 成功的操作.
    
    rejected: 失败的操作.
    
    settled: Promise已被fulfilled或rejected,且不是pending
    
    另外, fulfilled 与 rejected 一起合称 settled。
    
    Promise 对象用来进行延迟(deferred) 和异步(asynchronous ) 计算。
    
    Promise 的构造函数
    
    构造一个 Promise,最基本的用法如下:
    
        var promise = new Promise(function(resolve, reject) {
    
     
    
            if (...) {  // succeed
    
               resolve(result);
    
            } else {   // fails
    
                reject(Error(errMessage));
    
            }
    
        });
    Promise 实例拥有 then 方法(具有 then 方法的对象,通常被称为 thenable)。它的使用方法如下:
    promise.then(onFulfilled, onRejected)
    接收两个函数作为参数,一个在 fulfilled 的时候被调用,一个在 rejected 的时候被调用,接收参数就是 future,onFulfilled对应 resolve, onRejected 对应 reject。


      3.说说你对前端架构师的理解

      负责前端团队的管理及与其他团队的协调工作,提升团队成员能力和整体效率; 
      带领团队完成研发工具及平台前端部分的设计、研发和维护; 
      带领团队进行前端领域前沿技术研究及新技术调研,保证团队的技术领先 
      负责前端开发规范制定、功能模块化设计、公共组件搭建等工作,并组织培训。
      
      实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
      
          Object.prototype.clone = function(){
      
                  var o = this.constructor === Array ? [] : {};
      
                  for(var e inthis){
      
                         o[e] = typeofthis[e] === "object" ? this[e].clone() : this[e];
      
                  }
      
                  return o;
      
          }


        4.说说严格模式的限制

        严格模式主要有以下限制:
        
        变量必须声明后再使用
        
        函数的参数不能有同名属性,否则报错
        
        不能使用with语句
        
        不能对只读属性赋值,否则报错
        
        不能使用前缀0表示八进制数,否则报错
        
        不能删除不可删除的属性,否则报错
        
        不能删除变量delete prop,会报错,只能删除属性delete global[prop]
        
        eval不会在它的外层作用域引入变量
        
        eval和arguments不能被重新赋值
        
        arguments不会自动反映函数参数的变化
        
        不能使用arguments.callee
        
        不能使用arguments.caller
        
        禁止this指向全局对象
        
        不能使用fn.caller和fn.arguments获取函数调用的堆栈
        
        增加了保留字(比如protected、static和interface)
        
        设立”严格模式”的目的,主要有以下几个:
        
        § 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
        
        § 消除代码运行的一些不安全之处,保证代码运行的安全;
        
        § 提高编译器效率,增加运行速度;
        
        § 为未来新版本的Javascript做好铺垫。
        
        注:经过测试IE6,7,8,9均不支持严格模式。


          5.如何删除一个cookie

          1.将时间设为当前时间往前一点。
          
          var date = newDate();
          
          date.setDate(date.getDate() - 1);//真正的删除
          
          setDate()方法用于设置一个月的某一天。
          
          2.expires的设置
          
              document.cookie= 'user='+ encodeURIComponent('name')  + ';expires = ' + newDate(0)
          
          <strong>,<em>和<b>,<i>标签
          
          <strong>标签和 <em>标签一样,用于强调文本,但它强调的程度更强一些。
          
          em 是 斜体强调标签,更强烈强调,表示内容的强调点。相当于html元素中的<i>...</i>;
          
          < b >< i >是视觉要素,分别表示无意义的加粗,无意义的斜体。
          
          em 和 strong 是表达要素(phraseelements)。


            6.说说你对AMD和Commonjs的理解

            CommonJS是服务器端模块的规范,Node.js采用了这个规范。CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载模块,允许指定回调函数。
            
            AMD推荐的风格通过返回一个对象做为模块对象,CommonJS的风格通过对module.exports或exports的属性赋值来达到暴露模块对象的目的。
            
            document.write()的用法
            
            document.write()方法可以用在两个方面:页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容。
            
            document.write只能重绘整个页面。innerHTML可以重绘页面的一部分
            
            编写一个方法求一个字符串的字节长度
            
            假设:一个英文字符占用一个字节,一个中文字符占用两个字节
            
             functionGetBytes(str){
            
             
            
                    var len = str.length;
            
                    var bytes = len;
            
                    for(var i=0; i<len; i++){
            
                        if (str.charCodeAt(i) >255) bytes++;
            
                    }
            
                    return bytes;
            
                }
            
            alert(GetBytes("你好,as"));


              7.说说你对MVC和MVVM的理解

              MVC
              View 传送指令到 Controller
              Controller 完成业务逻辑后,要求 Model 改变状态
              Model 将新的数据发送到 View,用户得到反馈
              所有通信都是单向的。
              Angular它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。
              组成部分Model、View、ViewModel
              View:UI界面
              ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;
              Model:数据访问层


                8.请解释什么是事件代理

                事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是可以提高性能。


                  9.说说网络分层里七层模型是哪七层

                  § 应用层:应用层、表示层、会话层(从上往下)(HTTP、FTP、SMTP、DNS)
                  § 传输层(TCP和UDP)
                  § 网络层(IP)
                  § 物理和数据链路层(以太网)
                  每一层的作用如下:
                  物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
                  数据链路层:将比特组装成帧和点到点的传递(帧Frame)
                  网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
                  传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
                  会话层:建立、管理和终止会话(会话协议数据单元SPDU)
                  表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
                  应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
                  
                   
                  
                  各种协议
                  
                  ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 
                  TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 
                  HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。 
                  DHCP协议: 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。


                    10.讲讲304缓存的原理

                    服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
                    304是HTTP状态码,服务器用来标识这个文件没修改,不返回内容,浏览器在接收到个状态码后,会使用浏览器已缓存的文件客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展现该页面,并将页面连同ETag一起缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。