Java 基础面试题

文章目录

重载与重写

重载:是在同一个类中,方法名相同,方法参数类型,个数不同,返回类型不同。

重写:子类重写父类的方法,方法名,参数等等都一致。主要用于面向对象多态的实现条件之一。就是父类的引用指向子类的对象。

抽象类与接口

抽象类:用 abstract 修饰的类为抽象类,里面可以定义抽象方法,普通方法,局部变量,如果子类不是抽象类继承抽象父类需要重写抽象父类的方法。

接口:Interface 关键字,里面只能定义公共抽象的方法,局部变量也一定为公共静态常量,实现该接口的实现类必须重写该接口的全部方法。

一个类可以实现多个接口,但是只能继承一个类。

面向对象

面向对象三个特性

第一封装:就是将方法和变量,封装在类中,对外展现需要暴露的方法,隐藏内部实现的细节。使用时通过创建一个对象来调用类中的方法,创建一个一个类似于模块化的结构,每个类各司其职,便于管理与维护,也起到代码复用的效果。

第二继承:通过继承,子类可以获取父类私有以外的方法和变量。实现了代码的复用。

第三多态:

第一种是编译时多态,主要通过方法的重载实现。

第二种是运行时多态,对象引用的具体类型在运行时才确定,通过子类继承父类并重写父类的方法,然后使用父类的引用指向子类的对象实现。

a = a + b 与 a += b 的区别

a += b 会自动转化类型,比如 bype a = 127 , bype b = 127 , a += b , a 的类型转为 int 型。

a = a + b 时,,比如 bype a = 127 , bype b = 127 , a = a + b,会报错,超出类型的范围。

final、finalize、finally

final,关键字修饰的方法,变量,在初始化后就不能修改。

finalize()方法,是在内存对象被垃圾回收算法清除之前调用的方法,可以重写用来做一些清理工作。

finally是try-catch 异常处理的结构,finally是一定会被执行的,一般用于释放数据等等。

String、StringBuild、StringBuffer

String 是不可变的字符串,每当修改它时,都会创建一个新的字符串。

StringBuilder 和 StringBuffer 是可变的字符串,每当修改它时,都是在原来的字符串上修改。两者的区别在于:StringBuilder 是线程不安全的,但是效率比较快,StringBuffer 是线程安全的,但是效率比较慢。

所以如果需要使用频繁修改的字符串,建议使用 StringBuilder 和 StringBuffer,这样可以避免资源造成的浪费。如果是在并发的情况下,使用 StringBuffer 保证线程安全。

位运算

左移符 x >> 1,等同于 x 乘 2 ,位运算中,低位补 0

右移符 x << 1 ,等同与 x 除 2 ,位运算中,高位补 0,低位补 1

无符号右移 >>>,忽略符号位,空位都以 0 补齐。

反射

程序在运行时的时候,通过反射来获取类信息,用类来调用方法与属性,或者通过反射获取对象,用对象来调用方法与属性。

我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。

相关推荐
牛奔7 小时前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
geovindu8 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
学逆向的8 小时前
汇编——JCC指令
开发语言·汇编·网络安全
mayaairi9 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
前端工作日常9 小时前
我学习到的Java中domain和dto区别
java·后端
kite01219 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
码农学院10 小时前
基于Spring Boot的跨境电商多语言订单管理系统架构设计
java·大数据·spring boot
技术小结-李爽11 小时前
【工具】pom文件的<packaging>
java·maven
l1564694811 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言
charlie11451419111 小时前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++