【面试宝典】深入Python高级:直戳痛点的题目演示(下)

简介: 【面试宝典】深入Python高级:直戳痛点的题目演示(下)

🍔 Python下多线程的限制以及多进程中传递参数的⽅式

  • python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任⼀时间只能有⼀个线程 使⽤解释器,跟单cpu跑多个程序⼀个意思,⼤家都是轮着⽤的,这叫“并发”,不是“并⾏”。
  • 多进程间共享数据,可以使⽤ multiprocessing.Value 和 multiprocessing.Array

🍔 Python是如何进⾏内存管理的?

  • Python引⽤了⼀个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),⽤于管理对⼩块内存的申请和释放。

内存池(memory pool)的概念:

  • 当创建⼤量消耗⼩内存的对象时,频繁调⽤new/malloc会导致⼤量的内存碎⽚,致使效率降低。内存池的概念就是预先在内存中申请⼀定数量的,⼤⼩相等 的内存块留作备⽤,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎⽚,提升效率。内存池的实现⽅式有很多,性能和适⽤范围也不⼀样。

python中的内存管理机制——Pymalloc:

  • python中的内存管理机制都有两套实现,⼀套是针对⼩对象,就是⼤⼩⼩于256bits时,pymalloc会在内 存池中申请内存空间;当⼤于256bits,则会直接执⾏new/malloc的⾏为来申请内存空间。
  • 关于释放内存⽅⾯,当⼀个对象的引⽤计数变为0时,python就会调⽤它的析构函数。在析构时,也采⽤了内存池机制,从内存池来的内存会被归还到内存池中,以避免频繁地释放动作。

🍔 Python⾥⾯如何拷⻉⼀个对象?

  • 标准库中的copy模块提供了两个⽅法来实现拷⻉.⼀个⽅法是copy,它返回和参数包含内容⼀样的对象, 使⽤deepcopy⽅法,对象中的属性也被复制

🍔 Python⾥⾯search()和match()的区别?

  • match()函数只检测re是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说 match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。

🍔 lambda表达式格式以及应⽤场景?

  • lambda函数就是可以接受任意多个参数(包括可选参数)并且返回单个表达式值得函数。
  • 语法:lambda [arg1 [,arg2,.....argn]]:expression
1. def calc(x,y):
2. return x*y
3. # 将上述⼀般函数改写为匿名函数:
4. lambda x,y:x*y

应⽤:

  • lambda函数⽐较轻便,即⽤即仍,适合完成只在⼀处使⽤的简单功能。
  • 匿名函数,⼀般⽤来给filter,map这样的函数式编程服务
  • 作为回调函数,传递给某些应⽤,⽐如消息处理。

🍔 *args和**kwarg作⽤是什么?

  • *args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。
  • **kwargs代表的关键字参数,允许你使⽤没有事先定义的参数名。
  • 位置参数⼀定要放在关键字参数的前⾯。
  • 作⽤:使⽤*args和**kwargs可以⾮常⽅便的定义函数,同时可以加强扩展性,以便⽇后的代码维护。

🍔 is和==的区别是什么?

  • ==是python标准操作符中的⽐较操作符,⽤来⽐较判断两个对象的value(值)是否相等;
  • is也被叫做同⼀性运算符,这个运算符⽐较判断的是对象间的唯⼀身份标识,也就是id是否相同。

🍔 简述Python的深浅拷⻉以及应⽤场景?

  • 导⼊模块:import copy
  • 浅拷⻉:copy.copy
  • 深拷⻉:copy.deepcopy
  • 浅拷⻉指仅仅拷⻉数据集合的第⼀层数据,深拷⻉指拷⻉数据集合的所有层。<br>   所以对于只有⼀
  • 层的数据集合来说深浅拷⻉的意义是⼀样的,⽐如字符串,数字,还有仅仅⼀层的字典、列表、元祖等.

应用:

  • 浅拷⻉在拷⻉⼤量数据且不需要改变内部元素的值的时候,能⼤量的减少内存的使⽤;
  • 深拷⻉在拷⻉⼤量数据的时候,需要在前后内部元素的内容进⾏改变的时候,可以修改拷⻉出来的模板。

🍔 Python垃圾回收机制?

  • 回收计数引⽤为0的对象,释放其占⽤空间
  • 循环垃圾回收器。释放循环引⽤对象

🍔 解释 Python 中的三元表达式

与 C++不同, 在 Python 中我们不需要使⽤符号,⽽是使⽤如下语法:

  • [on true] if [expression]else [on false]
  • 如果 [expression] 为真, 则 [on true] 部分被执⾏。如果表示为假则 [on false] 部分被执⾏

🍔 Python的可变类型和不可变类型?

不可变类型:

  • 整数(int)
  • 浮点数(float)
  • 元组(tuple)
  • 字符串(str)
  • 布尔值(bool)

可变类型:

  • 列表(list)
  • 字典(dict)
  • 集合(set)

💘若能为您的学习之旅添一丝光亮,不胜荣幸💘

🐼期待您的宝贵意见,让我们共同进步共同成长🐼

相关文章
|
25天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
缓存 关系型数据库 MySQL
面试题目总结
面试题目总结
70 6
|
1月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
99 3
|
4月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
4月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
4月前
|
存储 算法
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
8天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
10天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
33 4