您说过您正在面试这个问题的实习职位,所以从这个角度来看,对于全职开发人员来说,门槛会更高。
在面试实习生时,您必须记住,他们可能尚未完成学业,并且他们可能没有编程和计算机科学的任何先前背景也已进入大学。因此,您需要将期望调整为可以合理期望某人知道的信息,并达到该职位的声望程度(即Google可以摆脱人们从未听说过的公司的期望)。
浏览您提出的问题时,我很可能会在访谈中对它们的看法如下:
1)编写一个函数,如果三角形的边(所有整数)a,b和c可以代表直角三角形,则返回true。
几何的基本应用程序具有简单的编码,大多数学生应该可以轻松完成此操作。如果由于参加面试而有些压力,至多可能需要提醒勾股定理。这几乎可以看作是一个“自我提升”问题,因为如果他们在面试中非常紧张,可以帮助解决一些人的问题。
2)FizzBuzz
再次,一些基本控制语句的另一个应用程序。尚未接触过模数运算符或使用不多的学生可能需要提醒它,但不应遇到解决问题的任何实际问题。
3)使用递归计算斐波那契的第N个元素(如果他们不知道斐波那契是什么,我什至可以将它们定义为F(n)= F(n-1)+ F(n-2); F(1 )= 1; F(0)= 1)。
这往往是一个相当普遍的问题,因此大多数(如果不是全部)学生会在毕业前的某个时候看到它。要注意的是,当递归很适合自己时,它通常会显示出来,因为它适合于递归或基于递归或基于循环的解决方案,然后可以将其进行比较,以便来自不同学校的学生可能会在不同时间根据课程的顺序看到它。在实践中,如果某人不能提出递归,我会要求使用循环来替代,如果他们不能提出,我会更担心他们的潜在能力。
4)实现整数的结构列表,并编写函数以将其反转。
这个问题在编写时实际上可能有点开放性,所以看候选人如何寻求其他信息(例如应包括删除功能,转换为数组等)也是一个很好的问题,但是给出了很好的答案定义的问题陈述(“为整数实现基本的列表结构,该结构允许将数字添加到末尾或任意索引处,删除并包括返回列表的反向副本的功能”)学生应该能够解决只要列表是在早期数据结构课程或早期基础计算机科学课程中介绍的常见结构,便会出现问题。
在与候选人打交道时,如果他们很挣扎,请确保他们放松并允许他们宽大处理,因为他们可能只是表现上的焦虑,这可能是他们第一次真正的面试。解决问题的技巧可能是必需的,与第三个问题相比,在第三个和第四个问题的情况下更是如此。
另外,构建整个采访过程的结构,以便内置“优雅的退出”点。例如,您可能具有以下议程:
- 见面,问候,面试程序。
- 短期采访程序员,有关背景的基本问题。
- 演示编程测验。
- 打破
- 休息回来,解雇一些不合适的人选。
- 与员工程序员进行了扩展面试。
- 人力资源面试(如果需要)。
- 包起来。
如果您希望能够及早解雇候选人,因为他们从一开始就知道他们可能会在休息后被解雇,那么这种面试流程往往效果很好。测验前的简短面试还意味着他们不仅要参加考试,还可以让他们进行一些面试练习,也可能使他们认为自己不适合参加考试。如果还有其他程序员在进行测验或协助考生,那么他们也有机会在短暂休息时通过/不及格考生。
在您面试实习生并且候选人都是学生的任何时候,您都必须记住,他们仍然是学生,可能没有太多的面试练习(可能导致表现焦虑),并且可能还没有达到学习目的。甚至能够回答这些问题,这意味着将它们连同给出的问题的“理想解决方案”一起发送给他们,可能是一个好主意。