基础题:
1、基本类型和引用类型的值?
基本类型:Null, Undefined, Boolean, Number, String
引用类型:Object, Array, Date, RegExp, Function, 基本包装类型(3个特殊的引用类型Boolean、Number 和String)
2、Array有哪些方法?
转换方法:toLocaleString()、toString()、valueOf()、join() 其中是所有对象都有的方法
栈方法:push()、pop()
队列方法:shift()、unshift()
重排序方法:reverse()、sort()
操作方法:concat()、slice()、splice()
位置方法:indexOf()、lastIndexOf()
迭代方法:every()、filter()、forEach()、map()、some()
归并方法:reduce()、reduceRight()
ES6新增判断array的方法 Array.isArray()
3、常见的http请求返回码?
200:请求成功,返回页面
201:请求成功,没有返回任何内容
301:请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。
403:服务器拒绝请求
404:服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。
410 :请求的资源永久删除后,服务器返回此响应。
500 :服务器遇到错误,无法完成请求。
503:服务器目前无法使用(由于超载或停机维护)。
4、七层模型和五层架构是什么(按顺序讲述)?
七层:从上到下
应用层: 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
一、CSS的水平居中
css水平居中有大致有以下三种情况:
1.文本、图片等行内元素:
给父元素添加属性:text-align:center;
2.确定宽度的块级元素:
添加属性:margin-left:auto;margin-right:auto;
3.不确定宽度的块级元素:
有三种处理方法:
a.把块级元素display:inline;变成行内元素,然后使用text-align:center实现。
b.把块级元素设置display: table;margin:0 auto
c.给父元素设置float,然后给父元素设置position:relative;left:50%,子元素设置position:relative;left:-50%。
二、CSS的垂直居中
css垂直居中也大致有三种情况:
1.父元素高度确定,单行文本:
可以设置line-hight值等于其高度值实现;
2.父元素高度确定的多行文本、图片:
两种处理方法:
a.将它们包含在table标签中,td标签默认拥有属性vertical-align:middle;
b.给父元素添加属性:display:table-cell;vertical-align:middle;
3.父元素高度不确定的文本、图片:
给父元素设置相同的上下内边距:padding-top:10px;padding-bottom:10px;
对于脑残的IE6/7可能还要单独的加hack,给父元素设置position:absolute;top:50%;给子元素设置position:relative;top:-50%;
那么浏览器缓存机制到底是如何工作的呢?核心就是把缓存的内容保存在了本地,而不用每次都向服务端发送相同的请求,设想下每次都打开相同的页面,而在第一次打开的同时,将下载的js、css、图片等“保存”在了本地,而之后的请求每次都在本地读取,效率是不是高了很多?真正的浏览器工作的时候并不是将完整的内容保存在本地,各种浏览器都有不同的方式,譬如firefox是一种类似innodb的方式存储的key value 的模式,在地址栏中输入 about:cache 可以看见缓存的文件,chrome会把缓存的文件保存在一个叫User Data的文件夹下。但是如果每次都读取缓存也会存在一定的问题,如果服务端的文件更新了呢?这时服务端就会和客户端约定一个有效期,譬如说服务端告诉客户端1天内我服务端的文件不会更新,你就放心地读取缓存吧,于是在这一天里每次遇到相同的请求客户端都开心地可以读取缓存里的文件。但是如果一天过去了,客户端又要读取该文件了,发现和服务端约定的有效期过了,于是就会向服务端发送请求,试图下载一个新的文件,但是很有可能服务端的文件其实并没有更新,其实还是可以读取缓存的。这时该怎么判断服务端的文件有没有更新呢?有两种方式,第一种在上一次服务端告诉客户端约定的有效期的同时,告诉客户端该文件最后修改的时间,当再次试图从服务端下载该文件的时候,check下该文件有没有更新(对比最后修改时间),如果没有,则读取缓存;第二种方式是在上一次服务端告诉客户端约定有效期的同时,同时告诉客户端该文件的版本号,当服务端文件更新的时候,改变版本号,再次发送请求的时候check一下版本号是否一致就行了,如一致,则可直接读取缓存。
而事实上真正的浏览器缓存机制大抵也是如此,接下来就可以分别对号入座了。
需要注意的是,浏览器会在第一次请求完服务器后得到响应,我们可以在服务器中设置这些响应,从而达到在以后的请求中尽量减少甚至不从服务器获取资源的目的。浏览器是依靠请求和响应中的的头信息来控制缓存的。
http://www.alloyteam.com/2012/03/web-cache-1-web-cache-overview/
第一步是建立一个新对象;
第二步将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象;
第三步就是将该对象作为this参数调用构造函数,完成成员设置等初始化工作。