前端面试每日3+2(第8天)
冰洋 12/9/2019 每日3+2
当你发现自己的才华撑不起你的野心时,就请安静下来学习吧!
鲁迅说过:
答案仅供参考...
# 1、0.1+0.2==0.3吗?为什么?怎么解决?
- 原因:0.1等浮点类型转换二进制时不会整除,会出现无限小数,计算机因为精度的问题,会自动抹去15位后面的数。于是出现了差异。
- 如何解决:x10
# 2、一个汉字等于几个字节?utf-8编码?
- utf-8编码:一个汉字=3个字节
- GB2312中文字符占两个字节
# 3、递归深拷贝中,如何防止循环拷贝,就是防止拷贝的对象中有自己的引用?(弱引用)
function deepClone (sourceObj, targetObj) {
let cloneObj = targetObj || {}
if(!sourceObj || typeof sourceObj !== "object" || sourceObj.length === undefined){
return sourceObj
}
if(sourceObj instanceof Array){
cloneObj = sourceObj.concat()
} else {
for(let i in sourceObj){
if (typeof sourceObj[i] === 'object') {
cloneObj[i] = deepClone(sourceObj[i], {})
} else {
cloneObj[i] = sourceObj[i]
}
}
}
return cloneObj
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 4、form表单传输数据过程中是明文还是密文?如何加密?每一次传输数据,都是加密之后才传输的吗?
# 5、如何实现跨域?
- jsonp
- CORS(Cross-Origin Resource Sharing)
- 代理跨域请求
- Html5 postMessage 方法
- 修改 document.domain 跨子域
- 基于 Html5 websocket 协议
- document.xxx + iframe