前端面试题之 HTML5

  1. HTML5 有哪些新特性?

    • 增强了图片渲染、数据存储、影音和多任务处理等功能
    • 新加的属性是:
      • canvas 动画
    • 本地存储 localstorage
    • 事件监听 addeventlistener(window 的对象)
    • sessionstorage 数据在浏览器关闭后自动删除
    • 媒体 video 和 audio
      • 需要第三方插件就能播放音频和视频了,可以直接插入,并且用同一的 API 接口控制
    • 语义化的标签
      • 语义化的标签对搜索引擎优化有好处,更易被搜索到。其他的同事维护代码也很方便一点
    • 表单的控制
      • email、time、search
    • Geolocation 地理定位
      • 地理定位(这个目前我接触的少不太清楚)
  2. localStorage 、 sessionStorage 与 cookie 有哪些区别。

    • 基本概念:
      • cookie:是网景公司的前雇员在 1993 年发明。它的主要用于保存登陆信息,比如登陆某个网站市场可以看到'记住密码',这就是通过在 cookie 中存入一段辨别用户身份的数据来实现的
      • sessionStorage:会话,是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但是页面关闭后,sessionStorage 中的数据就会被清空
      • localStorage:是 HTML5 标准中新加入的技术,当然早在 IE6 时代就有一个 userData 的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是使用 flash。如今localStorage 被大多数浏览器所支持
    • 三者区别:
      1. 存储大小
        • cookie:一般不超过 4K(因为每次 http 请求都会携带 cookie、所以 cookie 只适合保存很小的数据,如会话标识)
        • sessionStorage:5M 或者更大
        • localStorage:5M 或者更大
      2. 数据有效期
        • cookie:一般由服务器生成,可以设置失效时间;若没有设置时间,关闭浏览器 cookie 失效,若设置了时间,cookie 就会存放在硬盘里,过期才失效
        • sessionStorage:仅在当前浏览器窗口关闭之前有效,关闭页面或者浏览器会被清除
        • localStorage:永久有效,窗口或者浏览器关闭也会一直保存,除非手动永久清除,因此用作持久数据
      3. 作用域
        • cookie:在所有同源窗口中都是共享的
        • sessionStorage:在同一个浏览器窗口是共享的(不同浏览器、同一个页面也是不共享的)
        • localStorage:在所有同源窗口中都是共享的
      4. 通信
        • cookie:十种携带在同源的http请求中,即使不需要,故 cookie 在浏览器和服务器之间来回传递;如果使用 cookie 保存过多数据会造成性能问题
        • sessionStorage:仅在客户端(即浏览器)中保存,不参与和服务器的通信;不会自动把数据发送给服务器,仅在本地保存
        • localStorage:仅在客户端(即浏览器)中保存,不参与和服务器的通信;不会自动把数据发送给服务器,仅在本地保存
      5. 易用性
        • cookie:需要自己进行封装,原生的 cookie 接口不够友好
        • sessionStorage:原生接口可以接受,可以封装来对 Object 和 Array 有更好的支持
        • localStorage:原生接口可以接受,可以封装来对 Object 和 Array 有更好的支持
    • 应用场景
      • cookie:判断用户是否登录过网站,以便实现下次自动登录或记住密码;保存事件信息等
      • sessionStorage:敏感账号一次性登录;单页面用的较多(sessionStorage 可以保证打开页面时 sessionStorage 的数据为空)
      • localStorage:常用于长期登录(判断用户是否已登录),适合长期保存在本地的数据
  3. 列举语义化标签,并说明使用语义化标签的好处。

    • 语义化标签:
      • 尽可能少的使用 div, span 等无意义的标签,divspan 没有含义,也因此十分适合作为容器标签
      • 尽量不要使用纯样式标签如 等,用 css 替代
      • 需要强调的地方,可以使用 strongem,不要使用 b
      • label for 标签的使用,将输入框和对应文字联系起来
      • alt 除了做图片解释以外,可以作为页面未加载出来的文字
      • 使用 br 增加行间距的行为是错误的,
        标签主要用于文本内容换行
      • 表格的 caption,thead,tbody 等的使用
      • html5 新加的语义化标签,如
        ,
    • 语义化标签好处:
      • 因为像部分标签自带样式如 h1-h6 系列,p 等,使用语义化的标签可以在样式加载不出的时候有基本样式,而不显混乱
      • 有利于 SEO,语义化标签可以有利于爬虫抓取到网页,因为爬虫依赖于标签来确定上下文和各个关键字的权重。
      • 有利于一些特殊设备的解析,比如盲人阅读器,这为他们浏览网页带来了便利
      • 代码可读性良好,便于代码维护

你可能感兴趣的:(前端面试题之 HTML5)