【java面试每日五题之基础篇一】(仅个人理解)

1. 怎么理解面向对象编程(Object Oriented Programming,OOP)

面向对象编程是一种编程范式,核心思想是将真实世界中的事物都抽象为对象,通过与代码中的对象进行交互从而实现各种需求,对于OOP中关键概念的理解如下:
:是一类事物的抽象描述,定义了这类对象共同具有的属性和方法。可以理解为模板;
对象 :对象是类的实例,每个对象具有独特的属性和方法,不同的对象可以通过方法进行交互;
封装 :将对象的属性和方法隐藏起来,通过公共接口进行访问,提高代码的可维护性和重用性;
继承 :是一种机制,通过已有类创建新类,提高代码的重用性;
多态 :一个接口或方法可以被不同的类通过不同的方式实现,提高系统的灵活性和可拓展性;
抽象:将复杂的现实世界问题简化为抽象的模型,只关注属性和方法。

2. 重载与重写的区别

重载 :定义在同一个类中,多个方法具有同一个方法名,但是参数列表不同,目的是让不同参数列表实现同一个方法,如不同数据类型的基本数学运算;
重写:定义在子类中,子类对父类方法的不同实现。

3. 接口与抽象类的区别

接口 :是一个完全抽象的类,使用interface关键字定义,里面只包含了方法和常量,没有具体实现的代码。一个类可以实现多个接口(多继承),通过implements关键字实现接口。
抽象类 :是一个不能被实例化的类,通过abstract关键字定义,一个类只能继承一个抽象类(单继承),通过关键字extend继承。

4. 深拷贝与浅拷贝的理解

是复制对象的不同实现方法
浅拷贝 :通过clone()方法实现,复制原来对象的元素,修改新对象的值,原对象的值也会修改;
深拷贝:创建一个新对象,并递归复制所有引用对象,新对象与原对象完全独立。

5. sleep和wait区别*

sleep:继承Thread类,用于暂停线程一段时间,不会释放锁;

wait:继承object类,用于释放进程,释放所有锁,需要通过notify或notifyALL唤醒。

相关推荐
lcreek2 小时前
Java 反序列化漏洞深度解析(一):从URLDNS到真正的DNS探测
java·反序列化漏洞
Raink老师2 小时前
【AI面试临阵磨枪-70】Agent 系统如何做分布式调度、跨服务协作、故障恢复?
人工智能·面试·职场和发展
杰克尼2 小时前
天机学堂复习总结(day03-day04)
java·开发语言·redis·elasticsearch·spring cloud
Raink老师3 小时前
【AI面试临阵磨枪-71】如何用 AI 优化推荐系统、内容审核、广告创意、搜索体验?
人工智能·面试·职场和发展
x***r1513 小时前
jdk-11.0.16.1_windows使用步骤详解(附JDK 11环境变量配置与验证教程)
java·开发语言·windows
EllinY3 小时前
CF2217E Definitely Larger 题解
c++·笔记·算法·构造
Raink老师3 小时前
【AI面试临阵磨枪-72】电商全场景 AI Agent 设计(商品咨询 / 订单 / 物流 / 售后 / 退款)
人工智能·面试·职场和发展
nnsix3 小时前
JIT(即时编译)、 AOT(预先编译)、虚拟机CLR 笔记
笔记
弹简特3 小时前
【Java项目-轻聊】01-项目演示+项目介绍+准备工作+项目源码
java
luck_bor4 小时前
File类&递归作业
java·开发语言