前端面试每日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

# 4、form表单传输数据过程中是明文还是密文?如何加密?每一次传输数据,都是加密之后才传输的吗?

# 5、如何实现跨域?

  1. jsonp
  2. CORS(Cross-Origin Resource Sharing)
  3. 代理跨域请求
  4. Html5 postMessage 方法
  5. 修改 document.domain 跨子域
  6. 基于 Html5 websocket 协议
  7. document.xxx + iframe
Last Updated: 2/24/2020, 9:02:17 AM
    asphyxia
    逆时针向