公司面试题实战(二)

北京人本科技面试题

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、写个二分查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,119评论 18 399
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,540评论 0 41
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,947评论 0 2
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,198评论 1 114
  • 一、我是这么看罗尔事件的 一早起来就发现朋友圈被刷屏了。我当时正想着自己在办的案件,在点进去扫了下文章看了下孩子的...
    lekli阅读 5,794评论 10 14