我于11月底经过转介申请了为期6个月的实习。我认为若是你经过转介提出申请, 则只需1-2天便可从HR处得到回复, 可是2-3天后, 当没有人联系我时, 我认为我不会再收到他们的回音。可是两周后, 我收到了有关在线编码回合的邮件。html
有2个编码问题和28个MCQ。面试
我可以解决两个问题。数组
两天后, 他们告诉了我有关现场面试的信息, 我不得不去亚马逊班加罗尔办公室。模块化
面试那天, 我去了办公室。还有大约70-80个学生。测试
这是60分钟的时间, 并询问了2个编码问题。我彻底解决了一部分问题。个人面试官很酷并且很友善。尽管他没有笑不少, 但他让我感到咱们在讨论这个问题。他从常见的关于你问题开始, 而后直接跳到编码问题。优化
Q1。你在地面楼梯上, 必需要到达"第N个"楼梯。在任何楼梯上, 你最多只能执行" K"步。查找能够到达第N个楼梯的总数。编码
int countWays(int N, int K)操作系统
他向我解释了这个问题, 而后经过一个样本测试用例对其进行了解释。而后请我先解释一下这种方法, 若是他对这种方法感到满意, 那么只有我才能编写代码。他告诉我, 他还将在笔记本电脑上记下来。code
首先, 我给了他递归暴力解决方案(由于这就是CTCI所说的)。而后他让我优化它。而后, 我给了他时间复杂度为O(N * K)和空间复杂度为O(N)的DP方法。而后他要求我进一步优化它。我使用了另外一个变量来存储最后K个楼梯的总和, 并为第i个楼梯增长其值, 为第(i-k)个楼梯减小其值。如今个人时间复杂度为O(N), 空间复杂度为O(N)。我觉得如今能够编码了, 可是他再次要求我优化空间。而后我给了他O(K)空间队列解决方案。如今他对这种方法感到满意, 并要求我对其进行编码。他再次向我解释了编写代码时的指望。 (可读, 模块化, 缩进, 有意义的变量名)。而后我编写了代码, 他检查了一下并感到满意。htm
Q2。带有交换的最小字符串– https://leetcode.com/problems...
我很难提出强力解决方案, 我告诉他。而后他给了我一些提示, 在他的帮助下, 我想出了一个强力解决方案。以后, 咱们进行了一些讨论, 即蛮力解决方案是否将始终提供正确的解决方案。在那以后, 他让我优化它, 我正在尝试, 可是他告诉我时间到了, 若是我有任何问题。我只是问过他实习生的角色以及哪一个团队正在招聘实习生。
15分钟后, 他们告诉我我要进行下一轮比赛。
一样是60分钟, 询问了3个编码问题。首先, 他请我作一个简短的介绍。而后他问我有关个人实习和项目的状况。而后他告诉了我他对本轮比赛的指望。他告诉我, 他会根据时间询问2-3个问题, 我须要先向他解释逻辑, 而后再进行编码。另外, 请遵循良好的编码习惯。他告诉我说, 我将不能覆盖编写代码, 而且他将在计算机上编写确切的代码(不肯定他是否确实作到了, 可是他正在笔记本电脑上打字)。
Q1。困雨水问题
首先, 给他蛮力解O(N ^ 2)。他告诉我对其进行优化。而后给了他leftMax和rightMax数组方法。他说我如今能够编码。在编写代码时, 我确保保持整洁, 使用描述性变量名尽量使其模块化。他查看了个人代码, 问了我几个问题, 而后转到第二个问题。
Q2。
既然我已经回答了这个问题, 我告诉他我只须要在数组中找到LIS。他告诉我我该怎么作。我给他O(N ^ 2)方法。他说能够, 请我编码。
Q3。这是一个简单的问题。他问我那里有一块土地, 里面有一个湖。我须要找到湖的大小。我告诉他我能够用1表示土地, 用0表示水, 而后在遇到任何0时使用DFS。而后他问有关DFS的问题以及我将如何作。我向他解释了个人方法, 而后他要求我为此编写伪代码。
而后他问我是否有任何问题。我问他一些问题。
而后大约20分钟后, HR打电话给他并向我表示祝贺。
更多面试相关内容请参考:lsbin - IT开发技术:https://www.lsbin.com/
参考更多面试题相关内容: