本帖最后由 noiary 于 2015-1-14 16:03 编辑
再此鸣谢面试官陈金萍老师,说一句老师辛苦啦!
历时2个小时,肚子呱呱叫。。终于结束了。话不多说,惯例奉上。
总分是108.7,因为自荐信追加了1分,不过我也一直奇怪,写了2000字的自荐信,竟然只拿了7分。。。
准备面试的同学,除了敲代码,一定要多练习自己说一遍(最好不止一遍),面向对象(继承,多态),多线程,io流,集合,网络编程(貌似这个问到的不多,但大致轮廓一定要知道),给你一个词,你得能说出一些东西来。
笔试部分:
1.编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中,拷贝成功后,把后缀名是.java的文件改为.txt文件。(要求有思路,有注释,
* 有代码,需要注意的是:这个是先拷贝,拷贝成功后才可以改后缀名的)
2.两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”},把这两个集合去除重复项合并成一个。
差点忘了说,有一个知识点栽了跟头。。set集合不可以重复,是根据什么判断的,我说hashSet是根据hashCode和equals判断,treeSet是根据。。。。忘了。。。去吃个饭,回来恶补一下!
下面拿出自己的答案献丑。。
- package com.itheima.interview;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /**
- * 1.编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中,拷贝成功后,把后缀名是.java的文件改为.txt文件。(要求有思路,有注释,
- * 有代码,需要注意的是:这个是先拷贝,拷贝成功后才可以改后缀名的)
- *
- * @author always
- * 思路:1.关联文件夹,判断是否拷贝,用File对象关联被拷贝文件夹,然后遍历这个文件夹中的每一个文件,判断文件名后缀是否为.java,如果是,进行拷贝;
- * 2.拷贝,先创建新的文件,循环读取读文件内容, 再写入到新的文件中。
- * 3.改后缀名,遍历新的目录,把所有.java后缀改成.txt
- */
- public class Test1 {
- public static void main(String[] args) throws IOException {
- //关联被拷贝文件夹
- File srcDir = new File("D:\\Java\\java027\\day20");
-
- //创建新的文件夹
- File destDir = new File("d:\\interview");
- if(!destDir.exists())
- destDir.mkdir();
-
- //遍历被拷贝文件夹,判断是否为.java文件
- startCopy(srcDir, destDir);
-
- //改后缀名
- changeName(destDir);
- }
- /**
- *
- * @param srcDir
- * @param destDir
- * @throws IOException
- */
- private static void startCopy(File srcDir, File destDir) throws IOException {
- //获取文件夹下所有文件
- File[] files = srcDir.listFiles();
-
- //遍历文件 判断是否为.java文件
- for(File f : files) {
-
- if(!f.isHidden()) { //判断是否隐藏文件,如果是隐藏文件,不拷贝
- if(f.getName().endsWith(".java")) {
- copyFiles(f, destDir);
- }
- }
- }
- }
-
- /**
- * 更改文件夹下所有.java文件的后缀名
- * @param destDir
- */
- private static void changeName(File destDir) {
-
- //获取文件夹下所有文件并遍历
- File[] files = destDir.listFiles();
- for(File f : files) {
- String fileName = f.getName(); //获取文件名
- String subName = fileName.substring(0, fileName.lastIndexOf(".")); //截取文件名.java之前的部分
- File newFileName = new File(f.getParent() + "\\" + subName + ".txt");//新的文件名
- f.renameTo(newFileName); //改名字
- }
- }
- /**
- * 拷贝文件
- * @param f
- */
- private static void copyFiles(File f, File destDir) throws IOException {
-
- //在新文件夹下创建文件
- File destFile = new File(destDir, f.getName());
-
- //关联被拷贝文件,准备读取
- FileInputStream fis = new FileInputStream(f);
-
- //关联新文件夹,准备写入
- FileOutputStream fos = new FileOutputStream(destFile);
-
- int len = 0;
- while((len = fis.read())!= -1) {
- fos.write(len);
- fos.flush();
- }
-
- fis.close();
- fos.close();
- }
- }
复制代码
- package com.itheima.interview;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Set;
- import java.util.TreeSet;
- /**
- * 两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”},把这两个集合去除重复项合并成一个。
- *
- * @author always 思路:1.定义两个集合,分别装入集合内容 2.创建一个不可重复的set集合,分别依次装入两个集合中的元素 3.遍历set集合
- */
- public class Test2 {
- // 创建集合3 用set集合,分别存入集合1与集合2的内容
- static Set<Character> set = new TreeSet<Character>();
- public static void main(String[] args) {
- //创建集合1 装入元素
- List<Character> list1 = new ArrayList<Character>();
- list1.add('a');
- list1.add('b');
- list1.add('c');
- list1.add('d');
- list1.add('e');
-
- //创建集合2 装入元素
- List<Character> list2 = new ArrayList<Character>();
- list2.add('d');
- list2.add('e');
- list2.add('f');
- list2.add('g');
- list2.add('h');
-
- //遍历集合1与集合2
- readList(list1);
- readList(list2);
-
- //打印集合
- for(Character ch : set) {
- System.out.print(ch + " ");
- }
-
- }
- /**
- * 遍历集合中的元素,并把元素存入到set集合中
- * @param list
- */
- private static void readList(List<Character> list) {
- for (Character ch : list) {
- set.add(ch);
- }
- }
- }
复制代码
|