栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础面试题

目录
  • 什么是面向对象
  • 面向对象的三大特征
  • JDK JRE JVM
  • ==和equals的比较
  • hashcode和equals
  • final
  • String StringBuffer StringBuilder
  • 重载和重写的区别
  • 接口和抽象类区别
  • List和set的区别
  • ArrayList和linkedList的区别
  • HashMap和HashTable有什么区别,其底层是什么实现的?
  • ConcurrentHashMap原理
  • java中的异常体系
  • java类加载器
  • 双亲委派模型
  • GC如何判断对象是否可以被回收
  • GC Roots的对象

什么是面向对象

拿洗衣机举例,面向对象会拆分出洗衣机和人两个对象,可以复用、扩展、可维护
面向过程会拆分一系列动作,更加高效

面向对象的三大特征
  1. 继承
    继承基类的方法,并作出自己的改变和扩展
  2. 多态
    继承和封装都是为多态服务的,多态是指同一行为不同形式的表现。java的重写和重载是实现多态的两种方式。
    多态三要素:继承,重写,父类指向子类引用
  3. 封装
    将同一类事物的特征和方法包装在一起,对外只暴露接口
JDK JRE JVM

JDK:java开发工具
JRE:java运行环境
JVM:java虚拟机

==和equals的比较

基本数据类型比较值
引用类型比较对象的地址值

如果类中重写了equals方法,比较内容是否相等。
String、Date、File、包装类都重写了Object类的equals方法。
如果类中没有重写equals方法,比较地址值是否相等(是否指向同一个地址值)

hashcode和equals

如果两个对象相等,则hashcode一定相等,对象的equals方法也返回true
如果hashcode相同,他们不一定相等
因此equals方法被覆盖,则hashcode也一定要被覆盖

final

修饰类:表示类不可以被继承
修饰方法:表示方法不可以被重写,可以重载
修饰变量:表示变量一经赋值,不可以更改

String StringBuffer StringBuilder

String:final修饰,不可变,每次操作都会产生一个新的string对象
StringBuffer:线程安全,synchrinized修饰,多线程使用共享变量时使用
StringBuilder:线程不安全,效率高

重载和重写的区别

重载:发生在同一个类中,方法名相同,参数类型,数量,顺序不同。返回值和访问修饰符可以不同,发生在编译时
重写:发生在父子类中,方法名和参数列表必须相同,返回值范围和抛出异常的范围小于等于父类,方法修饰符大于等于父类

接口和抽象类区别 List和set的区别

List:有序,可以重复,允许多个null,可以通过get()获得指定下标元素
Set:无序,不可以重复,只能有一个null,只能通过迭代器逐一遍历

ArrayList和linkedList的区别

ArrayList:基于动态数组,适合下标访问。扩容机制:数组长度固定,超出数组长度需要新建数组。将老数组拷贝到新数组。如果不是尾插法,会涉及到插入元素的移动。
linkedList:基于链表,适合插入和删除,不适合查询。需要逐一遍历。

HashMap和HashTable有什么区别,其底层是什么实现的?

HashMap:没有synchronized修修饰,不安全,允许空值
HashTable:安全,不允许空值
底层实现:数组加链表
JDK8开始链表长度大于8数组长度大于64,链表变成红黑树,元素以内部node节点存在

ConcurrentHashMap原理 java中的异常体系

java所有的异常来自于顶级父类Throwable
下面有两个子类:Error和Exception
Excption分为RunTimeException运行时异常和CheckException检查异常,
CheckException发生在编译过程中。

java类加载器 双亲委派模型 GC如何判断对象是否可以被回收

引用计数法:每个对象都有一个引用计数属性,新增一个引用的时候计数加一,释放一个引用的时候计数减一,当计数为0时,可以回收。
可达性分析法:从GC Roots向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何一条引用链,该对象可以被回收

GC Roots的对象

虚拟机栈中引用的对象
本地方法栈Native引用的对象
方法区常量引用的对象
方法区类静态属性引用的对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号