腾讯测试面试遇到的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在文章末尾,这些情况可能对应不同的问题,如果当时能够懂这些的

话我想应该问题不至于回答的那么表面。

你可能感兴趣的:(java)