Java基础面试题 1~15

1.面向对象的特点

  • 封装 : 简单的说,就是把客观的的事物封装成一个抽象的类,并且类可以把自己的数据和方法让可信的类或者对象操作,对不可见的类进行隐藏;简单地说,内部操作对于外部而言不可见(保护性).
  • 继承 : 继承是指一种能力,它可以使用现有类的所有功能,不用重新编写就可以在原有类的功能上进行扩展
  • 多态 : 相同方法的不同情况下的不同表现形式

2.请你介绍一下Syncronized锁,如果用这个关键字修饰一个静态方法,锁住了什么?如果修饰成员方法,锁住了什么?

  • 如果锁的是静态方法,则锁住了类的class对象
  • 如果修饰成员方法,则锁住了当前对象

3.什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?

  • 如果连接字符串行表达式很简单(顺序结构),那么"+"和StringBuilder基本是一样的.
  • 如果是复杂的循环结构,那么+操作时,每个循环内都会创建一个StringBuilder对象,消耗大量资源,解决这个问题的最好的办法就是在外部创建一个StringBuilder对象,在内部调用append()方法

4.重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

  • 重载发生在同一个类中,方法名相同,返回值可以不同,也可相同,方法的参数列表不同(参数类型不同,参数个数不同)
  • 重写发生在子类与父类之间,返回值类型必须相同,子类的权限必须比父类更好访问;
  • 重载的方法不能通过返回类型来区分,比如:void fun()int fun()在调用的时候,都是用 .fun()的方式来调用,不能够区分是哪一个fun()方法.但是可以在class文件里共存.

5.String类是否可以被继承?
不能,String类似final类,不能被继承

6.访问修饰符public,private,protected,以及不写(默认)时的区别?
在这里插入图片描述
7.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
12 和 -11

8.构造器(Constructor)是否可以被重写?
不能,但是构造器可以被重载

9.两个对象equals相同,那么他们的hashCode相同吗?
相同.
equals和hashCode就相当于 X 与F (X) 之间的关系
重写equals时必须重写hashCode方法

10.char型变量是否可以储存一个汉字,为什么?
可以
java使用的时Unicode编码,一个char占两个字节,也就是16位,所以可以存的下

11.内部类与静态内部类的区别?

  • 静态内部类不用外部类实例化后被实例化
  • 内部类通常需要外部类实例化后被实例化

12.抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰, 是否可同时被final修饰?

  • static方法不能不能被重写,不能
  • native方法都是本地语言实现的,而abstract没有实现,不能
  • synchronized方法有实现的细节,abstract没有实现,不能
  • final方法不能被修改,abstract还要被子类实现,不能

13.说明静态变量和实例变量的区别.

  • 静态变量,由static修饰,属于类变量,由类直接调用,不属于任何一个实例,不管实例多少对象,静态变量只有一个,大量使用于工具类
  • 实例变量,属于某一实例,通过类的对象调用

14.静态方法是否可以直接调用非静态方法?
不可以,静态方法只能访问静态方法,非静态方法通过实例化对象调用

15.String s = new String(“xyz”);创建了几个字符串对象?
两个,一个是常量池的"xyz",另一个是new的堆上的对象

下半部分面试题

发布了42 篇原创文章 · 获赞 13 · 访问量 6500

猜你喜欢

转载自blog.csdn.net/weixin_43508555/article/details/104440320
今日推荐