四道经典面试题
1.请描述一下 cookies,sessionStorage 和 localStorage 的区别?
三者都是保存在客户端,且同源的。三者的基本概念:
cookies:存储在用户本地终端上的数据。有时也用cookie,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密。一般应用最典型的案列就是判断注册用户是否已经登过该网站。
sessionStorage、localStorage是HTML5 提供的两种在客户端存储数据的新方法:
sessionStorage:针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除;
localStorage : 没有时间限制的数据存储,第二天、第二周或下一年之后,数据依然可用。
三者的区别:
1. cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
2.数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
3.作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
2.谈谈This对象的理解。
this是函数运行时自动生成的一个内部对象,只能在函数内部使用,但总指向调用它的对象。
js的this指向是不确定的,也就是说是可以动态改变的;一般情况下,都是指向函数的拥有者;在函数自执行里,this 指向的是 window 对象。
3.谈一谈JavaScript作用域链?
任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。
在JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。
详细的讨论说明可见:http://www.cnblogs.com/lhb25/archive/2011/09/06/javascript-scope-chain.html
4..如何理解JavaScript原型链?
在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个”[[Prototype]]”内部属性,这个属性所对应的就是该对象的原型。函数对象有”prototype”属性,原型对象有”constructor”属性。
因为每个对象和原型都有原型,对象的原型指向原型对象,而父的原型又指向父的父,这种原型层层连接起来的就构成了原型链。
详细的讨论说明可见:http://www.jb51.net/article/80109.htm
两道思考题
1.对前端工程师这个职位你是怎么样理解的?
前端工程师,在web时代兴起是一个不可磨灭的职位,熟练的掌握html、css、js的基本语法,同时也了解熟悉算法、数据结构、后台数据库交互等,一个优秀的前端工程师,在本职技能上肯定是很熟练的,运用自己的技能创造出令用户惊喜的交互页面,与后台功能无缝衔接。
知乎大家的回答:https://www.zhihu.com/question/19589966
2.平时如何管理你的项目?
项目的经历还不是很多。
1.进度的管理,设置各个时间点项目需要达到的进度;
2.项目同时还应该通过版本控制器进行管理控制的,方便备份和回滚。
上述答案部分来自互联网。欢迎指正、探讨。