15分钟的Java问题来问应届大学毕业生

时间:2020-03-05 18:50:39  来源:igfitidea点击:

在采访大学合作社/实习生或者应届毕业生时,有一个Java编程问题可以帮助他们在15分钟内在白板上完成工作。有人有这样的好问题的例子吗?我曾经在一次采访中被问到的一个C ++问题是,将一个字符串写入整数函数,这与我正在寻找的问题级别相似。

解决方案

回答

  • 编写一个函数以使用指针交换变量值(确实很差的函数会为此失败)
  • 编写程序以查找XY平面中两点之间的距离。利用一个类来存储点。
  • 使用简单的程序演示Java中多态的使用。
  • 编写程序以打印前n个质数。
  • 编写一个程序,用另一个文件替换一个字符串。

回答

有什么理由必须将其放在白板上?就个人而言,我宁愿将它们坐在键盘前面,并让他们编写一些代码。我们的测试曾经是一个简单的100(IIRC)行Swing文本编辑器。然后,我们用几种简单的方法来打破它,有些使代码无法编译,而有些则变得更加微妙,并给应聘者半个小时的时间,并列出了要解决的问题列表。

即使我们无法让他们动手做任何事情,也请确保我们确实向他们提出了一些明确的技术问题。在另一轮采访中,令人惊讶的是,刚毕业的毕业生只是个口口相传的IDE骑师,因此他们看上去可以在白板上谈论企业(即SOA和SOA)时挥舞着双手,但如果有的话,一次简单的Java基础多项选择考试,询问有关"最终"和"受保护"的含义的问题,这非常可怕。

回答

SO上出现了一些东西:

  • IsPalindrome(字符串s)
  • ReverseWordsInString(string s):"我知道java"->" java我知道"

我想到的其他内容:

  • 将向量与矩阵相乘(可以做到OO样式吗?)
  • echo(是,是unix工具的简单克隆)
  • 猫(15分钟就足够了,应该彻底清除)
  • 一个用于ints的简单容器。就像" ArrayList"一样。奖金问题:通用吗?

回答

我一直认为算法问题应该与语言无关。如果要测试学生的Java水平,请专注于语言:它的关键字(从像静态这样的普通单词到诸如volatile这样的更奇特的单词),泛型,重载,变量的装箱/拆箱,标准库。

回答

对于将算法问题与实际语言问题分开的观点,我同意Nicolas的观点。

我们可能要考虑的一件事是给他们几个简单的算法问题,他们可以在白板上编写伪代码(例如,"向我解释Bubble排序并向我显示伪代码。"

然后,一旦他们证明了他们的算法知识,我们就可以继续研究Java问题。由于有些人在计算机前的工作要比在白板前的工作好,因此我会给他们一些简单的方法,但要利用他们的Java知识,他们可以在30分钟左右的时间内使用与我们使用的相同IDE来实现公司。这样,如果他们声称知道IDE,那么我们也可以了解他们的了解程度。

回答

  • 编写一个合并两个已排序列表的函数-止于极限。寻找简单的优化和正确的边界检查/子列表调用。告诉他们T实现compareTo。公共List <T>合并(List <T>一个,List <T>两个,整数限制)
  • 编写一个函数,如果数组中的任何两个整数总和为给定的总和,则返回true。让他们尝试使用某种集合或者数据结构比n平方做得更好。公共布尔containsSum(int [] nums,int sum)

回答

我会避免问他们在本科课程中已经涵盖的问题。我会对他们运用所学知识来解决复杂技术问题的能力感到好奇。如果企业对IT解决方案有特定的需求,则可以以此为起点。我们可以问应聘者他们将使用哪些技术,以及使用这些技术与替代技术的利弊。随着讨论的进行,我们可以了解他们的技术技能,解决问题的能力,人际交往的技能等。我认为即使在尴尬的时刻也要避免指导他们,这一点很重要。这对于清除BSers很重要。

回答

如果我们不知道要问什么问题,那么可能我们不是用Java采访他们的合适人选。出于所有应有的尊重,我讨厌人们在面试中问我自己不知道答案的问题。可以在几秒钟内通过谷歌搜索在线找到大多数问题的答案。如果有人具有Java经验,那么他们一定会知道Abstract类,接口等,因为它们是核心构建块。如果他/她不知道'volatile'关键字,那就大了。