一些面试题01

#####

1. var a = [];
a[0] = 0;
a[1] = 1;
a[4] = 4;
请问a.length的值是多少?a[3]的输出结果是什么?

答: 5 undefined

#####

2. function Foo() {
    var i = 0;
    return function () {
        console.log(i++);
    }
}
var f1 = Foo();
f2 = Foo();
f1();
f1();
f2();
console.log(i);
请问打印输出的结果是多少?

答: 0  // f1 = Foo()相当于f1赋值为函数Foo()的返回值f1 = function() {
    console.log(i ++);
    }

    1  // 因为f1在上一次的基础上又执行了一次函数,i ++ ,是在同一块内存中。

    0  

    报错  // i 为 Foo内部的变量,全局不可访问,全局中没有i变量所以会报错。
请解释GET/POST的区别

GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&链接。
URL的拜年吗格式采用的ASCLL编码,而不是Unicode,即事说所有的非ASCLL字符都要编码
之后再传输。

POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是
实际的传输数据。

因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。

传输数据的大小

在HTTP规范中,没有URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的
浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。

对于POST,由于不是URL传值,理论上是不会受到限制的,但是实际上各个服务器会规定对POST提交数据
大小进行限制,Apache、IIS都有各自的配置。

安全性

GET是Form的默认方法,安全性相对比较低。

请你描述一下cookies, sessionStorage 和 localStorage 的区别?

sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求
之间保存数据。有了本地数据,就可以避免数据在浏览器和服务器之间不必要地来回传递。

sessionStorage、 localStorage、 cookie 都是浏览器端存储的数据,其中 sessionStorage的
概念很特别,引入了一个”浏览器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始终存在
的数据。也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一页面,数据仍然存在。关闭窗口
后,sessionStorage即被销毁。同时”独立”打开的不同窗口,即使是同一页面,sessionStorage对象也
是不同的。

cookies会发送到服务器端。其余两个不会。

Microsoft指出 Internet Explorer 8 增加 cookie 限制为每个域名50个,但IE7似乎也允许每个域名50个
cookie。 Firefox每个域名cookie限制为50个。Opera每个明月cookie限制为30个。Firefox和Safari
允许cookie多达4097个字节,包括名(name)、值(value)和等号。Opera允许cookie多达4096个字节,
包括名(name)、值(value)和等号。Internet Explorer允许 cookie多达4095个字节,包括:名(name)、
值(value)和等号。

Cookie

  • 每个域名存储量比较小(各浏览器不同,大致4K)
  • 所有域名的存储量有限制(各浏览器不同,大致4K)
  • 有个数限制(各浏览器不同)
  • 会随请求发送到服务器。

LocalStorage

  • 永久存储
  • 单个域名存储量比较大(推荐5MB,各浏览器不同)
  • 总体数量无限制
  • SessionStorage
  • 只在Session内有效
  • 存储量更大(推荐没有限制,但实际上各浏览器也不同)
image 和 canvas 在处理图片的时候有什么区别?

image 是通过对象的形式描述图片的

canvas 通过专门的API将图片绘制在画布上

响应式布局的时候,轮播图使用两张不同的图片去适配大屏幕和超小屏幕,还是一张图片进行压缩适配不同终端,说明原因?

最好使用两张不同大小的图片去适配大屏幕和超小屏幕,这样可以针对不同设备的屏幕大小,来加载相应的图片,
减少超小屏幕设备的网络流量消耗,加快相应速度,同时防止图片在大屏幕下分辨率不够导致失真的问题。

例举3种强制类型转换和2种隐式类型转换

强制( parseInt parseFloat Number)

隐式( == ===)

ajax请求时,如何解析JSON数据
  1. JSOn.parse
  2. eval()
  3. new Function()
CSS 清除浮动的几种方法
  • 使用带clear属性的空元素
  • 使用CSS的overflow属性
  • 使用CSS的:after伪元素
  • 使用邻接元素处理
封装一个方法实现获取样式的兼容写法
function getStyle(ele, style) {
    if (window.getComputedStyle) {
        return getComputedStyle(ele, null)[style];
    } else {
        return obj.currentStyle(style);
    }
}