Java基础面试题及答案!!面试直接答这些

java 内存图

Java内存图描述了jvm运行时内存的划分,主要包括:

堆:存储对象实例,分为新生代和老年代 方法区:存储类信息、静态变量 虚拟机栈:线程私有、存储栈帧 程序计数器:记录当前线程执行的字节码行号

基本类型

byte boolean char int short float double long

128陷阱

在Integer a=128; Integer b=128; 在a和b进行比较是否相等的时候,因为Integer和int涉及到自动拆装箱,所以Integer a=Integer.valueOf(128)与Integer a=128是一个意思,valueOf的内部是有取值范围了,是-128~127,如果超出了这个范围,需要重新new对象,那么两个的地址就不一样了所以a和b是不相等的。

字符串常用api

split:分割字符串 upperCase:转化为大写 lowerCase:转化为小写 indexOf:查找当前字符所在的位置 charAt:查找当前位置的字符 trim:去除前后所有的空格 length:返回字符串的长度 substring:进行字符串的截取

字符串为啥是不可变的

因为string类的实现类是由final修饰的,类中存储数据的char数组也是由final修饰的,类中无修改char数组内容的方法

static关键字有啥作用

修饰类:静态的类只有静态内部类 修饰方法:归类所有、所有实例共享、方法内不能访问实例变量 修饰变量:归类所有、所有实例共享 修饰代码块:代码从上往下执行只是执行一次

final关键字有啥作用

final修饰的类是不能被继承的,final修饰的方法不能被重写,final修饰的变量不能再次被赋值

为啥重写equals 要重写hashcode

根据Java规范,equals()相等的对象必须有相同的hashcode。如果不遵守这个规则,当对象作为键存入hashmap或hashset时,会导致无法正确查找对象,因为哈希集合首先通过hashcode定位对象,再用equals确认相等性,只重写equals会导致逻辑上相等的对象可能被放入不同的哈希桶中,破坏集合类的正常工作

常用的集合

list:arraylist、linkedlist set:hashset、treeset map:hashmap、treemap、hashtable

反射

反射是Java提供的动态机制,允许程序再运行时获取类的信息操作其属性和方法,通过Class、Filed、Method等核心类实现,常用于框架开发(如spring的依赖注入)。

代理

代理是一种设计模式,通过代理对象控制对真实对象的访问。Java支持静态代理(手写编写代理类)和动态代理(运行时生成),动态代理包括JDK动态代理和CGLIB动态代理,JDK动态代理要求目标类实现接口,而CGLIB通过继承继承生成子类代理。Spring AOP默认使用JDK动态代理,若无接口则使用CGLIB。代理模式广泛应用于日志、事务、RPC等场景

面向对象的特性,分别在什么地方有应用

继承:实现代码复用和扩展、多态:同一接口不同实现、封装:隐藏内部细节提供安全访问(如getter、setter方法)

权限修饰符

public:修饰的全部都可以调用 protected:子类可以调用 default:同一个包下的可以调用 private:只有在当前类中才可以调用

异常体系

Java中异常throwable主要分为error和exception,error通常是虚拟机发生无法恢复的错误,比如内存不足堆栈溢出等 exception包括runtimeexception运行时异常 和ioexception受查异常 运行时异常主要是指数组异常和空指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值