2024年 java基础相关面试和基础 持续更新

本文详细探讨了Java的基础知识,包括JDK、JRE、JVM的区别,Java的优势,内存管理和内存泄漏,以及Java是半编译半解释语言的概念。深入讲解了Java中的位移操作、逻辑运算符、基本类型、数据类型选择、字符存储、比较运算符、final关键字、面向对象特性、对象创建方式、lambda表达式、Stream流和单例模式。还涵盖了Java算法,如冒泡排序和快速排序,以及反射机制、类加载过程、双亲委派模型。此外,讨论了集合、并发编程中的线程和线程池,以及JUC相关概念。
摘要由CSDN通过智能技术生成

一、java基础

1、jdk、jre、jvm的区别

jdk:Java程序开发工具包。
jre:Java程序运行环境。
jvm:Java虚拟机。

2、一个Java源文件中是否可以包含多个类有什么限制

解:可以包含多个类但是只有一个类生命成public并且要和文件名一致

3、Java的优势

跨平台, 面向对象性 安全性高 简单 高性能

4、Java是否存在内存溢出和内存泄漏 如何解决

存在 内存溢出是指不被使用的对象或者变量一直存在于内存中 理论上说不被使用的对象都会被GC垃圾回收机制给自动回收掉 如果长生命周期的对象持有短生命周期的对象的引用就会出现内存泄漏。因为短生命周期的对象不在需要但是因为长生命周期的对象持有它的引用导致不会被回收掉

5、如何看待Java是半编译半解释语言

Java源码通过编译器生成字节码文件在同个类的加载器进行字节码验证。可以通过解释器直接执行也可以通过JIT编译器编译执行

6、如何高效的计算2*8的值

使用 <<

7、&和&&的区别

两者都是与 &是运算符两边都是true整个表达式才会执行
&&是运算饭左边如果是false右边的表达式会直接短路不进行运算

8、Java中的基本类型有哪些?String 是最基本的数据类型吗

byte short int long float double char boolean

9、Java开发中计算金额时使用什么数据类型

不能使用double和float 因为天涯吗不很精确 可以使用 BigDecimal来进行运算
因为不能实现每个十进制小数都对于一个二进制小数 IEEE745标准

10、char变量可不可以存储一个中文汉字

可以的 因为char使用的unicode编码 包含了世界范围的字符

11、== 和equals的区别

==基本类型:比较的是数据
==引用类型:比较的是地址值
equals默认比较的是是引用比较 只是很多类重写了equals方法变成了值比较

12、两个对象的 hashCode() 相同,他们一定相同吗?

hashCode相同不一定相同 equals相同hashcode一点相同

13、final在Java中的作用

final修饰的变量就说常量
final修饰的方法不能被重写
final修饰的类不能被继承

15、++i 和 i++的区别

++i 变量先自增1在运算 i++ 变量先运算在+1

16、面向对象的三大特征

封装 继承 多态
封装: 就是把一个对象私有化,同时提高一些可以对外访问属性的一些方法
继承:
* 子类拥有父类非private的方法和属性
* 子类可以扩展自己的属性和方法
* 子类可以用自己的方式实现父类的方法
多态:
父类引用指向子类对象

17、创建对象的几种方式

通过new 一个对象的实例
使用反射通过class.newInstance创建对象
克隆 实现Cloneable接口重写clone方法
使用序列化和反序列化

18、lambda表达式

19、Stream流

20、单例模式

  • 懒汉:
//直接序列化:  私有化构造方法, 自行创建并静态赋值,可以对外提供这个实例
public class A{
   
   private static final A TE=new A();
   private A(){
   }
}
//枚举	:限定为一个就成了单例
public enum A{
   
   TE
}
//静态代码块实现单例模式, 这种方式可以通过配置文件来进行数学的赋值,只需要修改配置文件的内容就可以了.
public class A{
   
   private static final A TE;
   	static{
   
   	TE=new A();
   	}
   	private A(){
   
   	}
}
  • 饱汉:

二、java基础常用的算法

时间复杂度:分析关键字的比较次数和记录移动次数
由小到大常见的算法时间复杂度由小到大依次为:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

1、冒泡排序

 > 比较相邻的两个值 如果第一个比第二个大就升序,交换他们两个。
 对每一对相邻的元素做同样的工作,从开始到结束 最后的元素就说最大的,持续每次越来越少的上面的步骤,
  public static void main(String[] args){
   
        int[] arr = {
   6,9,2,9,1};
        for(int i=1; i<arr.length; i++){
    
            for(int j=0; j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值