有人问我在采访这个问题,答案并不一定是特定的编程语言,与平台或特定刀具。
问题被表述为以下几点:
你怎么会得到给定单词的实例计数为PDF。答案不一定是编程,平台或特定工具。只要让我知道你怎么会在内存和速度效率的方式
我张贴了以下原因这个问题做:
- 为了更好地理解上下文 - 我仍然无法理解在这个问题的背景下,面试官可以通过问这个问题寻找什么?
- 获得不同的意见 - 我倾向于根据我在编程语言(C#)方面的技能来回答这些问题,但可能有其他有效的方法来完成此操作。
感谢您的关注。
有人问我在采访这个问题,答案并不一定是特定的编程语言,与平台或特定刀具。
问题被表述为以下几点:
你怎么会得到给定单词的实例计数为PDF。答案不一定是编程,平台或特定工具。只要让我知道你怎么会在内存和速度效率的方式
我张贴了以下原因这个问题做:
感谢您的关注。
如果我不得不编写一个程序来做到这一点,我会找到一个能够从PDF文件中提取文本的PDF渲染库,例如Xpdf,然后对这些文字进行计数。 如果这是一项任务或需要为非生产质量任务自动执行的任务,那么我只需将该文件提供给pdftotext程序,然后使用python解析输出文件,然后将其分解为文字一本字典和计数的发生次数。
如果我问这个面试问题时,我会找一两件事情:
现在我不希望这个来自任何没有PDF体验的随机候选人,但是您可以对PDF是什么以及什么是“单词”进行非常有意义的讨论。你看,PDF存储文本为一串带坐标的字符串。每个字符串不一定是一个字。通常情况下,这些单词将被分割成几个完全独立的字符串,这些字符串绝对位于文档中以形成单个单词。这就是为什么有时在PDF文档中搜索单词时会看到奇怪的结果。因此,要在文档中实现文字搜索,您必须将这些字符串粘贴在一起(pdftotext为您处理)。
这根本不是一个坏问题。
我会建议使用Java的开源解决方案。首先,你必须解析pdf文件并使用Tika提取所有文本。
那么我相信正确的问题是如何在文本中找到单词的TF(词频)。我不会因为定义而给你带来麻烦,因为只需扫描提取的文本并计算单词的频率即可实现此目的。
示例代码应该是这样的:
while(scan.hasNext())
{
word = scan.next();
ha += (" " + word + " ");
int countWord = 0;
if(!listOfWords.containsKey(word))
{
listOfWords.put(word, 1); //first occurance of this word
}
else
{
countWord = listOfWords.get(word) + 1; //get current count and increment
//now put the new value back in the HashMap
listOfWords.remove(word); //first remove it (can't have duplicate keys)
listOfWords.put(word, countWord); //now put it back with new value
}
}
我喜欢这个问题,因为它超越了只是评估,如果候选人可以编码,一个字计数算法。这使得候选人能够展示他将如何完成实际工作,如果他足够深思熟虑,可以向面试官提出明智的问题以进行澄清。如果我是面试官,我可能会深入研究字典的实现(哈希,特里等),还可以向候选人展示一些关于他的其他决定的曲线球,以了解他是如何做出反应的。 (例如“pdf文件是用中文书写的 - 这对你的代码有什么影响?”)。 – selbie
@selbie:感谢您增加复杂性! :)不同的意见是我正在寻找的! –