黑马程序员技术交流社区

标题: 直播入学测试题(求版主打赏技术分一枚) [打印本页]

作者: 兴许不接客    时间: 2015-10-16 00:51
提示: 该帖被管理员或版主屏蔽
作者: 兴许不接客    时间: 2015-10-16 00:54
第一题: 1、 ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
拿到此题后当时就高兴了,在14号刚上过通过反射绕过泛型检查的问题  小case    感谢刘正风大大
  开搞:
  1. public class Test1 {
  2.         public static void main(String[] args) throws Exception {
  3.                 // 新建集合
  4.                 ArrayList<Integer> list = new ArrayList<Integer>();
  5.                 // 先为集合添加integer对象
  6.                 // 添加整形即可,自动装箱
  7.                 list.add(18);
  8.                 list.add(24);
  9.                 list.add(22);
  10.                 // 打印查看集合
  11.                 System.out.println(list);
  12.                 // 通过对象获取class对象
  13.                 Class c1 = list.getClass();
  14.                 // 通过字节码对象获取添加方法
  15.                 Method adds = c1.getMethod("add", Object.class);
  16.                 // 运行方法,添加字符串
  17.                 adds.invoke(list, "我爱java");
  18.                 //输出产看集合
  19.                 System.out.println(list);
  20.         }

  21. }
复制代码

搞定收工
作者: 兴许不接客    时间: 2015-10-16 00:59
第二题  一道理论题 2.方法中的内部类能不能访问方法中的局部变量,为什么?
首先将自己得理解通过文字描述出来然后翻笔记,将自己描述不到位的地方和
错误的地方进行更正,并且再次加深记忆。原谅我为了完美去查了资料。
答:不可以。
内部类的生命周期和方法中的局部变量是不一样的,
内部类是也是一个类, 是存储在堆中,也只有当对该类的引用消失时,内部类才会消亡。
而方法的 局部变量是存储在堆栈中的,当调用结束时就会退栈,即在内存中这个属性就消失了。
也就是说,内部类的生命周期超过了方法中局部变量的生命周期,内部类可能会调用到已经消失的属性,
  因此内部类不能访问方法中的局部变量。
    为了是内部类可以访问到局部变量需要在局部变量前加修饰符final此时局部变量就会存在堆中,
    生命周期跟工程的生命周期是一样的,此时内部类就可以访问方法中的局部变量。
再次搞定
作者: 兴许不接客    时间: 2015-10-16 01:01
第三题:程序分析题,看到这个就头大  因为这种题考查的东西说多不多但是都不好做,为了满分拼了
  上题目:
  1. public class Test3 {
  2.         public static void main(String args[]) {
  3.                 Data data = new Data();
  4.                
  5.                 ArrayList<Data> list = new ArrayList<Data>();
  6.        
  7.                 for (int i = 100; i < 103; i++) {
  8.                        
  9.                         data.val = i;
  10.                        
  11.                         list.add(data);
  12.                 }
  13.        
  14.                 for (Data d : list) {
  15.                
  16.                         System.out.println(d.val);
  17.        
  18.                 }
  19.         }

  20. }

  21. class Data {

  22.         int val;
  23. }
复制代码

作者: 兴许不接客    时间: 2015-10-16 01:46
第四题 说实话懵逼了  
        算是一个大总结吧   考到了集合  考到了io   
上代码大家感受一下
  1. package com.itheima;
  2. /*
  3. *  有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  4. *  输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
  5. *  要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  6. *
  7. */
  8. import java.io.BufferedReader;
  9. import java.io.BufferedWriter;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import java.io.InputStreamReader;
  13. import java.util.Collections;
  14. import java.util.Comparator;
  15. import java.util.Set;
  16. import java.util.TreeSet;

  17. public class Test4 {
  18.   public static void main(String[] args) throws IOException  {
  19.     // 自定义强制反转的比较器
  20.     Comparator<Student> cmp = Collections.reverseOrder();
  21.     //以下把比较器作为参数传递
  22.     Set<Student> stus = StudentInfoTool.getStudents(cmp);
  23.     StudentInfoTool.writeToFile(stus);
  24.   }
  25. }

  26. class Student implements Comparable<Student> {
  27.   private String name;
  28.   private int ma, cn, en;
  29.   private int sum;

  30.   Student(String name, int ma, int cn, int en) {
  31.     this.name = name;
  32.     this.ma = ma;
  33.     this.cn = cn;
  34.     this.en = en;
  35.     sum = ma + cn + en;
  36.   }

  37.   public String getName() {
  38.     return name;
  39.   }

  40.   public int getSum() {
  41.     return sum;
  42.   }

  43.   public int hashCode()// 重写方法
  44.   {
  45.     return name.hashCode() + sum * 56;// 56是随便乘的
  46.   }

  47.   public boolean equals(Object obj)// 重写方法
  48.   {
  49.     if (!(obj instanceof Student))
  50.       throw new ClassCastException("不是学生类!");
  51.     Student s = (Student) obj;
  52.     return this.name.equals(s.name) && this.sum == s.sum;
  53.   }

  54.   // 实现接口中的方法,分数相同再比较姓名。如果总分和姓名都相同,就是同一个人。
  55.   public int compareTo(Student s) {
  56.     int num = new Integer(this.sum).compareTo(new Integer(s.sum));
  57.     if (num == 0)
  58.       return this.name.compareTo(s.name);
  59.     return num;
  60.   }

  61.   public String toString() {
  62.     return "姓名"+name+", 数学成绩"+ma+", 语文成绩"+cn+", 英语成绩"+en;
  63.   }
  64. }

  65. class StudentInfoTool {

  66.   public static Set<Student> getStudents() throws IOException// 不论带不带比较器,调用的都是带比较器的方法
  67.   {
  68.     return getStudents(null);// 不带比较器的比较
  69.   }

  70.   public static Set<Student> getStudents(Comparator<Student> cmp)
  71.       throws IOException// 带自定义比较器的比较
  72.   {
  73.     BufferedReader bufr = new BufferedReader(new InputStreamReader(
  74.         System.in));
  75.     String line = null;
  76.     Set<Student> stus = null;
  77.     if (cmp == null)// 不论带不带比较器,调用的都是掉比较器的方法
  78.       stus = new TreeSet<Student>();// treeset内部已经按默认自然排序,排好序啦!!!
  79.     else
  80.       stus = new TreeSet<Student>(cmp);
  81.     while ((line = bufr.readLine()) != null) {
  82.       if ("over".equals(line))// 输入over就结束
  83.         break;
  84.       String[] info = line.split(",");// 以逗号分隔输入的信息
  85.       Student stu = new Student(info[0], Integer.parseInt(info[1]),
  86.           Integer.parseInt(info[2]), Integer.parseInt(info[3]));// 字符串要转换为整形
  87.       stus.add(stu);
  88.     }
  89.     bufr.close();
  90.     return stus;
  91.   }

  92.   public static void writeToFile(Set<Student> stus) throws IOException {

  93.     BufferedWriter bufw = new BufferedWriter(new FileWriter("stuinfo.txt"));

  94.     for(Student stu : stus)
  95.     {
  96.    
  97.       bufw.write(stu.toString()+"\t");
  98.       bufw.write("\t"+"总成绩"+stu.getSum());//要转换成字符串
  99.       bufw.newLine();
  100.       bufw.flush();
  101.     }

  102.     bufw.close();
  103.   }
  104. }
复制代码

这道题参考大神做后做的
作者: 兴许不接客    时间: 2015-10-16 02:59
第五题码出来了
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Random;

  6. /*
  7. * 编写程序,生成5个1至10之间的随机整数,存入一个List集合,
  8. * 编写方法对List集合进行排序(自定义排序算法,禁用Collections.sort方法和TreeSet),
  9. * 然后遍历集合输出。
  10. */
  11. public class Test5 {
  12.         public static void main(String[] args) {
  13.                 // 新建一个集合
  14.                 List list = new ArrayList<Integer>();
  15.                 method2(method(),list);
  16.                 //打印查看
  17.                 System.out.println(list);
  18.         }
  19.         //新建方法用于为集合添加元素
  20. //新建方法用于生成随机数并排序
  21.         public static int[] method() {
  22.                 //新建一个数组用于存放随机数
  23.                 int temp[] = new int[5];
  24.                 //产生所需随机数
  25.                 for (int i = 0; i < temp.length; i++) {
  26.                         //生成1-10 的随机数
  27.                         int shu = new Random().nextInt(10) + 1;
  28.                         //放入数组
  29.                         temp[i] = shu;
  30.                         //进行排序
  31.                         Arrays.sort(temp);
  32.                 }
  33.                 //返回这个数组
  34.                 return temp;

  35.         }
  36.         public static void method2(int[] a,List list){
  37.                 //遍历排序好的数组 并将元素添加到集合中
  38.                 for (int i : a) {
  39.                         list.add(i);
  40.                 }
  41.                
  42.         }
  43. }
复制代码

作者: fenger7    时间: 2015-10-16 06:57
这是笔试还是哪个测试呀
作者: fwqk123    时间: 2015-10-16 08:05
厉害  学习了
作者: 吾要娶她    时间: 2015-10-16 08:42
还行 看起来比较简单
作者: 小穿钉    时间: 2015-10-16 08:43
加油,赞一个
作者: SF_NEVERMORE    时间: 2015-10-16 08:56
第三题答案是啥?
作者: pqq    时间: 2015-10-16 11:32
必须赞一个!
作者: LLLLL    时间: 2015-10-16 13:36
6666666666666666
作者: q2209617    时间: 2015-10-16 22:34
必须点个赞
作者: 0925李超月    时间: 2015-10-16 22:41
现在对于我还是相当的难啊
作者: dai2686779    时间: 2015-10-16 22:45
赏!!!!!!!!
作者: ksh    时间: 2015-10-16 23:11
666,果真好难,加油,,,
作者: jyf823691221    时间: 2015-10-17 00:17
必须点个赞
作者: pan1564335    时间: 2015-10-17 00:18
感觉有点难 还得努力啊
作者: Love1027    时间: 2015-10-17 06:50
赞一个,加油。
作者: heshiwei    时间: 2015-10-17 09:10
厉害啊,学习了。
作者: T-l-H、小生    时间: 2015-10-17 09:32
回过头来看看这些基础题,感觉蛮有爱的。。。。
作者: 七了个七    时间: 2015-10-17 10:06
这个是报到的时候的入学测试? 好难呀
作者: 黑夜中那颗星    时间: 2015-10-17 11:50
如果全是这种题,感觉毫无压力
作者: shoresmile    时间: 2015-10-17 12:25
SF_NEVERMORE 发表于 2015-10-16 08:56
第三题答案是啥?

102
102
102
作者: shoresmile    时间: 2015-10-17 12:27

作者: hyzhw    时间: 2015-10-17 17:04
厉害 ,怎么和我的题目一样呢?
作者: 莫盛强    时间: 2015-10-17 17:28
基本没问题。
作者: 迷途老马    时间: 2015-10-17 20:32
赞!!!!!!!!
作者: 如梦丶似幻    时间: 2015-10-17 21:10
前来学习~~~~~
作者: yuanjun52306    时间: 2015-10-17 21:43
天哪,一个不会。。
作者: lkjmnbqwe    时间: 2015-10-17 21:47
好厉害啊,我竟然都看不懂
作者: lzh838330255    时间: 2015-10-17 23:01
恩,写的不错

作者: michael_wlq    时间: 2015-10-17 23:10
貌似这些题不让放这里的。。。
作者: 大地z灵    时间: 2015-10-17 23:53
这个要顶起,大家都来看看




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