朋友说微软有个面试题要求写一段不超过20行的代码,让cpu使用记录呈矩形波变化。
然后就兴冲冲的来试试。
c的代码如下:
int i = 0;
int times = 0;
int dtimes = 0;
int max = 100000000;
while(true){
if(i < max){
i++;
if(max == 2){
Sleep(200);
}
}else{
i = 0;
times ++;
if(times > 20){
dtimes ++;
if(dtimes % 2==0){
max = 100000000;
}else{
max = 2;
}
times = 0;
}
}
}
然后得到了类似于矩形波的曲曲折折的cpu使用记录波形。
但是发现个问题,就是代码行数比较多,大于20行
我研究了下,精简为:
int i = 0;
int times = 0;
int max = 100000000;
while(true){
if(i < max){
i++;
if(max == 2)
Sleep(200);
}else{
i = 0;
times ++;
if(times % 20 == 0){
if(times % 40 == 0){
max = 100000000;
}else{
max = 2;
}
}
}
}
这下按照标准语法,刚好20行。
然后我想在精简,发现似乎不能精简了。
难道微软真的已经研究透了这个实现方式,就20行?
哈哈,不知道我的做法离实际的答案有多远哦。