首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个小时-interview问题之后返回的函数的代码

在一个小时-interview问题之后返回的函数的代码
EN

Stack Overflow用户
提问于 2021-08-22 18:39:34
回答 1查看 59关注 0票数 1

我从一次采访中看到了这个问题:

假设您有以下代码:

代码语言:javascript
复制
void myFunction(){
  int time = clcTime();
  while (clcTime()-time!=3600);  
}

clcTime()是一个返回从今天的00:00开始的秒数的方法时。

(1)。找出这个代码片段的功能。

(2)。一些QA测试人员说,这种代码在特定情况下会失败。那个案子是什么,你怎么解决这个问题?

(3)。另一名QA测试人员表示,在白天,这段代码运行良好,但当他入睡时,有些地方出了问题。什么可能是问题,你如何解决它?

我的尝试:

对于(1),我认为这个函数应该在循环中运行一个小时。

对于(3),我认为问题是当time变量在一天中的当前小时在[23:00:00,23:59:59]范围内时得到它的值。这是因为在这种情况下,time的值将在范围[23*3600,23*3600 + 3599]中,而clcTime()不能返回范围[24*3600, 24*3600 + 3599]中的匹配值。因此,在这种情况下,我们知道条件'clcTime()-time‘永远不会得到3600的值,我们将得到一个无限循环。

我解决这个问题的建议是用以下几行替换while行:

代码语言:javascript
复制
int measure = clcTime() - time;
int measureModulo = measure % 3600;

while (measure==0 || measureModulo!=0){
    measure = clcTime() - time;
    measureModulo = measure % 3600;
}             

我仍然存在的唯一问题是我找不出(2) --我没有发现这段代码的任何其他问题。

您知道这段代码还会有什么问题吗?

此外,如果我写错了(1)和(3),请随时纠正我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 19:15:49

这段代码和您的修复程序的另一个问题是,它检查clcTime()是否有一个完全匹配的值。如果系统很忙,循环不能运行超过一秒,那么它将错过匹配的秒,并继续等待至少一个小时。

此外,当用户更改系统时钟或系统时区、夏时制进入或停止生效、时钟被自动调整为闰秒等时,也会出现问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68884174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档