java知识点

题目来源:知乎:慕课网:最全的BAT大厂面试题整理

(一)java基础面试知识点:

1.java中==和equals和hashCode的区别

  1. == :比较两个对象是否相等。对于基本类型来说,是比较是否相等;对于引用类型来说,是比较两个引用对象的地址是否相等;
  2. equals:比较两个对象的引用是否相等,即比较两个引用是否指向同一对象不能用于基本数据类型,对于未重写过的equals,比较的还是对象的地址是否相同,重写后的equals比较的是对象的内容是否相同;
  3. hashCode:用于比较两个对象是否相等。Object类的hashCode方法是将对象的物理地址转换成一个整数,再将这个整数经过hash函数的计算,得到该对象在hash表中的位置。
  4. 推荐阅读:hashcode详解

2. int、char、long各占多少字节数

  1. int:占4个字节数(float)
  2. char:占2个字节数(short)
  3. long:占8个字节数(double)

3.int和Integer的区别

  1. int基本数据类型Integer是int的包装器类
  2. int的默认值是0Integer对象的默认值是null
  3. 其他的一些关于int和Integer的知识,推荐大家看: 彻底让你明白 Integer 类和 int 基本数据类型的区别

4.谈谈对java多态的了解

  1. 由于存在继承关系,java允许子类对象可以向上转型为父类的对象
  2. 动态绑定
  3. 编译时类型和运行时类型不一致时,导致多态的发生

5.String、StringBuilder、StringBuffer的区别

  1. String类是final类,不可被继承,当需要改变字符串的内容时,String类的方法都会返回一个新的String对象。因此,在做字符串拼接的操作时,若在循环中使用重载的“+”或者concat()方法,将产生大量需要垃圾回收的中间对象。
  2. StringBuilder是在1.5版本之后出现的类,高效率的进行字符串的拼接,运行效率高于StringBuffer,但是是线程不安全的。
  3. StringBuffer也可以高效的进行字符串的拼接工作,是线程安全的。

6.什么是内部类?内部类的作用

  1. 内部类,就是定义在类中的类,是编译时的语法,编译后生成的两个类彼此独立。
  2. 内部类配合接口使用,来强制做到弱耦合。内部类可以自由的访问外部类的成员,包括私有成员

7.抽象类和接口的区别

  1. abstract 关键字修饰的类就是抽象类,倘若一个类中存在至少一个抽象方法,该类必须被声明为抽象类,不可生成对象,必须被继承(extends关键字)使用,一个类只能继承一个类(单继承);抽象类中可以有方法的实现。
  2. 接口不是类,是一种协议,用interface关键字声明,接口中的所有方法必须都是public抽象的;所有字段默认都是public static final 的;实现接口的关键字implements,一个类可以实现多个接口(多实现),接口间可以有继承关系;接口中不能有方法的实现。

8.抽象类的意义

9.抽象类和与接口的应用场景

10.抽象类是否可以没有方法和属性?

  1. 抽象类可以没有方法和属性;
  2. 若一个类中有一个抽象方法,这个类就必须是抽象类;但抽象类中可以没有抽象方法;

11.接口的意义

  1. 提供了统一的标准

12.泛型中的extends和super的区别

  1. <? extends E>,表示容器中的类型是E的子类,即向下匹配
  2. <? super E>,表示容器中的类型是E的父类,即向上匹配

13.父类的静态方法能否被子类重写

子类中可以存在与父类相同的方法签名,且必须为静态,但由于是静态方法,方法与任何对象无关,只与其所在的类相关,因此子类中的方法并不能覆盖父类中的方法

14.进程和线程的区别

  1. 进程:正在运行的程序,动态的概念
  2. 线程:可以看作是轻量级的进程

15.final、finally、finalize的区别

  1. final是Java中的关键字,可以修饰类、方法和字段;修饰类时,表明该类不可被继承(final类的所有方法默认是final的);修饰方法时,表明该方法不可被覆盖(privatestatic方法默认是final方法);修饰字段时,对于基本数据类型,表明其值不可改变,对于引用类型,表明该对象的引用不可变
  2. finally,在捕获异常的try{}catch(){}块的最后,finally{},表示无论try中的块有没有异常发生,都会执行finally块中的内容
  3. finalize是Object类的一个方法,当对象被垃圾收集的时候,最后会由JVM调用这个对象的finalize()方法

16.序列化的方式

  1. 实现Serializable接口,这个接口中没有任何抽象方法,只是用作标记
  2. 序列化:把对象放在流中进行传输

17.Serializable和Parcelable的区别

18.静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?

  1. 静态属性和静态方法可以被继承。原因:在继承关系中,子类继承父类所有的属性和方法,对于private修饰的属性或方法,虽然子类可以继承,但子类却是不可调用的。
  2. 静态方法不可以被重写。原因:见13。

静态内部类的设计意图

成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

  1. 内部类可以弥补java单继承的缺陷

谈谈对kotlin的理解

闭包和局部内部类的区别

String转换成Integer的方式及原理

  1. Integer.valueOf(String str)
  2. Integer.parseInt(String str)

(二)java深入源码级的面试题(有难度)

(三)数据结构

(四)线程、多线程和线程池

(五)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值