黑马程序员技术交流社区

标题: 面试结束,惯例惯例~~ [打印本页]

作者: noiary    时间: 2015-1-14 15:58
标题: 面试结束,惯例惯例~~
本帖最后由 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是根据。。。。忘了。。。去吃个饭,回来恶补一下!

下面拿出自己的答案献丑。。
  1. package com.itheima.interview;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;

  6. /**
  7. * 1.编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中,拷贝成功后,把后缀名是.java的文件改为.txt文件。(要求有思路,有注释,
  8. * 有代码,需要注意的是:这个是先拷贝,拷贝成功后才可以改后缀名的)
  9. *
  10. * @author always
  11. * 思路:1.关联文件夹,判断是否拷贝,用File对象关联被拷贝文件夹,然后遍历这个文件夹中的每一个文件,判断文件名后缀是否为.java,如果是,进行拷贝;
  12. *                 2.拷贝,先创建新的文件,循环读取读文件内容, 再写入到新的文件中。
  13. *                 3.改后缀名,遍历新的目录,把所有.java后缀改成.txt
  14. */
  15. public class Test1 {
  16.         public static void main(String[] args) throws IOException {
  17.                 //关联被拷贝文件夹
  18.                 File srcDir = new File("D:\\Java\\java027\\day20");
  19.                
  20.                 //创建新的文件夹
  21.                 File destDir = new File("d:\\interview");
  22.                 if(!destDir.exists())
  23.                         destDir.mkdir();
  24.                
  25.                 //遍历被拷贝文件夹,判断是否为.java文件
  26.                 startCopy(srcDir, destDir);
  27.                
  28.                 //改后缀名
  29.                 changeName(destDir);
  30.         }
  31.         /**
  32.          *
  33.          * @param srcDir
  34.          * @param destDir
  35.          * @throws IOException
  36.          */
  37.         private static void startCopy(File srcDir, File destDir) throws IOException {
  38.                 //获取文件夹下所有文件
  39.                 File[] files = srcDir.listFiles();
  40.                
  41.                 //遍历文件 判断是否为.java文件
  42.                 for(File f : files) {
  43.                         
  44.                         if(!f.isHidden()) { //判断是否隐藏文件,如果是隐藏文件,不拷贝
  45.                                 if(f.getName().endsWith(".java")) {
  46.                                         copyFiles(f, destDir);
  47.                                 }
  48.                         }
  49.                 }
  50.         }
  51.         
  52.         /**
  53.          * 更改文件夹下所有.java文件的后缀名
  54.          * @param destDir
  55.          */
  56.         private static void changeName(File destDir) {
  57.                
  58.                 //获取文件夹下所有文件并遍历
  59.                 File[] files = destDir.listFiles();
  60.                 for(File f : files) {
  61.                         String fileName = f.getName(); //获取文件名
  62.                         String subName = fileName.substring(0, fileName.lastIndexOf(".")); //截取文件名.java之前的部分
  63.                         File newFileName = new File(f.getParent() + "\\" + subName + ".txt");//新的文件名
  64.                         f.renameTo(newFileName); //改名字
  65.                 }
  66.         }

  67.         /**
  68.          * 拷贝文件
  69.          * @param f
  70.          */
  71.         private static void copyFiles(File f, File destDir) throws IOException {
  72.                
  73.                 //在新文件夹下创建文件
  74.                 File destFile = new File(destDir, f.getName());
  75.                
  76.                 //关联被拷贝文件,准备读取
  77.                 FileInputStream fis = new FileInputStream(f);
  78.                
  79.                 //关联新文件夹,准备写入
  80.                 FileOutputStream fos = new FileOutputStream(destFile);
  81.                
  82.                 int len = 0;
  83.                 while((len = fis.read())!= -1) {
  84.                         fos.write(len);
  85.                         fos.flush();
  86.                 }
  87.                
  88.                 fis.close();
  89.                 fos.close();
  90.         }
  91. }
复制代码



  1. package com.itheima.interview;

  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Set;
  5. import java.util.TreeSet;

  6. /**
  7. * 两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”},把这两个集合去除重复项合并成一个。
  8. *
  9. * @author always 思路:1.定义两个集合,分别装入集合内容 2.创建一个不可重复的set集合,分别依次装入两个集合中的元素 3.遍历set集合
  10. */
  11. public class Test2 {

  12.         // 创建集合3 用set集合,分别存入集合1与集合2的内容
  13.         static Set<Character> set = new TreeSet<Character>();

  14.         public static void main(String[] args) {
  15.                 //创建集合1 装入元素
  16.                 List<Character> list1 = new ArrayList<Character>();
  17.                 list1.add('a');
  18.                 list1.add('b');
  19.                 list1.add('c');
  20.                 list1.add('d');
  21.                 list1.add('e');
  22.                
  23.                 //创建集合2 装入元素
  24.                 List<Character> list2 = new ArrayList<Character>();
  25.                 list2.add('d');
  26.                 list2.add('e');
  27.                 list2.add('f');
  28.                 list2.add('g');
  29.                 list2.add('h');
  30.                
  31.                 //遍历集合1与集合2
  32.                 readList(list1);
  33.                 readList(list2);
  34.                
  35.                 //打印集合
  36.                 for(Character ch : set) {
  37.                         System.out.print(ch + " ");
  38.                 }
  39.                
  40.         }
  41.         /**
  42.          * 遍历集合中的元素,并把元素存入到set集合中
  43.          * @param list
  44.          */
  45.         private static void readList(List<Character> list) {

  46.                 for (Character ch : list) {
  47.                         set.add(ch);
  48.                 }
  49.         }

  50. }
复制代码






作者: hahaer    时间: 2015-1-14 16:37
恭喜楼主,多谢分享
作者: pillar    时间: 2015-1-14 19:11
收藏了······
作者: YAn.    时间: 2015-1-14 19:34
感谢分享............
作者: xiao飞    时间: 2015-1-14 19:35
楼主问下考试的时候用的什么工具写代码啊
作者: 暗羽部落    时间: 2015-1-14 19:39
收藏了。感谢分享
作者: kenfine    时间: 2015-1-14 19:55
30分的笔试才2道题?3天内完成?
作者: 鹰击长空168    时间: 2015-1-14 21:37
感谢楼主分享,收藏了
作者: 美咲メイド    时间: 2015-1-14 23:13
哪一期的呀?
作者: noiary    时间: 2015-1-14 23:46
xiao飞 发表于 2015-1-14 19:35
楼主问下考试的时候用的什么工具写代码啊

老师没说,我直接用的eclipse
作者: noiary    时间: 2015-1-14 23:47
美咲メイド 发表于 2015-1-14 23:13
哪一期的呀?

57期                                ;P
作者: noiary    时间: 2015-1-14 23:48
kenfine 发表于 2015-1-14 19:55
30分的笔试才2道题?3天内完成?

是视频面试时的笔试题
作者: jojo    时间: 2015-1-15 00:10
恭喜楼主了
作者: 郭文飞    时间: 2015-1-15 07:09
感谢楼主分享
作者: 以利亚    时间: 2015-1-15 09:43
恭喜楼主,贺喜楼主,楼主威武!
作者: xiao飞    时间: 2015-1-15 10:59
牛B 啊   这分数前面是不是有点悬哦
作者: 19856167    时间: 2015-8-11 14:00
写的不错,感谢楼主,收藏了!
作者: azhuang    时间: 2015-11-10 23:30
亚历山大




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2