我正在面试一个开发应用程序的候选人,该应用程序在很大程度上依赖于Lucene。除了我通常问的问题外,我希望能够问一两个特定于Lucene的问题,以便大致了解他们对该库的熟悉程度。问题是我自己没有Lucene的经验。有什么建议吗?
我会问的一些问题: Lucene的数据结构是什么?(倒排索引) Lucene如何计算文档的相关性?(向量空间模型、布尔模型) 什么是段?(索引的一部分) 文本如何被索引?(分析器、分词器) 什么是文档?(字段的集合) Lucene查询语法是什么样的?(布尔查询、提升、模糊搜索) 它与关系数据库有何不同,何时应选择其中之一?
如果候选人有很长的Java开发历史,熟悉Lucene API可能并不那么重要。对于不熟悉Lucene的人来说,可能需要更长时间才能开始,但从长远来看,我会更喜欢非常有经验的Java开发人员,而不是有一定经验的Lucene开发人员。事实上,如果他们的作品集令人印象深刻,我可能更喜欢非常有经验的非Java程序员。
这是一项棘手的任务。你正在寻找比你更了解Lucene的人,因此,你不能成为候选人知识水平的可靠评判者(尽管你至少应该能够剔除那些明显不如你懂的人)。我的建议是要求候选人向你解释一些让你感到困惑的Lucene方面。面试结束后,你可以查阅相关资料来判断答案是否合理。这样做还有一个额外的好处,即测试他们沟通复杂思想的能力。(如果答案是“我不知道”,那么你应该把它看作是一个好兆头:愿意承认自己无知的人比那些不愿承认自己无知的人值得更多。)