前端常见笔面试题总结

HTML&CSS

  • Doctype的作用?严格模式和混杂模式有什么区别?它们有何意义
    Doctype文档声明,放在文档中的最前面,处于html标签之前。它用于告知浏览器的解析器,用什么文档类型规范来解析这个文档;
    严格模式下的排版和js运作模式是以该浏览器支持的最高标准运行的,而混杂模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作;
    Doctype不存在或格式不正确将会导致文档以混杂模式呈现。

  • HTML5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
    HTML5不基于SGML,主要是关于图像、位置、存储、多任务等功能的添加。

    1. 绘画canvas;
    2. 用于媒体回放的video和audio元素;
    3. 本地离线存储localStorage和sessionStorage,localStorage长期存储数据,浏览器关闭后数据不会丢失;sessionStorage的数据在浏览器关闭后会自动删除;
    4. 语义化更好的内容元素,如header,footer,nav,section,article,menu,aside等;
    5. 更丰富的表单控件,如calender,date,time,range,email,url,search,color,tel,number等;
    6. 新的技术,webworker,websocket,Geolocation

    IE8/IE7/IE6支持通过document.createElement方法创建新标签,可以利用这一特性让这些浏览器支持HTML5标签,浏览器支持新标签后,还需要添加默认标签样式。当然也可以直接使用成熟的框架,比如html5shim。

  • 你所知道的浏览器内核都有哪些?
    1. trident内核:IE浏览器
    2. gecko内核:Firefox浏览器
    3. webkit内核:Chrome浏览器、Safari浏览器
    4. presto内核:Opera浏览器
  • cookie,sessionStorage,LocalStorage的区别?
    sessionStorage和localStorage都是HTML5 Web Storage API提供的,可以方便地在web请求之间保存数据。有了本地数据,就可以避免数据在浏览器和服务器间不必要地来回传递。
    它们三者都是在浏览器段存储数据。sessionStorage是在同源的窗口中始终存在的数据,也就是只要这个浏览器窗口没有关闭,及时刷新页面或进入另一个同源页面,数据仍然存在。关闭窗口后,sessionStorage即被销毁。同时“独立”打开的不同窗口,即使是在同一页面,sessionStorage对象也是不同的。
    1. cookie
      每个域名存储量比较小(各浏览器不同,大致4K);
      所有域名的存储量有限制(各浏览器不同,大致4K);
      有个数限制(各浏览器不同);
      会随请求发送到服务器。
    2. sessionStorage
      只在session内有效;
      存储量大(推荐没有限制,但是实际上各浏览器也不同)。
    3. localStorage
      永久存储;
      单个域名存储量比较大(推荐5MB,各浏览器不同);
      总体数量无限制。
  • cookie和session分别用来做什么?有什么关系?

    1. cookie用来在客户端存储用户信息,session用来在服务器端存储用户数据,均可用于跟踪用户状态。
    2. 由于存放在服务器端,session较存放在客户端的cookie来说更安全,用户验证等重要信息一般存放在session,但cookie也可以加密来提高安全性。
    3. cookie在使用脚本或用户手动删除前永久保存,最大一般为4KB,session会在会话期间保存,当访问增多会家中服务器负担。
    4. session的实现需要cookie的支持:session依赖session ID实现,而session ID存放与cookie,因此,禁用cookie之后session也会失效。但可使用其他方法实现,比如在URL中传递session ID。
    5. session在服务器端可存放于文件(默认)、数据库或内存。
    6. session支持各种数据类型对象,cookie只保存字符串。
  • CSS选择器有哪些?它们的优先级是怎样的?
    CSS选择器有ID选择器,class选择器,伪类选择器,标签选择器,通配符选择器,属性选择器。它们的优先级为:
    !important > 行内样式(1000)> ID选择器(100)> class选择器/伪类选择器(10)> 标签选择器/伪元素选择器/属性选择器(1)> 通配符选择器(0)。
    更多CSS权重的相关内容见这里。

  • px、em、rem、vh、vw之间的区别?

  • link和@import的区别?
    两者都是永不外部引用CSS的方式,它们的区别是:

    1. link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事物,@import属于CSS范畴,只能加载CSS;
    2. link引用CSS时,在页面载入时同时加载,@import需要页面网页完全嵌入以后加载;
    3. link是XHTML标签,无兼容性问题,@import是在CSS2.1提出的,低版本的浏览器不支持;
    4. link支持使用JavaScript控制DOM去改变样式,而@import不支持。
  • HTML中的列表有哪些?它们的结构是怎样的。
    HTML中的列表包括有序列表ol(order list)、无序列表ul(unorder list)和定义列表dl(definite list)。它们的结构分别如下:

<ol><li>li>ol>
<ul><li>li>ul>
<dl>
    <dt>dt> 
    <dd>dd> 
dl>
  • li里面放标题的话用什么标签?
    li里面只能放

    ~
    标签

  • img和input标签是属于块级还是行内元素?是行内的话为什么可以设置宽高?
    img和input都是属于行内替换元素(inline replaced elements),属于inline element类。height/width/padding/margin均可用,效果等同于块级元素。
    行内非替换元素(inline non-replaced elements),height/width/padding-top、bottom/margin-top、bottom均无效果,只能用padding-left/right和margin-left/right。
    (X)HTML中的