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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 神之梦 于 2013-6-30 13:11 编辑

                             不小心看到几个小小的面试题{:soso__4607844064215092132_2:}
=================================================
    你来:      

            先写出你自己的答案,然后自己可以复制代码去验证
            写出你的分数,回复下看你可以得多少分?{:soso_e151:}(总分60分)
=================================================
    说明:{:soso_e156:}
            只是与大家互动下,你可以心算出结果,觉得自己的是正确答案即可
            统计出并回复自己的分数,看答案是不是跟你的结果一样呢???
     

    提醒:{:soso__4577674484651993234_3:}
            不管是写出结果还是指错,你都可以不写出答案和分析过程
            但是真正面试的时候,肯定需要写出分析过程或者理由的



此帖不是答题帖,仅作分享之用!!答题帖请戳:http://bbs.itheima.com/thread-58500-1-1.html


一、写出下面代码的执行结果(分值35分)
1、(10分)
  1. public class Foo {
  2.         public static void main(String[] args) {
  3.                 String strValue="ABCDEFG";
  4.                 strValue.substring(3);
  5.                 strValue.concat("123");
  6.                 System.out.println("result=" + strValue);
  7.                
  8.                 String value = new String ("ABCDEFG");
  9.                 System.out.println(strValue== value);
  10.         }
  11. }
复制代码
2、(5分)
  1. public class Foo{  
  2.        public static void main(String args[]) {
  3.                 int x = 100;
  4.                 int y = 200;
  5.                 if (x = y)
  6.                         System.out.println("Not equal");
  7.                 else
  8.                         System.out.println("Equal");
  9.         }
  10. }
复制代码
3、(10分)
  1. class A {
  2.   void fun1() {
  3.     System.out.println(this.fun2());
  4.   }
  5.   int fun2() {
  6.     return 123;
  7.   }
  8. }

  9. class B extends A {
  10.   int fun2() {
  11.     return 456;
  12.   }
  13.   public static void main(String argv[]) {
  14.     A a;
  15.     B b = new B();
  16.     b.fun1();
  17.     a = b;
  18.     a.fun1();
  19.   }
  20. }
复制代码
4、(10分)
  1. import java.util.*;
  2. class Data {
  3.         int  val;
  4.         int  getVal() {
  5.                 return val;
  6.         }
  7.         void  setVal(int val) {
  8.                 this.val = val;
  9.         }
  10. }

  11. public class ListTest {

  12.   public static void main(String argv[]) {
  13.           Data data = new Data();
  14.           ArrayList list = new ArrayList();

  15.           for (int i=100; i<103; i++) {
  16.             data.setVal(i);
  17.             list.add(data);
  18.           }

  19.         int j = 0;
  20.         while (j < list.size()) {
  21.           Data tmp = (Data )list.get(j);
  22.           System.out.println("list(" + j + ") = " + tmp.getVal());
  23.           j++;
  24.         }
  25.   }
  26. }
复制代码
二、请指出以下代码有哪些错误(分值25分,每个5分)
1、
  1. abstract class Name {
  2.    private String name;
  3.    public abstract boolean isStupidName(String name) {}
  4. }
复制代码
2、
  1. public class Something {
  2.    void doSomething () {
  3.        private String s = "";
  4.        int l = s.length();
  5.    }
  6. }        
复制代码
3、
  1. public class Something {
  2.    public int addOne(final int x) {
  3.        return ++x;
  4.    }
  5. }
复制代码
4、
  1. public class Something
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.              Something s = new Something();
  6.              System.out.println("s.doSomething() returns " + doSomething());
  7.         }
  8.         public String doSomething()  
  9.         {
  10.              return "Do something ...";
  11.         }
  12. }
复制代码
5、
  1. class Something
  2. {
  3.      final int i;
  4.      public void doSomething()
  5.      {
  6.          System.out.println("i = " + i);
  7.      }
  8. }
复制代码
---------------------------------------------------------------------------回复看答案吧~~~~{:soso__3110130392203091378_3:} -------------------------------------------------------------------------

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 2技术分 +2 黑马币 +6 收起 理由
Just_Only + 6 赞一个!
袁梦希 + 2 很给力!

查看全部评分

17 个回复

正序浏览
Just_Only 发表于 2013-6-30 23:11
好吧,我只能说,拿了六十分。。。
第一题:
          String是最终类,不能改变其值,当改变的时候其实是 ...

你牛:handshake            
回复 使用道具 举报
本帖最后由 Just_Only 于 2013-6-30 23:27 编辑

好吧,我只能说,拿了六十分。。。
第一题:
          String是最终类,不能改变其值,当改变的时候其实是指向了新的对象,而substring和concat后都是新的串,所以结果还是原来的,new的时候是新的对象,在字符串类中由 于复写了Object类中的equal(父类中是用来比较地址的)是用来比较值是否一样,而“==”是用来比较地址是否一样,显然地址不一样所以为false。
第二题:
           if里面是条件表达式即结果应该是boolean型的而x=y是赋值运算所以会编译失败。  如果改成(x=y)==y结果又是呢??????
第三题:
           B继承A的方法fun1和fun2并且覆盖了a中的方法fun2, A a; B b = new B();b.fun1();a = b; a.fun1();这些说明,创建了A类的引用,创建了B类的对象,调用B类中的方法  fun1所以得到的是456,最后个是说父类的引用指向了子类,调用的是父类的方法执行的是子类的对应的方法,所以结果也是456。
第四题:
           Data data = new Data();//创建Data对象,并在内存中分配了地址。ArrayList list = new ArrayList();//创建一个数据结构是数组的集合,可以是重复的元素,因为有下标,并且存是对象而且是地址。 for (int i=100; i<103; i++) {data.setVal(i);  list.add(data);   这个for循环说明是,第一次的时候改变Data实例对象中val的值为是100,然后把Data对象地址放到集合中,后面几次类推,到循环结束后Data实例对象中val的值为102,所以输出的时候结果都是102,有三次,因为大小是3.
错误题目
1.第三行报错,抽象方法不能有主体,只有方法的声明,
2.第三行错误,局部变量不能是私有的
3和5.final值不能被改变,final修饰的成员变量要被初始化
4.静态不能调用非静态的,如果想调用,那么可以建立对象,使用对象来调用。



回复 使用道具 举报

哎  40分
回复 使用道具 举报
vicoooo 发表于 2013-6-30 15:59
呵呵。。。。。

{:soso__3110130392203091378_3:}
回复 使用道具 举报

得了多少?:lol
回复 使用道具 举报
肥猫 发表于 2013-6-30 20:12
第一题substring参数应该是两个,返回的字符串需要重新赋值,否则还是原字符串;
第二题应该是X==Y;
第三题是 ...

哥们,基础知识还是挺不错的哇{:soso_e179:}
回复 使用道具 举报
本帖最后由 肥猫 于 2013-6-30 20:33 编辑

第一题substring参数应该是两个,返回的字符串需要重新赋值,否则还是原字符串;
第二题应该是X==Y;
第三题是两个456,关键在A=B不多说;
第四题太长了;
1.抽象方法没有方法体;
2局部变量不用私有;
3形参值不能变;
4主函数不能调用非静态方法,用Something.doSongthing()就行了;
5这题怎么连主函数都省了,这还怎么运行...I还没赋值;
回复 使用道具 举报
看看自己能得多少分
回复 使用道具 举报
呵呵。。。。。
回复 使用道具 举报
神之梦 发表于 2013-6-30 13:49
哥们,还是你牛,这才是真正的考验技术。。。。。。
不要怀疑题目,第二题就是在考验人的
指错的第一题哥 ...

抽象方法不能有主体,之前还真不知道 。又少一个盲点。
回复 使用道具 举报

沙发哥们,记得做题:D
回复 使用道具 举报
王靖远 发表于 2013-6-30 13:45
一。1."result="ABCDEFG
true
2.应该是x==y吧?

哥们,还是你牛,这才是真正的考验技术。。。。。。
不要怀疑题目,第二题就是在考验人的
指错的第一题哥们的理由不充足哈。。:lol
技术够硬!!!!!赞!!!!!
回复 使用道具 举报
得了40分 嘿嘿
回复 使用道具 举报
一。1."result="ABCDEFG
true
2.应该是x==y吧?
Equal
3.
456
456
4.
list(0)=102
list(1)=102
list(2)=102
二1.抽象类中的抽象方法不该公有化。
2.方法内不该私有化局部变量。
3.final修饰的变量 不能改变值。
4.非静态方法应该用对象调用。
5.fInal修饰的成员变量得赋予初值。
回复 使用道具 举报
尹桥印 发表于 2013-6-30 13:14
不是,我正想说第二题报错,为什么版主又看得到答案。。。

额,我不是设置了回复可见???版主的权限咋这么大了?
回复 使用道具 举报
沙发..{:soso_e197:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马