最近面试某某公司测试工程师的时候遇到的一个编程笔试题,如下
请生成 test1@126.com 123456 到 test5000@126.com 123456 的5000个邮箱账号,换行展示并保存在test.txt文件中,可编程实现,也可使用其它方法,即:
test1@126.com 123456
test2@126.com 123456
......
test5000@126.com 123456
编程方面,我基本用的是Java和shell,那我这里就用java和shell两种方式实现
解法一:Java
思路:这个题用Java来写,可以说比较简单,题目的变动就只有1-5000这几个数字,另外就是实现换行和输出到test.txt文件中,就需要用到大概三点,变量、异常捕捉、输出流。变量主要实现1-5000,输出流实现输出字符到test.txt文件中,异常捕捉在这里作用就是捕捉输出流IO异常,变量、异常捕捉、IO都是自动化测试中经常需要用到的内容,代码如下
import java.io.*;
public class Email {
public static void main(String args[])
{
// 获取当前工作空间路径
String dir = System.getProperty("user.dir");
// 设置test.txt文件路径
String path = dir + "\\test.txt";
// System.out.print(path);
File file = new File(path);
if (!file.exists()) {
// try、catch实现异常捕捉
try {
// 如果文件不存在,创建文件
file.createNewFile();
// FileOutputStream fileOutputStream = new FileOutputStream(file , true);
// Writer writer = new OutputStreamWriter( fileOutputStream);
FileWriter fileWriter = new FileWriter(path,true);
// 变量i实现1-5000
for ( int i = 1 ; i <= 5000 ; i++ )
{
// writer.write("test" + i + "@126.com 123456\n");
// 把字符输出到test.txt文件末尾
fileWriter.append("test" + i + "@126.com 123456\n");
}
// writer.close();
// fileOutputStream.close();
// 每次写文件结束,都要关闭输出流
fileWriter.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
解法二:shell
思路:换成是shell script实现就更简单了,代码缩减了一大半,主要就是用一个变量、表达式、while循环、和重定向输出到test.txt文件即可,代码如下
#!/bin/bash
#create 5000 email acounts from 'test1@126.com 123456' to 'test5000@126.com 123456'
i=1
while [ "$i" -le 5000 ]
do
echo "test$i@126.com 123456" >> test.txt
i=`expr $i + 1`
done
用shell实现短得不能再短了,我答题的时候,也是用的shell实现,shell对于一些简单的操作是很强大的,可谓杀人越货,必备良药啊