下周我必须接受我最大的一次面试,我正为此而努力工作。我也报名参加了一些模拟面试。所以,在谈到问题的前一天,我进行了一次模拟面试,有人问我这个问题:
在排序和旋转数组中搜索元素
一开始我毫无头绪,但面试官要求我先解决手头的问题,然后先解决较小的问题,所以我决定写二进制搜索,以找到排序数组中的元素。令人惊讶的是,我能够在一段时间内写出算法,因为我对手头的问题有了清晰的心智模型,现在我被要求继续并解决给定的问题。我想了一会儿,告诉他,如果我知道顶点,我就能决定找出给定元素的方向,他告诉我,我在正确的轨道上,然后我无法正确地思考如何把我的逻辑转换成代码,他给了我一些提示,这对我来说太尴尬了,我不能坐下来思考。
问题是,在知道了解决办法后,知道我的直觉是正确的,我不知道我为什么失败了,我需要知道是否有一种不同的思维方式来更好地理解这些问题的逻辑?尽管我知道并解决了原来的问题,但当我在二进制搜索中发现一个新的问题时,我为什么感到不舒服呢?我的心理状态有差距吗?
发布于 2017-01-01 18:59:46
对我来说坐着思考太尴尬了。
这是你的问题。
编程不只是当你的手指在键上时才会发生的事情。我在淋浴时盯着瓷砖,解决了棘手的问题。不要害怕片刻,呼吸,思考。如果你有必要的话就去上厕所吧。
此外,虽然Robert返回数组的未旋转版本的解决方案不是O(log ),但如果您在面试中认识到当您呈现数组时不是O(log ),则我可以接受它。在敏捷的世界里,你先让它发挥作用,然后再使它快速运转。如果你在编码前问这是否可以接受的话,我会印象更深刻。
分解一个问题不仅仅是把它分成更小的部分。它也挑战了你对需求的假设。
我可能仍然要求您使用完全O(log )解决方案,但现在我愿意给您更多的时间来找到它,因为您已经向我表明,您不会就这样消失在问题中。只要你正在检查你有多少时间,并显示出你已经知道了,我觉得等待更好。
边想边说会有帮助。他们可能不会给你暗示,但你总是可以用面试官作为鸭子。
https://softwareengineering.stackexchange.com/questions/339123
复制相似问题