一、面向对象程序设计(java)
1、什么是面向对象编程?它与面向过程编程的区别是什么?
答:面向对象编程(OOP)是一种以对象为核心的编程范式,强调数据封装、继承和多态,提高代码的复用性和扩展性。而面向过程编程(POP)以函数和过程为核心,强调操作数据的流程,适用于小型项目。
2、面向对象比面向过程好在哪?
- 更高的代码复用性:面向对象的继承特性允许我们通过子类继承父类的属性和方法,从而避免重复代码。
- 更好的代码组织性:面向对象通过将数据和操作数据的方法封装在类中,使得代码更加结构化,易于管理。
- 更强的灵活性:面向对象编程通过多态和接口,提供了更多的灵活性。通过方法的重载、重写和接口的实现,可以实现相同操作对不同对象的适配。
- 更高的扩展性:面向对象使得代码更容易扩展。
3、Java的特点
- 面向对象(OOP):Java 支持 封装、继承、多态,代码更模块化,便于复用和维护。
- 跨平台性:Java 通过 JVM(Java Virtual Machine) 实现了跨平台性,Java 代码可以在不同操作系统上运行,只要安装了相应的 JVM。
- 自动内存管理:Java 通过 垃圾回收机制 自动回收不再使用的对象,降低了手动管理内存的复杂性。
- 多线程支持:Java 原生支持多线程(
Thread类和Runnable接口),可以实现并发编程,提高程序的执行效率。
4、 java为什么可以跨平台?(重要)
Java 实现跨平台的核心机制是 JVM(Java Virtual Machine,Java 虚拟机)。Java 代码被编译成 字节码(.class 文件),JVM 负责解释并执行字节码,不同平台有对应的 JVM,使 Java 程序能在不同操作系统上运行,而无需修改代码。
5、Java 的多线程是如何实现的?
Java 提供 Thread 类、Runnable 接口进行线程同步和线程安全管理。
Java 还提供 synchronized 关键字进行线程同步和线程安全管理。
6、进程同步需要遵循哪些原则?
进程同步是确保多个进程或线程在访问共享资源时能够协调一致地执行的一种机制。为了实现有效的进程同步,需要遵循一些基本的准则,这些准则旨在保证临界区(critical section)的互斥访问,防止数据竞争和系统的不稳定性。
1、空闲让进 2、忙则等待 3、有限等待 4、让权等待
7、jdbc是什么?
JDBC(Java Database Connectivity)是 Java 提供的数据库连接接口,用于 Java 应用程序与各种数据库(如 MySQL、PostgreSQL、Oracle)之间的交互。它是一组API(应用程序编程接口),使 Java 程序能够执行 SQL 语句,对数据库进行增删改查(CRUD)操作。
8、Java 中如何实现封装?
通过 private 关键字限制类的成员变量访问权限,并提供 public 的 getter 和 setter 方法来访问和修改数据,从而实现封装性。
9、静态变量和实例变量的区别?
静态变量属于类级别,所有对象共享,实例变量属于对象级别,每个实例有独立的副本。
10、Java 是否支持多继承?
Java 不支持类的多继承,但支持接口的多继承。类只能单继承,但可以实现多个接口。
11、父类的 private 方法能被子类继承吗?
不能,private 方法对子类不可见,因此无法继承。
12、重载(Overloading)和重写(Overriding)的区别?
- 重载(Overloading): 方法名相同,参数列表不同,发生在同一类中。
- 重写(Overriding): 方法名、参数列表相同,子类修改父类的方法实现。
13、抽象类和接口的区别?

14、什么是深拷贝和浅拷贝?
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是 对象复制 的两种方式,主要区别在于是否复制对象的引用对象(嵌套对象)。
浅拷贝只复制对象本身,不复制其引用类型的属性,修改原对象的引用类型属性,拷贝对象也会受到影响。
深拷贝不仅复制对象本身,还递归复制对象的引用对象,使得原对象和拷贝对象完全独立,不会影响原对象。
15、java的动态规划?
动态规划(Dynamic Programming,简称 DP)是一种解决最优化问题的算法策略。它通过将大问题分解成小问题,并通过存储已经解决的小问题的结果来避免重复计算,从而提高计算效率。
在 Java 中,动态规划常常用于解决一些最短路径、背包问题、序列匹配等经典问题。
- 分治法:将问题分解成多个独立的子问题,子问题之间互不依赖,求解每个子问题并合并结果。
- 动态规划:将问题分解成子问题,但子问题之间是相互依赖的,通过保存中间计算结果避免重复计算。
二、Python
1、介绍Python的深拷贝
深拷贝(Deep Copy)是指复制一个对象及其所包含的所有对象,即创建一个新的对象,并将原始对象及其所有嵌套的引用对象都进行递归复制。深拷贝之后,原对象和拷贝对象之间是完全独立的,修改一个对象不会影响另一个对象。
在 Python 中,copy 模块提供了 deepcopy() 方法来实现深拷贝。deepcopy() 会递归地拷贝对象及其包含的子对象,确保所有嵌套的对象都被独立复制。
2、Python的数组、字典、元组和列表在处理数据时的区别和效率?
在 Python 中,数组、字典、元组和列表都是常用的数据结构。它们之间的区别在于存储方式、操作特性、效率等方面。
数组是存储相同类型元素的集合,内存占用比列表少,适合存储大量数值数据。
列表是有序的可变集合,支持元素的增删改查。它的访问效率很高,通过索引访问是 O(1),但是在中间插入或删除元素时,时间复杂度是 O(n),因为需要移动元素。
元组与列表类似,也是有序的集合,但它是不可变的。这意味着一旦创建,元素不能被修改,因此在存储不需要更改的数据时,元组更加安全和高效。元组的访问效率与列表相同,都是 O(1),但由于不可变的特性,不能进行插入或删除操作。它适合用于存储常量数据,或者作为字典的键。
字典是一个无序的键值对集合,支持通过键快速访问对应的值。字典的插入、删除和查找操作平均时间复杂度都是 O(1),因为它是通过哈希表实现的。
总结来说,列表适合动态、可变的数据,元组适合不可变的数据,字典适合需要快速查找的场景,而数组则适合存储大量相同类型的数值数据。
3万+

被折叠的 条评论
为什么被折叠?



