有人問我在採訪這個問題,答案並不一定是特定的編程語言,與平臺或特定刀具。
問題被表述爲以下幾點:
你怎麼會得到給定單詞的實例計數爲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:感謝您增加複雜性! :)不同的意見是我正在尋找的! –