【发布时间】:2009-11-30 09:50:14
【问题描述】:
最近我接受了一家软件公司的面试。我没有通过第一轮。
也许我在形成想法或解决问题方面太慢了,对我面试的公司来说还不够好。 我想对我的面试有第二个意见,我找不到比我更好的人了 stackoverflow 社区。p>
所以这次采访是一个基本的采访
- 简介
- 您为什么申请这个职位?
- 一个技术问题(详情如下)
- 你用过的最差的软件是什么?为什么?改进
- 你用过的最好的软件是什么?为什么要改进?
原始技术问题(根据面试官的要求)
给定一个数字范围 M.....M+N-1 我构造一个大小为 N 的数组,并用一个数字替换该数组中的一个元素。 你将如何找到被替换的元素?
我让他再次重复这个问题,因为我认为输入不足以解决问题。 他重复了同样的声明
问。然后我问他你从数字范围内得到的数组是不是排序的?
面试官:没必要
Q 在替换元素之前我们知道数组吗?
面试官:没有
然后我开始编写一些伪代码(一边大声思考)。我立即意识到,如果原始数组有重复,它将无法工作。所以我愣了一会儿,想怎么解决这个问题。最后我问了一些重要的问题
Q 如何从 Range 中选择元素组成数组?
采访者:我有一个数字范围M,M+1,M+2....M+N-1。一个数字只被选中一次。然后我形成一个大小为 N 的数组。(这基本上意味着没有重复,并且范围内的所有元素都被选中)
Q 那你替换它的号码呢?是否在同一范围内?
采访者:是的。
然后一切都变得清晰
这就是他的意思:
Q 我有一个从 M 开始的数字范围,例如 M,M+1,M+2,M+3...M+N 。我形成一个大小为 N 的数组,这样每个元素只被挑选一次,并且原始数组没有任何重复项。我用相同范围内的数字替换数组中的一个元素。找出我从范围中挑选的要替换的内容?
这相当于在数组中查找重复项。这里替换后只有一对重复我们可以很容易地在 O(N^2) 时间或 O(nlogn) 时间内找到它。我把两种算法都给了他。
最后我忍不住问他“我在那个问题上表现如何?他说嗯,你花了很多时间回答。
显然他对我对这个问题的处理方式不满意。
你认为我在回答这个问题时应该做些什么不同的事情?
【问题讨论】:
-
您可能应该将此标记为社区 wiki,因为它是一个相当主观的主题。
-
您可能答对了,但也有可能其他候选人也答对了。此外,选择不仅仅基于技术答案,而且个性对团队经理很重要 - 你真的无法知道团队经理在想什么或他想要什么。在很多方面,工作面试就像相亲。你遇到了那个人,那么无论你们中的一个人是否被另一个人强烈吸引,你都不能让另一个人想成为你的伴侣。
-
是的,我知道选择过程并不完全基于回答技术问题。我更感兴趣的是如何更有效地处理这个问题?就像我应该提前说的那样,考虑到当前的输入,这个问题是无法解决的。
-
事后看来,我认为您可以事先询问您对问题的理解是否正确。 “一个数字”和“构造一个数组”是模棱两可的:在给定一系列值的情况下,没有一种单一的方法可以“构造一个数组”,“一个数字”是什么意思?圆周率? -1 的平方根?需求收集是面试时测试的一个合理的事情,虽然我不知道这是否是面试官的意图,或者他是否认为你会理解“construct”基本上意味着“shuffle”而“a number”意味着“one数组中的其他个值”。
-
如果范围是 [M, M+N],你需要一个 N+1 大小的数组。您似乎将范围 [M, M+N) 设为了一部分,然后在结论中恢复为 [M, M+N]。
标签: algorithm