查看: 1125| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

不知是算法还是智力题的一道诡异时钟读取

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
今天面试有一道很有意思的题,没有想出来完全正确的答案,面试后又想了下感觉始终有问题,发上来求教学。
给出一个API read_hand,可接受参数某一个表针,例如hour,minute或second。这个API有一定的延迟,面试官开始说0.5秒,后来变成3ms。
需要实现一个read_time函数,被调用后给出正确的时间。
如果没有延迟的话,直接都读取一下输出就好,但有延迟就会遇到延迟是时间改变的问题
例如:现在是1:59:59:997, 我试图通过hour,minute,second(HMS)的方式读取的话,hour读到1,minute就变成了00,因为三毫秒过去,读出来的数字变成1:00:00.
目前想到的办法是读一遍HMS后再读一遍HMS,如果没有变化直接返回,说明不在跳点的时刻。如果变化说明在这两遍之间变化过,因此再读第三遍直接返回,因为第二遍到第三遍之间不会再变了。
感觉这样没什么逻辑问题,但如果延迟达到了半秒照样不行,想看看各位大佬有没有想法。
关于正确的return时间:面试官表示return 1:59:59和2:00:00都可以接受,只要是当时表上的正确时刻而没有串位就好。

评分

参与人数 1大米 +3 收起 理由
Zjy_yahoo + 3 题目不错!

查看全部评分


上一篇:诚征!!!!寻觅mock interview同伴一名,希望都能拿到心仪的offer!!!
下一篇:LintCode刷题记录
🔗
antibes 2018-3-31 11:54:51 | 只看该作者
全局:
既然第二遍和第三遍没变化,就直接用第二遍读的就好了
回复

使用道具 举报

🔗
 楼主| wangtjwork 2018-3-31 12:35:51 | 只看该作者
全局:
antibes 发表于 2018-3-31 11:54
既然第二遍和第三遍没变化,就直接用第二遍读的就好了

但有可能第一遍正确,第二遍才变,比如起始时间1:59:59:988,第一遍9ms过去后读出1:59:59,然后时间变成1:59:59:997,然后读第二个的时候其实读到的是1:00:00。
第二遍到第三遍之间不会再变是指真实时间,不是读到的结果。
回复

使用道具 举报

全局:
感觉楼主这个题的最主要问题是如何解决进位的问题吧,比如说1:59:59:997,读分的时候,发生了进位的问题,感觉可以根据第二遍读的情况,来判断是否产生了进位,然后调整第一遍读取的值。主要解决毫秒向秒进位,秒向分钟进位,分钟向小时进位三种情况。不知道对不对的说。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表