情景:
在面試過程中,求職者被要求寫乙個檔案拷貝函式。
問:你是怎樣理解「拷貝」的?
答:嗯... 就是把檔案的內容複製到新檔案。
問:那麼時間戳呢?
答:不拷貝。
問:目標檔名是否必須相同?
答:不必。
問:那它的名字
能否一樣?
答:這個...不能。
問:要不要擔心名字欺騙?比如土耳其 i (
注1)?
答:不要擔心。
問:檔案位置是否必須相同?請注意
如果位置相同的話,則名稱不能一樣,除非拷貝到自身(接下來的問題是...)
答:當然。
問:怎麼處理檔案屬性?
答:檔案屬性相同。
問:要不要修改原檔案的屬性?如果該檔案是備份或存檔的一部分,仍然保留其「存檔」屬性可能會出錯。
答:不管它,保持原樣。
問:如果原檔案沒有「存檔」屬性呢?假如新檔案的「存檔」屬性為空,可能會造成使用者的備份程式出錯。
答:保持原樣,不用理會使用者的備份軟體。
問:這個嘛,軟體設計要為使用者著想,我不認為這是最好的方案,但你是這樣回答的。
答:...
問:那麼壓縮問題?這是檔案的屬性之一,但目標位置可能不支援壓縮。
答:複製的文件不用壓縮。
問:即使原檔案是壓縮的,而且目標位置也支援壓縮?
答:是的。
問:關於加密檔案,假如原檔案是加密的,但目標位置不支援加密怎麼辦?
答:如果目標位置
不支援加密,就不對複製檔案加密。
問:嗯...,對不起,不是我節外生枝,但是這可能會引起嚴重的安全漏洞。尤其是這個檔案複製函式最後可能要支援任意個引數(直接或間接)。
答:聽著,我只管拷貝那個該死的檔案。
問:那麼檔案的建立者呢?
答:不管他。
問:檔案的所有者?
答:我不管。
問:檔案的許可權?要不要分別處理繼承的許可權和指定的許可權?
答:不考慮許可權。
問:該檔案複製函式執行時所需的作業系統?
答:windows xp。
問:家庭版、專業版、**中心版,其中之一還是多種?
答:專業版。
問:補丁包呢?
答:service pack 2。
問:這就意味著我們不支援其它的補丁包?
答:正是。
問:如何提供原檔名?
答:通過乙個引數。
問:使用空字元結束的字串、計算字元個數的字串還是物件?
答:空字元結束的字串。
問:是否可能傳入空指標?
答:不。
問:是否可能傳入空字串?
答:不會。
問:是否可能傳入惡意的字串(例如,沒有以 null 結束)?
答:不。
問:檔名用那種編碼?
答:unicode。
問:對不起,unicode 不是編碼格式,實際上在使用unicode時要指定編碼的名稱,例如 utf-8, ucs-2, utf-16,等等。
答:很對,就用 utf-16。
問:big-endian 還是 little-endian (
注2)?
答:隨便!
問:接受相對路徑,還是只接受完整路徑?
答:只接受完整路徑。
問:是否只支援特定的字元以便能對傳入的引數進行過濾?
答:沒有,呼叫者將負責過濾所有的路徑和檔名。
問:目標檔案的檔名是如何生成或提供的?
答:...
問:是否支援(或允許)非同步檔案拷貝操作?
答:不。
問:怎樣報告錯誤?異常?錯誤**?
答:隨便。
問:應當在函式內部捕獲異常,還是傳遞給呼叫者?
答:這個...傳遞出。
問:假如目標檔案已經存在怎麼辦?
答:不會。
問:由呼叫者保證?
答:毫無疑問。
問:假如它
真的存在,那就終止程式?顯然違背了約定的條件,但誰知道發生了什麼事情。
答:當然,隨便您。
問:怎麼處理其他資料流?
答:悉聽尊便!
問:看來您覺得我有些過分,不過請別生氣。我只不過是想要澄清我們的要求而已。顯然如果我要寫乙個檔案拷貝方法的話,不會使用許多現有的庫和框架中的例程,而是要滿足許多特殊的要求。我想要的是這些問題的正確答案。如果您願意,我可以花一分鐘時間講解。要指出的是,在需求和目的方面,仍然有
相當多的問題沒有解決。
答:啊..........................
任務完成。
*************************==
原文出自:(
ooze)
注:注釋為譯者所加。
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...
一道面試題
前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...
一道面試題
如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...