1.有两个接口,一个返回1,一个返回2,在页面上展示这两个接口返回结果的和(不能嵌套ajax,不能使用框架,不要使用promise,generator,async)

当时脑子短路没想出来,以为手写ajax或者是考es6,回来才想起用defineProperty

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id="result"></div>
<script>
let data = {};
Object.defineProperty(data,'a',{
set:(value)=>{
this.a = value
sum(this.a,this.b)
}
})
Object.defineProperty(data,'b',{
set:(value)=>{
this.b = value
sum(this.a,this.b)
}
})
function sum(a,b){
if (!a||!b) return
document.getElementById('result').innerText = a+b;
}
setTimeout(function(){
data.a=1;
},500)
setTimeout(function(){
data.b=2;
},500)
</script>



2.有一台电脑里面有一个1G的文件。电脑之间可以用网线连接,传输速度是1G每秒。问把这个文件复制到八台电脑最短时间?

当时想了一下就说出个4秒😓
第一秒:第一台电脑复制到第二台电脑
第二秒:第一,二台电脑复制到第三,四台电脑
第三秒:第一,二,三,四台电脑复制到第五,六,七,八台电脑
第四秒:复制到第九台电脑

这个问题当然没这么简单,面试官说4秒太长了,

想了一下,四秒确实太长,有几台电脑都空闲了很久,浪费了带宽

第一秒,把文件切割成8份,分别传给8台电脑,每个电脑有1/8 G的文件
然后用8根网线把8台电脑连成环路,这样带宽就是8G/s,写4G/s,读4G/S,剩下7/8G * 8 = 7G 需要传输,所以是7/4秒
所以总共用时 1 + 7/4 = 11/4 秒?

但是面试官说还有更快的😨

一直没想出来