【Java基本知识】

Java 面经

1. Java语言有哪些特点?

  1. 简单易学、有丰富类库
  2. 面向对象(低耦合、高类聚)
  3. 与平台性无关。
  4. 安全可靠、支持多线程

2. 有哪些数据类型

  1. 基本数据类型:常见的8种。byte、short、int、double、long、char、bool、float。
  2. 引用数据类型:数组、接口、类

3. equals与==的区别?

  1. ==在比较两个基本数据类型时,比较的是两个变量的值。比较引用数据类型时,比较的是存在堆中的地址值。
  2. equals在比较两个引用数据类型时,比较的时两个对象的内容是否相等。前提是要重写equals(),Object类使用equals()来比较时,默认是用等等来比较在这里插入图片描述

4.String类常用的方法?

length()、charAt()、equals()、toString()、contains()、comparaTo()、indexOf()、subString()

5.Object类常用的方法?

toString()、equals()、hashCode()、wait()、clone()、getClass()、notify()

6.接口与抽象类的区别?

相同点:

  1. 接口和抽象类都不能实例化,都为与继承树的顶端。
  2. 接口和抽象类都有抽象方法,实现接口或者继承抽象方法的普通子类必须实现这些方法。

不同点:

  1. 抽象类定义的关键字是abstract class,接口定义的关键字是interface
  2. 属性上,抽象类可以有静态变量、常量和成员变量。接口只有常量。
  3. 抽象方法可以有普通方法,接口在jdk1.8之前只有抽象方法,jdk1.8之后增加了静态方法和默认方法。
  4. 抽象方法可以有构造方法,接口不可以有构造方法
  5. 抽象方法是单继承的,接口是多实现的
  6. 抽象方法在业务编程上更像一个模板,有自己的功能,而接口更像一种规范。

7.重写和重载的区别?

重写:

  1. 发生在父类与子类之间。
  2. 方法名、返回类型、参数列表必须相同
  3. 访问修饰符要大与等于父类方法。pubilc>protected>default>private
  4. 不能跑出范围比父类大的异常
  5. 若父类的访问修饰符是private,则子类不能重写该方法。

重载:

  1. 构造器不能重写,只能进行重载。
  2. 同名方法,参数列表不同(参数类型,参数个数,参数顺序)都不同,不能通过返回类型来判断是否是重载。

8.String、StringBuffer、StringBuilder的区别?

  1. String是不可变的,一个String对象从创建到销毁他的字符串序列都不会改变。
  2. StringBuffer和StringBuilder是可变的,可以通过append()、insert()、revers()来改变字符串序列,一旦的得到想要的字符串序列就可以通过toString()转变为String类型。
  3. StringBuffer和StringBuilder的区别在于线程是否安全,StringBuffer是线程安全的,StringBuilder是线程不安全,所以效率比较高一些。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

9. 线程的创建方式有几种?

线程的创建方式有4种。

  1. 继承Thread类。
  2. 实现runnable接口
  3. 实现callable接口
  4. 线程池。

方式一:

  1. 创建继承Thread类的子类。
  2. 重写run方法。
  3. 创建Thread子类的实例对象,及创建线程对象
  4. 调用start()方法

10.说说对线程池的理解?

核心参数、处理流程、拒绝策略
核心参数:

  1. 核心线程数(corePoolSize)、等待队列(workQueue)、最大线程数(maxNumPoolSize)、拒绝策略(handler)、空闲线程存活时间(keepAliveTime)。
  2. 第一步:判断线程数是否达到核心线程数,如果没有达到则继续创建线程,否则进入下一步。
  3. 第二步:判断等待队列是否已满,如果没满继续让线程进入等待队列,否则进入下一步。
  4. 第三步:判断是否达到最大线程数,没有达到的话继续创建线程执行任务,否则进入下一步。
  5. 采用初始化线程池时指定的拒绝策略,拒绝执行该任务。
  6. 新建的线程处理完当前任务后,不会立刻关闭,而是继续处理等待队列中的任务。如果线程达到空闲存活时间,则将销毁一部分线程,将线程数收缩到核心线程数。

拒绝策略有四个:

  1. 让调用者自己执行任务
  2. 直接抛出异常
  3. 丢弃任务不做仍何处理
  4. 删除队列中最老的任务并把当前任务加到队列。

11.Java中常见的集合有哪些?

List、set、map。

============后面在更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只想躺平(已上岸)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值