在我们找工作时经常会因为面试问题而头痛, 本文搜集了一些前端面试题及答案, 希望对大家有一定的帮助.
前端开发面试知识点大纲:
html&CSS: 对 web 标准的理解, 浏览器内核差异, 兼容性, hack,CSS 基本功: 布局, 盒子模型, 选择器优先级及使用, HTML5,CSS3, 移动端适应.
JavaScript: 数据类型, 面向对象, 继承, 闭包, 插件, 作用域, 跨域, 原型链, 模块化, 自定义事件, 内存泄漏, 事件机制, 异步装载回调, 模板引擎, Node.JS,JSON,Ajax 等.
其他: HTTP, 安全, 正则, 优化, 重构, 响应式, 移动端, 团队协作, 可维护, SEO,UED, 架构, 职业生涯
1, 请你谈谈 Cookie 的弊端
cookie 虽然在持久保存客户端数据提供了方便, 分担了服务器存储的负担, 但还是有很多局限性的.
第一: 每个特定的域名下最多生成 20 个 cookie
1,IE6 或更低版本最多 20 个 cookie
2,IE7 和之后的版本最后可以有 50 个 cookie.
3,Firefox 最多 50 个 cookie
4,Chrome 和 Safari 没有做硬性限制
IE 和 Opera 会清理近期最少使用的 cookie,Firefox 会随机清理 cookie.
cookie 的最大大约为 4096 字节, 为了兼容性, 一般不能超过 4095 字节.
IE 提供了一种存储可以持久化用户数据, 叫做 uerData, 从 IE5.0 就开始支持. 每个数据最多 128K, 每个域名下最多 1M. 这个持久化数据放在缓存中, 如果缓存没有清理, 那么会一直存在.
优点: 极高的扩展性和可用性
1, 通过良好的编程, 控制保存在 cookie 中的 session 对象的大小.
2, 通过加密和安全传输技术(SSL), 减少 cookie 被破解的可能性.
3, 只在 cookie 中存放不敏感数据, 即使被盗也不会有重大损失.
4, 控制 cookie 的生命期, 使之不会永远有效. 偷盗者很可能拿到一个过期的 cookie.
缺点:
1,`Cookie` 数量和长度的限制. 每个 domain 最多只能有 20 条 cookie, 每个 cookie 长度不能超过 4KB, 否则会被截掉.
2, 安全性问题. 如果 cookie 被人拦截了, 那人就可以取得所有的 session 信息. 即使加密也与事无补, 因为拦截者并不需要知道 cookie 的意义, 他只要原样转发 cookie 就可以达到目的了.
3, 有些状态不可能保存在客户端. 例如, 为了防止重复提交表单, 我们需要在服务器端保存一个计数器. 如果我们把这个计数器保存在客户端, 那么它起不到任何作用.
2, 浏览器本地存储
在较高版本的浏览器中, JS 提供了 sessionStorage 和 globalStorage. 在 HTML5 中提供了 localStorage 来取代 globalStorage.
html5 中的 Web Storage 包括了两种存储方式: sessionStorage 和 localStorage.
sessionStorage 用于本地存储一个会话 (session) 中的数据, 这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁. 因此 sessionStorage 不是一种持久化的本地存储, 仅仅是会话级别的存储.
而 localStorage 用于持久化的本地存储, 除非主动删除数据, 否则数据是永远不会过期的.
3,Web storage 和 cookie 的区别
Web Storage 的概念和 cookie 相似, 区别是它是为了更大容量存储设计的. Cookie 的大小是受限的, 并且每次你请求一个新的页面的时候 Cookie 都会被发送过去, 这样无形中浪费了带宽, 另外 cookie 还需要指定作用域, 不可以跨域调用.
除此之外, Web Storage 拥有 setItem,getItem,removeItem,clear 等方法, 不像 cookie 需要前端开发者自己封装 setCookie,getCookie.
但是 Cookie 也是不可以或缺的: Cookie 的作用是与服务器进行交互, 作为 HTTP 规范的一部分而存在 , 而 Web Storage 仅仅是为了在本地 "存储" 数据而生
浏览器的支持除了 IE7及以下不支持外, 其他标准浏览器都完全支持(IE 及 FF 需在 Web 服务器里运行), 值得一提的是 IE 总是办好事, 例如 IE7,IE6 中的 UserData 其实就是 JavaScript 本地存储的解决方案. 通过简单的代码封装可以统一到所有的浏览器都支持 Web storage.
localStorage 和 sessionStorage 都具有相同的操作方法, 例如 setItem,getItem 和 removeItem 等.
来源: http://www.css88.com/interview/14140.html