黑马程序员技术交流社区
标题: 几个小小的面试题============你能全做对吗? [打印本页]
作者: 神之梦 时间: 2013-6-30 13:11
标题: 几个小小的面试题============你能全做对吗?
本帖最后由 神之梦 于 2013-6-30 13:11 编辑
不小心看到几个小小的面试题{:soso__4607844064215092132_2:}
=================================================
你来:
先写出你自己的答案,然后自己可以复制代码去验证
写出你的分数,回复下看你可以得多少分?{:soso_e151:}(总分60分)
=================================================
说明:{:soso_e156:}
只是与大家互动下,你可以心算出结果,觉得自己的是正确答案即可
统计出并回复自己的分数,看答案是不是跟你的结果一样呢???
提醒:{:soso__4577674484651993234_3:}
不管是写出结果还是指错,你都可以不写出答案和分析过程
但是真正面试的时候,肯定需要写出分析过程或者理由的
一、写出下面代码的执行结果(分值35分)
1、(10分)- public class Foo {
- public static void main(String[] args) {
- String strValue="ABCDEFG";
- strValue.substring(3);
- strValue.concat("123");
- System.out.println("result=" + strValue);
-
- String value = new String ("ABCDEFG");
- System.out.println(strValue== value);
- }
- }
复制代码 2、(5分)- public class Foo{
- public static void main(String args[]) {
- int x = 100;
- int y = 200;
- if (x = y)
- System.out.println("Not equal");
- else
- System.out.println("Equal");
- }
- }
复制代码 3、(10分)- class A {
- void fun1() {
- System.out.println(this.fun2());
- }
- int fun2() {
- return 123;
- }
- }
- class B extends A {
- int fun2() {
- return 456;
- }
- public static void main(String argv[]) {
- A a;
- B b = new B();
- b.fun1();
- a = b;
- a.fun1();
- }
- }
复制代码 4、(10分)- import java.util.*;
- class Data {
- int val;
- int getVal() {
- return val;
- }
- void setVal(int val) {
- this.val = val;
- }
- }
- public class ListTest {
- public static void main(String argv[]) {
- Data data = new Data();
- ArrayList list = new ArrayList();
- for (int i=100; i<103; i++) {
- data.setVal(i);
- list.add(data);
- }
- int j = 0;
- while (j < list.size()) {
- Data tmp = (Data )list.get(j);
- System.out.println("list(" + j + ") = " + tmp.getVal());
- j++;
- }
- }
- }
复制代码 二、请指出以下代码有哪些错误(分值25分,每个5分)
1、- abstract class Name {
- private String name;
- public abstract boolean isStupidName(String name) {}
- }
复制代码 2、- public class Something {
- void doSomething () {
- private String s = "";
- int l = s.length();
- }
- }
复制代码 3、- public class Something {
- public int addOne(final int x) {
- return ++x;
- }
- }
复制代码 4、- public class Something
- {
- public static void main(String[] args)
- {
- Something s = new Something();
- System.out.println("s.doSomething() returns " + doSomething());
- }
- public String doSomething()
- {
- return "Do something ...";
- }
- }
复制代码 5、- class Something
- {
- final int i;
- public void doSomething()
- {
- System.out.println("i = " + i);
- }
- }
复制代码---------------------------------------------------------------------------回复看答案吧~~~~{:soso__3110130392203091378_3:} -------------------------------------------------------------------------
作者: Wen丶 时间: 2013-6-30 13:12
沙发..{:soso_e197:}
作者: 神之梦 时间: 2013-6-30 13:16
额,我不是设置了回复可见???版主的权限咋这么大了?
作者: 王靖远 时间: 2013-6-30 13:45
一。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:47
得了40分 嘿嘿
作者: 神之梦 时间: 2013-6-30 13:49
哥们,还是你牛,这才是真正的考验技术。。。。。。
不要怀疑题目,第二题就是在考验人的
指错的第一题哥们的理由不充足哈。。:lol
技术够硬!!!!!赞!!!!!
作者: 神之梦 时间: 2013-6-30 13:50
沙发哥们,记得做题:D
作者: 王靖远 时间: 2013-6-30 14:12
抽象方法不能有主体,之前还真不知道 。又少一个盲点。
作者: vicoooo 时间: 2013-6-30 15:59
呵呵。。。。。
作者: ㄗs:/|丶hearts 时间: 2013-6-30 19:34
看看自己能得多少分
作者: 肥猫 时间: 2013-6-30 20:12
本帖最后由 肥猫 于 2013-6-30 20:33 编辑
第一题substring参数应该是两个,返回的字符串需要重新赋值,否则还是原字符串;
第二题应该是X==Y;
第三题是两个456,关键在A=B不多说;
第四题太长了;
1.抽象方法没有方法体;
2局部变量不用私有;
3形参值不能变;
4主函数不能调用非静态方法,用Something.doSongthing()就行了;
5这题怎么连主函数都省了,这还怎么运行...I还没赋值;
作者: 神之梦 时间: 2013-6-30 21:40
哥们,基础知识还是挺不错的哇{:soso_e179:}
作者: 神之梦 时间: 2013-6-30 21:41
得了多少?:lol
作者: 神之梦 时间: 2013-6-30 22:03
{:soso__3110130392203091378_3:}
作者: ㄗs:/|丶hearts 时间: 2013-6-30 22:59
哎 40分
作者: Just_Only 时间: 2013-6-30 23:11
本帖最后由 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.静态不能调用非静态的,如果想调用,那么可以建立对象,使用对象来调用。
作者: 神之梦 时间: 2013-7-1 13:00
你牛:handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |