思科采访 |设置 7(校内)
状态:提供全职工作+ 6个月的实习机会。
这是一个4轮面试。第一轮是笔试,有 50 个问题(20 能力 + 30 技术),时间为 1 小时。第二轮是技术轮(1小时)。第三轮是技术+管理轮(20分钟)。第四轮是短暂的HR轮(10分钟)。
在第一轮中,20个能力由简单-中-复杂的能力问题组成。有的在10秒内回答,有的需要30-40秒,较难的需要1分钟多一点。这些问题基于所有经典的能力主题。有些问题以一种令人困惑的方式陈述,但除此之外,没有出现任何问题。技术方面有 30 个问题。大约 10 个来自 C、C++、OS 被问到,另外 5-6 个来自电子方面。大约 5 个来自网络主题,其余的基于数据结构、复杂性估计和相关主题。我能够回答 20 道能力题中的大部分(17-18 道)是正确的,技术方面的 30 道题中有超过 22 道题是正确的。我认为第二轮的截止点在 40 分左右,我已经拿到了,并且我进入了第二轮。
在第二轮中,面试从更简单、更短的问题开始,例如面试官指着上一轮的一个技术问题(面试官有你上一轮的答题卡)并让我解释方法我已经采取了解决问题。他让我解释的问题是递归函数,我必须估计函数的最坏情况时间复杂度。函数是这样的。
function(params)
{
...//terminating condition
else..
return function(params-1) + function(params-1)
}
答案是 O(2^n)。面试官将问题修改为:
返回(函数(params-1)+函数(params-1))*函数(params-1)
其复杂性为 O(3^n)。他让我在纸上得出它,我照做了。下一个问题是关于如何在 32 位整数中设置第 n 位。答案很直接。变量 | 1<树中的级别顺序遍历。
在我这样做之后,他让我遍历树并以相反的级别顺序打印它,但是子节点的关联性应该来自 LR。例如..
4 Then the answer would be:
/ \ 1357264
2 6
/ \ / \
1 3 5 7
在从面试官那里得到一些提示后,我能够毫无错误地对其进行编码。
下一个问题是以之字形方式打印树。 IE:
对于之字形遍历上方的树将产生:4267531。
在考虑了一段时间后,面试官的提示,我也能够编写代码。
基本上到这个时候1小时就到了。面试官寻找的关键点是我解决问题的方法,无错误编码,在实施程序时必须注意所有极端情况。最重要的是你应该确定你的解决方案。面试官问你解决方案是对还是错,这里他在检查你的信心,在编码之后尝试空运行程序一两次,这将有助于增强信心。另外,尽量多和面试官谈谈你的思考过程,这不仅给面试官一个更好的意见,而且如果你告诉他你卡在哪里,他/她可能会给你进一步的线索。
在面试官的提示下回答完所有问题后,我获得了下一轮的资格。
在第三轮,技术管理轮。,重点是你的思考过程,他们对解决方案的技术性不太感兴趣。面试官问我最喜欢的话题是什么,我回答说数据结构和算法。然后他让我编写社交网络的一部分,让人们成为节点,并且他们之间存在不同类型的联系。我的工作是编写函数来连接图的任意两个节点,以及另一个函数来检查 2 个节点是否直接或间接(传递)连接。
我问他,所有这些边/连接是有向的还是无向的,所以为了简单起见,他让我假设它们是无向的。然后我被要求提出一个数据结构来处理这些操作。很明显,这是一个图结构,节点内部有用户详细信息和边列表。
socialGraph 类具有插入、删除功能和 connect(node*,node*) ,
isconnected(node*,node*) 作为友元函数连接 2 个节点并检查 2 个节点是否已连接。连接函数很简单,因为我必须将节点引用附加到节点的边缘列表。
然后检查是否有 2 个节点连接,我做了一个从源节点到目标节点的 DFS。面试官要求我编写可以扩展的代码。所以我建议我们可以做一个 A* 搜索而不是一个 DFS 来缩小搜索空间。面试官似乎对我的解决方案很满意,然后我们继续讨论其他问题。他问我关于我的项目,我在大学各个俱乐部中扮演的角色,我的未来计划,为什么选择思科?和其他类似的简单问题。
我做得很好,获得了参加最后一轮的资格,这是一个临时的 HR 轮,他们问了一些简单的问题,比如我的名字的含义😛,然后我得到了一份评估表来填写,他们问了我一些关于我的问题可以回答。
面试总体上是合理的,但肯定让我跳出思维定势,数据结构和算法方面的深厚知识帮助我通过了这次面试。