美文网首页
公司面试题实战(二)

公司面试题实战(二)

作者: 你微笑时狠美 | 来源:发表于2018-04-12 16:50 被阅读0次

北京人本科技面试题

1、下面代码输出什么?


       String s0="kvi11";

        String s1=new String("kvi11");

        String s2=new String("kvi11");

        String s3="kv"+"i11";

        String s4="i11";

        String s5="kv"+s4;

        System.out.println("s0==s1************"+(s0==s1));

        System.out.println("s1==s2************"+(s1==s2));

        System.out.println("s0==s3************"+(s0==s3));

        System.out.println("s0==s5************"+(s0==s5));

        System.out.println("s1.intern()==s2.intern()"+ (s1.intern()==s2.intern()));

        System.out.println("s1.equals(s2)"+(s1.equals(s2)));


答案

s0==s1************false

s1==s2************false

s0==s3************false

s0==s5************false

s1.intern()==s2.intern()true

s1.equals(s2)true

2、下面输出什么?


Integer a = new Integer(3);

Integer b = 3;

int c = 3;

System.out.println(a == b);

System.out.println(a == c);

System.out.println(c == b);

答案:

false:因为自动转型,b相当于new了一个新的对象

true

true

3、下面输出什么?


A a=new A();

B b=new B();

A a2=b;

a.v1=10;

b.v1=20;

a.v2=100;

b.v2=200;

System.out.println(a.v1);//20,子类更改了父类变量(类对象可以更改类变量)

System.out.println(a.v2);//100

System.out.println(b.v1);//20

System.out.println(b.v2);//200

System.out.println(a.f());//1

System.out.println(b.f());//2

System.out.println(a2.f());//2

答案:20

100

20

200

1

2

2


public class A {

    public static int v1=0;

    public int v2=0;

    public int f(){

        return 1;

    }

}

public class B extends A{

    public int f(){

        return 2;

    }

}

4、考察异常的输出


public class Test {

    public int trycatch(int[] a){

        try {

            a[0]=0;

            throw new Exception();//1

//            return 10; //2

        }catch (Exception e){

            a[0]=3;

            return 100;

        }finally {

            a[0]=9;

//            return 1000;//3

        }

}

        public static void main(String[] args){

            Test p=new Test();

            int[] a={1,2,3};

            System.out.println("a1="+a[0]);

            System.out.println("r="+p.trycatch(a));

            System.out.println("a2="+a[0]);

            //屏蔽1,3输出1,10,9

            //屏蔽2输出1,1000,9

            //屏蔽2,3输出1,100,9

        }

}

5、输出语句打印什么?


public class A {

    public static void f() {

        System.out.println("A.f");

    }

    public void f(int v) {

        System.out.println("A.f2");

    }

    public static void main(String[] args) {

        B b = new B();

        A ba = b;

        b.f();

        ba.f();

        b.f(0);

        ba.f(0);

    }

}


 public class B extends A {

    public static void f() {

        System.out.println("B.f");

    }

    public void f(int v) {

        System.out.println("B.f2");

    }

}

考察点:子类不能重写父类静态方法,当使用泛型的时候,依然调用的是父类的静态方法,子类调用静态方法的时候,先默认从本类中寻找,找不到就调用父类的静态方法。但是泛型就没用了。

6、动态绑定和静态绑定的区别?重构和重写分别是什么?它们分别属于什么类型的绑定?


所谓静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。

动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

7、查询下表购物商品两种或两种以上的购物人名称

1)表名:购物信息

购物人      商品名称    数量

A            甲          2

B            乙          4

C            丙          1

A            丁          2

B            丙          5

select name from (select DISTINCT name,type  from test1 where name in (select name from test1 group by `name` having count(*) >= 2)) t group by name having count(*) >= 2;

8、写个二分查询

相关文章

网友评论

      本文标题:公司面试题实战(二)

      本文链接:https://www.haomeiwen.com/subject/teexkftx.html