Python面试(Python开发工程师+数据分析)常问30题(必考)

本文总结了Python面试中常见的30个问题,涵盖深拷贝和浅拷贝的区别、多线程多进程的原理、Python列表与元组的区别、编码规范PE8、运算符类型、装饰器、内存管理等核心知识点。通过这些题目,可以帮助开发者更好地理解和掌握Python的基础与高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍:以下是我在准备Python开发工程师面试时准备的一些常问的题目!其中几个题目是我在面试时经常被问到的,比如深浅拷贝,多线程多进程;也有一些题目是我之前从来没听过,在面试的时候第一次听,然后记下来,网上搜索答案记录的!很多问题其实也是很好的引导,大家在学习Python的时候可以由问题带着思考,能学到不少。(ps.红色字体是我一个学姐给我做的批注)

欢迎大家打印复习,点赞收藏哦!

1 深拷贝和浅拷贝的区别是什么?

浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。

1、赋值:简单地拷贝对象的引用,两个对象的id相同
2、浅拷贝:创建一个新的组合对象,这个新对象与原对象共享内存中的子对象。
3、深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性

Python中浅拷贝和深拷贝的区别?

copy.copy()浅拷贝:拷贝了对象,但拷贝对象的值仍然是指向原对象的值(相当于引用),修改拷贝对象的元素,则被拷贝对象的值也会被修改。

copy.deepcopy()深拷贝: 不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立;但这需要牺牲一定的时间和空间。

 import copy
>>> a = [[1, 2],[5, 6], [8, 9]]
>>> b = copy.copy(a)              # 浅拷贝得到b
>>> c = copy.deepcopy(a)          # 深拷贝得到c
>>> print(id(a), id(b))           # a 和 b 不同
139832578518984 139832578335520
>>> for x, y in zip(a, b):        # a 和 b 的子对象相同
...     print(id(x), id(y))
... 
139832578622816 139832578622816
139832578622672 139832578622672
139832578623104 139832578623104
>>> print(id(a), id(c))           # a 和 c 不同
139832578518984 139832578622456
>>> for x, y in zip(a, c):        # a 和 c 的子对象也不同
...     print(id(x), id(y))
... 
139832578622816 139832578621520
139832578622672 139832578518912


139832578623104 139832578623392

深拷贝和浅拷贝的主要区别在:子对象的Id也不同,在实际中有什么应用吗?

如果把某个列表或者字典变量通过浅拷贝的方式赋值给另一个变量,如果其中一个发生变化则另一个也会变化,而深拷贝则不会。如果要求两个变量只是初始值一样,但需要二者执行不同的指令,则需要深拷贝。

2简述多线程、多进程?

对于python来讲,线程共享的是进程的资源,它本身无法调度多核(多CPU ),多线程运算适用于高输入输出的非CPU密集型运算,比如调用外部接口、加载数据等操作;多进程可以调度多核(多CPU)进行运算,单个进程中可以有多个线程,进程间相互独立,适用于CPU计算密集型运算,比如矩阵的加减乘除运算。

进程和线程的概念

  • 当一个程序进入内存运行时,即变成一个进程(Process)。进程是系统进行资源分配和调度的一个独立单位。—— 进程三特征:
  • 独立性:进程是系统中独立存在的实体,拥有自己独立的资源和地址空间;
  • 动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中执行的指令集合,进程具有自己的生命周期和状态;
  • 并发性:多个进程可以在单个处理器上并发执行,互不影响。(与并行不是一个概念)

线程(Thread)是进程的执行单元,独立、并发的执行流,被称为轻量级进程。

  • 线程可以拥有自己的堆栈、自己的程序计数器、自己的局部变量,但不拥有系统资源
  • 一个进程中可以有多个线程,它们共享该进程的全部资源
  • 多个线程并发地执行


https://img-blog.csdn.net/20160315232556418

进程:

  1. 操作系统进行资源分配和调度的基本单位,多个进程之间相互独立。
  2. 稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制

线程:

  1. CPU 进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源
  2. 如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值