1、MIME类型

  MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开;

  它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理(即指定应用程序打开);

  最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型:

    由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系;

    而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型;

    服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义:

      例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分:

        Content-type:text/html

   

      注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。

  每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类:如text/javascript。

2、包含在<script>元素内部的js代码将被解释器从上至下依次解释。

3、浏览器不会检查包含JavaScript的文件的扩展名,但是服务器通常需要看扩展名决定响应应用哪种MIME类型:

  浏览器作为客户端程序,只是从服务器接收数据流,并不了解文件的名字,当然也不会检查文件的扩展名;

  浏览器需要指定应用程序来处理接收到的文件,就必须要知道文件的MIME类型;

  而文件的MIME类型信息是由服务器将其附加在文件之前;

  服务器为使用文件的扩展名来区分不同文件的MIME类型(方便存储/管理文档),就必须定义文件的扩展名与MIME类型之间的对应关系。

  文档 VS 文件?:

    文档是用来存储文字、数据格式的资料;

    文件的定义就很宽泛,凡是存储数据的基本上都可以称为文件。

4、XML HTML XHTML  HTML5

  XML:

    可扩展标记语言(EXtensible Markup Language);

    被设计为传输和存储数据,而非显示数据,关注的是数据的内容;

    标签没有被预定义,需要自行定义标签;

    被设计为具有自我描述性:

      XML是独立于其他平台定义的,例如XML 定义了一个 User 的结构,用来在 java平台和c平台交换数据;
      这个User 的XML结构不需要依赖 java中的类结构, 也不需要依赖c中的结构体,而是自己定义的XSD或者DTD;
       java和c只要按照这个xsd或者dtd去解析XML就可以了。
      DTD:
        文档类型定义(Document Type Definition)是一套关于标记符的语法规则(为进行程序间的数据交换);
        DTD应放置在Web文档的第一行,告诉浏览器使用何种标记语言(如HTML、XHTML等)的规则;
        DTD文档包括:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则;

        <!--================== Block level elements ==============================-->

        <!ENTITY % heading "h1|h2|h3|h4|h5|h6">

        以上两句来自http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd,显然就是在定义块级元素实体heading; 

        DTD文件是一个ASCII的文本文件,后缀名为.dtd。

      DTD与XML的关系:        

        是XML1.0版规格的一部分,它是XML文件的验证机制,属于XML文件组成的一部分,DTD在XML文件所扮演得角色就是定义XML文件的元素架构、元素标记和属性;     

        定义好DTD,再使用编辑工具如XML Spy 或者验证工具 XML validate就可以对编写好的XML文件进行DTD检查内容是否为合法的XML文件内容;

        DTD拥有自己独特的语法和编写方式,它和XML文件的标记架构完全不同。

      XSD

        XML结构定义(XML Schemas Definition),是DTD的替代品;

        XSD中会定义:文档中出现的元素、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值;

        代替DTD的原因:一是依据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。

      命名空间:

        Namespace,表示标识符(identifier)的上下文(context);

        一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的;

        这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。

        在大型的计算机程序或文档中,往往会出现数百或数千个标识符;

        命名空间提供一隐藏区域标识符的机制;

        通过将逻辑上相关的标识符组织成相应的命名空间,可使整个系统更加模块化。

      上下文(context):

        程序在任意一个时刻都有自己的状态,状态在代码中体现为存储器的一些数值,在高级层面可以理解为context的一些属性;

        context记录了此时状态下的所有环境信息,作用主要是:

          1.切换状态的时候,便于将来对原先状态的重置;

          2.切换到新的状态的时候,可以从context中获取有效的信息。

        对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象;
        相对于进程而言,上下文就是进程执行时的环境,具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存(堆栈)信息等。

    XML是不作为的,仅仅是包装信息,需要编写软件/程序,才能传送、接收和显示出这个文档;

    XML不会替代HTML,在大多数web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。

  HTML:

    超文本标记语言(Hyper Text Markup Language);

    HTML文档包含HTML标签和纯文本;

    HTML文档也被称为网页。

  XHTML:

    可扩展超文本标记语言;

    与HTML 4.01 几乎是相同的;

    是更严格更纯净的HTML版本:

      是以XML应用的HTML,结合二者的长处。

    与HTML的区别:

      文档结构:

        XHTML DOCTYPE 是强制性的:     

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

        <html> 中的 XML namespace 属性是强制性的:    

          <html xmlns="http://www.w3.org/1999/xhtml">

        <html>、<head>、<title> 以及 <body> 是强制性的。

      元素语法:

        正确嵌套、始终关闭、必须小写、必须有一个根元素。

      属性语法:

        必须小写、引号包围、禁止最小化(当属性名和属性值相同时)

  HTML5:

    将成为HTML、XHTML、HTML DOM的新标准,但仍处于完善中;

    是W3C与WHATWG合作的结果:

      W3C 指 World Wide Web Consortium,万维网联盟;

      WHATWG 指 Web Hypertext Application Technology Working Group;

      WHATWG 致力于 web 表单和应用程序,而 W3C 专注于 XHTML 2.0;

      在 2006 年,双方决定进行合作,来创建一个新版本的 HTML。

    有趣的新特性:

      用于绘画的canvas元素;

      用于媒体播放的video和audio元素;

      对本地离线存储的更好的支持;

      新的特殊内容元素,比如article、footer、header、nav、section;

      新的表单控件,比如calendar、date、time、email、url、search。

5、HTML字符实体:

    用于正确地显示HTML中的预留字符,比如<;

    常见的字符实体(注意有个分号):

    

6、字符集与字符编码

  字符集(Charset):是一个系统支持的所有抽象字符的集合,包括各国家文字、标点符号、图形符号、数字等;

  字符编码(Charset Encoding):将字符变换到二进制比特数据的过程/规则,通常是让字符与字节组合形成映射;

  常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集;

  ASCII字符集&编码:

    ASCII字符集:包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字、西文符号),并等同于国际标准ISO/IEC 646,最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,只能用于显示现代美国英语;

    ASCII编码:

      使用7bit表示一个字符,0000 0000 到 0111 1111,0-127共128个字符(0:48,A:65,a:97);

      为表示更多欧洲常用符号,其扩展字符集EASCII使用8bit表示一个字符。

  GBxxxx字符集&编码:

    GB2312字符集:或GB2312-80,全称《信息交换用汉字编码字符集·基本集》,又称GBo,通行于中国大陆,共收录6763个汉字和682个其它符号,基本满足汉字的计算机处理需要,但不能处理人名、古汉语等方面出现的罕用字、繁体字、日语及朝鲜语汉字; 

    GB2312字符编码:

      单字节(0-127)依旧表示ASCII码,实际上双字节编码里也把这128个字符编进去,前者叫做半角字符,后者叫做全角字符;

      双字节表示汉字,双字节首位均为1:

        高字节:0xA1:1010 0001 10*16+1=161 到 0xF7:1111 0111 15*16+7=247 247-161+1=87

        低字节:0xA1:1010 0001 10*16+1=161 到 0xFE:1111 1110 15*16+14=254 254-161+1=94 

        字符空间:

          87*94=8178;

          高字节代表共分87区(01-87)?,低字节代表每区94个汉字/符号,即区位码:

            01-09区为特殊符号;

            16-55区为一级汉字,按拼音排序;

            56-87区为二级汉字,按部首/笔画排序;

            10-15区及88-94区?则未有编码;

            计算示例:汉字 0xB0A1,其中高字节0xB0 = 0xA0 + 16,低字节0xA1 = 0xA0 + 01,故该汉字的区号为16,位号为01。

    GBK字符集:

      即汉字内码扩展规范,K(Kuo zhan中的K),英文全称 Chinese Internal Code Specification;

      微软利用GB2312-80未使用的编码空间,收录GB13000.1-93全部字符制定了GBK编码,自身并非国家标准;

      GBK向下与GB2312完全兼容,向上支持ISO 10646国际标准,同样采用双字节表示。

    GBK字符编码:

      总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 XX7F 一条线;

      编码区分三部分:

        汉字区:

          GBK/2:0XB0A1-F7FE, 收录 GB 2312 汉字 6763 个,按原序排列;
          GBK/3:0X8140-A0FE,收录 CJK 汉字 6080 个;
          GBK/4:0XAA40-FEA0,收录 CJK 汉字和增补的汉字 8160 个。
          CJK:Chinese, Japanese and Korean 中文,日文和韩文。

        图形符号区:

          GBK/1:0XA1A1-A9FE,除 GB 2312 的符号外,还增补了其它符号;
          GBK/5:0XA840-A9A0,扩除非汉字区。

        用户自定义区:

          GBK 区域中的空白区,用户可以自己定义字符。

    GB18030字符集:

      全称 国家标准GB18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版;

      与GB2312-1980完全兼容,与GBK基本兼容,支持GB13000及Unicode的全部统一汉字,共收录汉字70244个;

      与UTF-8相同,采用多字节编码,每个字可以由1个、2个或4个字节组成;

      编码空间庞大,最多可定义161万个字符;

      持中国国内少数民族的文字,不需要动用造字区;

      汉字收录范围包含繁体汉字以及日韩汉字。

    GB18030字符编码:

      单字节,其值从 0 到 0x7F,与 ASCII 编码兼容;

      双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容;

      四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x39。

  Big5字符集&编码:

    Big5字符集:又称为大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。中文码分为内码及交换码两类,Big5属中文内码,知名的中文交换码有CCCII、CNS11643。Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家标准,而只是业界标准。

    中文内码和中文交换码:二进制数形式与16进制数形式的差别?

    Big5字符编码:

      双字节表示一个汉字;

      高位字节使用0x81-0xFE,低位字节使用0x40-0x7E,及0xA1-0xFE:

  Unicode字符集&编码:

    Unicode字符集:

      统一码、万国码、单一码、标准万国码;

      基于通用字符集(Universal Character Set)的标准来发展:

        通用字符集 UCS 是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。

      使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph),每个数字代表唯一的至少在某种语言中使用的符号,不存在二义性。

    Unicode字符编码:

      UTF-32:每个字符使用4字节表示;

      UTF-16:

        将0–65535范围内的字符编码成2个字节;

        超过65535的Unicode字符则另行规定。

      注意:

        对于UTF-32和UTF-16编码方式,不同的计算机系统会以不同的顺序保存字节;

        这意味着字符U+4E2D在UTF-16编码方式下可能被保存为4E 2D或者2D 4E,这取决于该系统使用的是大尾端(big-endian)还是小尾端(little-endian)。

        大/小尾端:

          一个二进制数,类比普通的10进制数,左边为高位,右边为低位;

          而在计算机中的存储地址里(通常以字节形式呈现),左边为低地址位,右边位高地址位;

 

         为解决这个问题:

          多字节的Unicode编码方式定义了一个"字节顺序标记(Byte Order Mark)";

          它是一个特殊的非打印字符,你可以把它包含在文档的开头来指示你所使用的字节顺序;

          对于UTF-16,字节顺序标记是U+FEFF:

            如果收到一个以字节FF FE开头的UTF-16编码的文档,你就能确定它的字节顺序是单向的(one way);

            如果它以FE FF开头,则可以确定字节顺序反向。

      UTF-8:

        使用一至四个字节为每个字符编码;        

        128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F);

        带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至    U+07FF);

        其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码;

        其他极少使用的Unicode辅助平面的字符使用四字节编码;

        UTF-8不再存在字节顺序的问题;

        注意编码汉字,UTF-8需要3个字节,而GBK只需2个字节。

  HTTP中与字符集&编码相关的:

    Accept-Charset:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

    Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

    Accept-Language:浏览器申明自己接收的语言。语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

    Content-Type:web服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312';

    Content-Encoding:web服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip;

    Content-Language:web服务器告诉浏览器自己响应的对象的语言。

 7、浏览器能够根据具体的设置缓存链接的所有外部js文件?

8、文档模式?:

  <!DOCTYPE ...>

  通过使用文档类型(doctype)切换实现的;

  分为混杂模式、标准模式以及准标准模式;

  主要影响CSS内容的呈现,但在某些情况下也影响js的解释执行。

9、hack技术?

10、浏览器让页面平稳地退化?

11、ECMAScript 5 引入了严格模式的概念?:

  ''use strict";

12、final static 内存分配?

13、js引擎?

14、ECMAScript数据类型具有动态性?

  undefined和null的区别

15、派生?:

  undefined值是派生自null值的

16、区分操作符与函数:
  函数传递参数需要括号

17、NaN?

18、Number类型使用IEEE754格式来表示整点和浮点数值?

19、Number(对象) 过程验证?

20、length属性返回的字符数包括16位字符的数目?:

  如果字符串中包含双字节字符,该属性可能不会精确地返回字符串中的字符数目。

21、js中需要用到引号的地方?:

  字符串变量的值;

  函数的参数;

  函数的返回值;

  ...

22、方法与函数?:

  toString()方法、String()函数

23、对象实例和实例的原型?

24、toLocaleString():

  执行环境的地区?