騰訊測試面試遇到的java筆試題
阿新 • • 發佈:2018-12-25
去騰訊面試測試,面試官給出了一個比較簡單的題,當時沒寫出來,現在補上來自己寫的很粗糙的一個答案。
扔出去一塊磚,撿回一塊玉
希望大家能夠指點一下我這個小菜雞~
問題:從一個日誌檔案中找到有幾處error錯誤,將錯誤數量寫在另一個檔案中。
(當時沒聽清楚是寫錯誤資訊還是錯誤的數量,此版本為寫錯誤數量,接下來我再想想怎麼統計日誌資訊,算是個簡單的日誌歸集功能吧)
程式碼如下:
package Interview; import java.io.*; /** * @auther *** * @date 8/6/2018 3:42 PM */ public class ErrorMessageCollect { public static void main(String[] args) throws IOException { ErrorMessageCollect errorMessageCollect = new ErrorMessageCollect(); String readResult = errorMessageCollect.readFile("d:/read.txt"); errorMessageCollect.writeFile(errorMessageCollect.ErrorNumberCollect(readResult)); } public String readFile(String s) throws IOException { BufferedReader br = new BufferedReader(new FileReader(s)); String content = null; while ((s = br.readLine()) != null) { content = s; } br.close(); return content; } public void writeFile(int i) throws IOException { String strI = String.valueOf(i); File file = new File("d:/write.txt"); FileOutputStream fos = new FileOutputStream(file,false); fos.write("錯誤的個數為: ".getBytes()); fos.write(strI.getBytes()); fos.flush(); fos.close(); } public int ErrorNumberCollect(String s){ String strToFind = "error"; int index = 0; int count = 0; int indexx = 0; while((index = s.indexOf(strToFind,indexx)) != -1){ indexx = index + strToFind.length(); count ++; } return count; } }
簡單寫了程式的實現之後也能夠回答面試時第二個問題了。
第二個問題是:如果需要測試這個error統計的程式,應該怎麼測?
當時的回答只有一些基本功能實現層面的回答,自己寫了之後才發現其實程式碼層面有很多可能出問題的地方,
根據程式碼實現使用的不同的方法,可能會有很多問題,比如error在文章開頭的時候可能第一個字元會讀不到,
比如error後一半在另外一行,比如error在文章末尾,這些情況可能對應不同的問題,如果當時能夠懂這些的
話我想應該問題不至於回答的那麼表面。