A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© noiary 高级黑马   /  2015-1-14 15:58  /  3341 人查看  /  17 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码





评分

参与人数 1技术分 +5 收起 理由
lwj123 + 5 很给力!

查看全部评分

17 个回复

倒序浏览
恭喜楼主,多谢分享
回复 使用道具 举报
收藏了······
回复 使用道具 举报
感谢分享............
回复 使用道具 举报
楼主问下考试的时候用的什么工具写代码啊
回复 使用道具 举报
收藏了。感谢分享
回复 使用道具 举报
30分的笔试才2道题?3天内完成?
回复 使用道具 举报
感谢楼主分享,收藏了
回复 使用道具 举报
美咲メイド 来自手机 中级黑马 2015-1-14 23:13:44
9#
哪一期的呀?
回复 使用道具 举报
xiao飞 发表于 2015-1-14 19:35
楼主问下考试的时候用的什么工具写代码啊

老师没说,我直接用的eclipse
回复 使用道具 举报

57期                                ;P
回复 使用道具 举报
kenfine 发表于 2015-1-14 19:55
30分的笔试才2道题?3天内完成?

是视频面试时的笔试题
回复 使用道具 举报
jojo 中级黑马 2015-1-15 00:10:48
13#
恭喜楼主了
回复 使用道具 举报
感谢楼主分享
回复 使用道具 举报
恭喜楼主,贺喜楼主,楼主威武!
回复 使用道具 举报
牛B 啊   这分数前面是不是有点悬哦
回复 使用道具 举报
写的不错,感谢楼主,收藏了!
回复 使用道具 举报
亚历山大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马