Java 基础面试题

1、Java 中 == 、equals 和HashCode的区别
  hashCode 是Object的方法,通过一系列的算法得到一个对象的hash值,这个位置代表的是这个对象在hash表中的位置,不同的对象可能hash值相同
  equals 则是用来比较两个对象是否相等,即两个对象是否是同一个对象,当然我们可以通过重写该方法,让我们的对象在满足其他条件的情况下也返回true
  ==  只能用于基本数据类型的比较,比较的数据的值是否相等
2、int char long 各占多少个字节
  char在java中是2个字节,java采用unicode,2个字节来表示一个字符,short 2个字节,int 4个字节,long 8个字节,float 4个字节,double 8个字节
3、Java多态
 重写 重载 和继承
4、String、StringBuffer和StringBuilder的区别
String为固定长度的字符串,StringBuilder和StringBuffer为变长字符串;
stringBuffer是线程安全的,StringBuilder是非线程安全的;StringBuffer其方法都使用了synchronized关键字,性能与StringBuilder相比当然大打折扣
StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销。
5、什么是内部类
    定义在一个类内部的类,主要作用是隐藏属性、封装方法、可以独立继承
6、抽象类和接口区别
    接口不能有私有的方法和变量,不能有方法的实现,Java1.8以后可以有default方法体,当时抽象类可以有自己的变量和实现方法
    接口可以实现多继承,主要是为了约束子类的行为,抽象类更多是为了实现公共功能,然后再让子类自定义自己的部分。接口成员变量需要用static final修饰不可以修改。
    抽象类可以没有抽象方法和属性
7、泛型中extends 和 super的区别
    他两分别代表了上下边界
8、父类的静态方法能否被子类重写
    不能,重写后就会被覆盖,想要调用父类的静态方法就只有用父类去调用
9、进程和线程的区别
    进程是拥有资源和独立运行的最小单位,线程是进程当中一条执行流程,是程序执行流的最小单位,也是处理器调度和分派的最小单位,一个进程可以包含多个线程
10、final finally和finalize的区别
    final  可以用来修饰类、方法、变量,final修饰的class代表不可以继承扩展,final的变量是不可以修改的,而final的方法也是不可以重写的(override)。
    finally 则是Java保证重点代码一定要被执行的一种机制。我们可以使用try-finally或者try-catch-finally来进行类似关闭JDBC连接、保证unlock锁等动作。
    finalize 是基础类java.lang.Object的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize机制现在已经不推荐使用,并且在JDK 9开始被标记为deprecated。
11、序列化的方式和区别
    Serializable来实现序列化操作,Android中有Parcelable来实现序列化操作
    Serializable的性能更强,Parcelable在序列化过程使用了反射会产生大量的临时变量,从而导致系通频繁的GC,所以性能方面会稍差一点
    Parcelable是以Ibinder作为信息载体的,所以内存开销较小
    Parcelable因为不同版本存在差异,所以做数据持久化的时候还是采用Serializable
    Parcelable 实现较为麻烦
12、kotlin的理解
空对象安全
lambda表达式
13、闭包和匿名内部类的区别
闭包就是能读取其他函数内部变量的函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 ...
    极课编程阅读 4,832评论 0 40
  • 什么是面向对象? 面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java 是一...
    zexiongweng阅读 422评论 0 0
  • 标签:【每日一题】 到目前为止,整理了Android四大组件、Android基本常识、还有这个Java基础面试题,...
    草帽团长阅读 1,330评论 3 15
  • 1.JDK和JRE的区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了...
    a彩虹t阅读 232评论 0 3
  • 一、小策略 说区别的时候,先单独说出每一个的特性,再列出相同点即可。 当遇到自己不太擅长的问题的时候,一定不要慌张...
    唐_方阅读 506评论 1 3

友情链接更多精彩内容