1. 程式人生 > >騰訊測試面試遇到的java筆試題

騰訊測試面試遇到的java筆試題

去騰訊面試測試,面試官給出了一個比較簡單的題,當時沒寫出來,現在補上來自己寫的很粗糙的一個答案。

扔出去一塊磚,撿回一塊玉

希望大家能夠指點一下我這個小菜雞~

問題:從一個日誌檔案中找到有幾處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在文章末尾,這些情況可能對應不同的問題,如果當時能夠懂這些的

話我想應該問題不至於回答的那麼表面。