华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(六)

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊


文章目录

  • 系列文章目录
  • Python 函数库面试问题
    • 72. Python 中的包和模块和区别?
    • 73. Python 中常用的标准模块有哪些?
    • 74. 什么是 lambda 函数?
    • 75. 如何生成随机数?
    • 76. 如何检查给定字符串中的所有字符是否都是字母数字?
    • 77. 解释map函数的工作原理。
    • 78. 解释reduce函数的工作原理。
    • 79. 谈下python的GIL。
    • 80. 什么是PYTHONPATH?
    • 81. 什么是 pip?
    • 82. 在 Python 中是否有任何用于识别错误和执行静态分析的工具?
    • 83. Python的__main__功能是什么?如何调用它?
  • Python 编程面试问题:[待更新](https://blog.csdn.net/a2360051431)

本文是Python面试专栏的第六篇。在本专栏中,我将总结华为、阿里巴巴、字节跳动等互联网公司 Python 面试中最常见的 100+ 问题。每道题都提供参考答案,希望能够帮助你在求职面试中脱颖而出,找到一份高薪工作。这些面试题涉及 Python 基础知识、Python 编程、数据分析以及 Python 函数库等多个方面。

Python 函数库面试问题

72. Python 中的包和模块和区别?

模块(Module)
在 Python 中,一个扩展名为 “py” 的文件就称之为一个模块,模块的文件名就是模块的名称。它可以包含函数、类、变量和语句等。通常情况下,把能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。

包(Package)
包是一种包含模块的文件夹,它允许将相关的模块组织在一起。包含一个特殊的文件 __init__.py(可以是空文件)来表示这个文件夹是一个包。

创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式而已。

73. Python 中常用的标准模块有哪些?

以下是一些常用的 Python 标准模块:

  1. os:提供了访问操作系统功能的接口,例如文件和目录操作、进程管理等。
  2. sys:提供了对 Python 运行时环境的访问和操作,如获取命令行参数、退出程序等。
  3. math:提供了数学运算相关的函数,如数值计算、数学常量等。
  4. random:用于生成伪随机数,实现随机选择和乱序等功能。
  5. datetime:提供了处理日期和时间的类和函数,用于日期时间的格式化、计算等。
  6. time:提供了与时间相关的功能,如休眠、计时等。
  7. json:用于处理 JSON 数据的编码和解码。
  8. re:提供了正则表达式的支持,用于字符串匹配和替换。
  9. collections:提供了一些额外的数据类型,如 namedtupleCounter 等。
  10. urllib:用于处理 URL 和 HTTP 请求,实现网络访问功能。
  11. argparse:用于解析命令行参数,方便处理命令行输入。
  12. pickle:用于对象序列化和反序列化,将 Python 对象转换为字节流进行存储和传输。
  13. csv:用于读写 CSV 文件,处理逗号分隔的数据。
  14. os.path:用于操作文件路径和文件名,提供了各种路径处理函数。
  15. xml.etree.ElementTree:用于处理 XML 数据,实现 XML 的解析和生成。

74. 什么是 lambda 函数?

Lambda 函数是一种匿名函数,也称为 “轻量级函数” 或 “一次性函数”。在编程中,lambda 函数是一种用于创建简单函数的快捷方式,它不需要使用 def 关键字来定义函数名称。通常,lambda函数在需要一个简单的函数作为参数的情况下非常有用。

lambda 函数的语法如下:

lambda arguments: expression

其中,arguments 是函数的参数列表,可以有零个或多个参数,用逗号分隔。而 expression 是函数的返回值表达式(表达式只能有一个,即只能返回一个值)。

下面是一个使用 lambda 函数的例子,该函数接受两个参数并返回它们的和:

add = lambda x, y: x + y
result = add(3, 5)  # 调用lambda函数并传入参数3和5
print(result)  # 输出结果为8

lambda 函数常用于函数式编程范式中,特别是在使用高阶函数(函数接受函数作为参数或返回函数作为结果)时非常方便。例如,在使用 map()filter()reduce() 等函数时,lambda 函数经常用于定义简单的转换或过滤规则,而不必单独定义具名函数。

75. 如何生成随机数?

在 Python 中,可以使用 random 模块来生成随机数。random 模块提供了多个函数来生成不同类型的随机数。

  1. 生成随机浮点数:
    import randomrandom_float = random.random()  # 生成一个0到1之间的随机浮点数
    print(random_float)
    # 生成一个在指定范围内的随机浮点数,范围是[start, end)
    start = 1.0
    end = 10.0
    random_float_range = random.uniform(start, end)
    print(random_float_range)
    
  2. 生成随机整数:
    import random# 生成一个在指定范围内的随机整数,范围是[start, end]
    start = 1
    end = 100
    random_integer_range = random.randint(start, end)
    print(random_integer_range)
    
    1. 从指定序列中随机选择一个或多个(可能含有重复)元素:
    import randommy_list = [1, 2, 3, 4, 5]
    random_element = random.choice(my_list)  # 从列表中随机选择一个元素
    print(random_element)
    random_elements = random.choices(my_list, k=3)  # 从列表中随机选择3个元素
    print(random_elements)
    

76. 如何检查给定字符串中的所有字符是否都是字母数字?

这可以通过使用 str.isalnum() 方法轻松完成。str.isalnum() 方法返回一个布尔值,指示字符串中的所有字符是否都是字母数字。如果字符串中至少有一个非字母数字字符,它将返回 False,否则返回 True

以下是使用 str.isalnum() 方法检查字符串的示例代码:

def is_all_alphanumeric(input_str):return input_str.isalnum()# 测试示例
test_string_1 = "HelloWorld123"
test_string_2 = "Hello, World!"
test_string_3 = "12345"
test_string_4 = ""print(is_all_alphanumeric(test_string_1))  # True,所有字符都是字母数字
print(is_all_alphanumeric(test_string_2))  # False,包含非字母数字字符 ","
print(is_all_alphanumeric(test_string_3))  # True,所有字符都是数字
print(is_all_alphanumeric(test_string_4))  # False,空字符串不包含任何字符

77. 解释map函数的工作原理。

map() 函数是 Python 的内置函数之一,它用于对可迭代对象(例如列表、元组、字符串等)中的每个元素应用相同的函数,并返回一个新的可迭代对象,其中包含应用函数后的结果。

map() 函数的语法如下:

map(function, iterable, ...)
  • function:是一个函数,用于对可迭代对象的每个元素进行操作。
  • iterable:是一个或多个可迭代对象,如列表、元组、字符串等。

map() 函数将会遍历 iterable 中的每个元素,并将它们作为参数传递给 function 进行处理。function 会对每个元素进行操作,并返回一个结果。最终,map() 函数将所有 function 返回的结果组合成一个新的可迭代对象,并返回这个新对象。

78. 解释reduce函数的工作原理。

reduce() 函数接收的参数和 map() 类似,一个函数和一个可迭代对象,但行为和 map() 不同, 且 reduce() 传入的函数f必须接收两个参数

reduce() 函数用于对可迭代对象(如列表、元组等)中的元素进行累积操作。reduce() 函数的工作原理是,它从可迭代对象中依次取出两个元素,并将它们传递给指定的二元函数进行操作,然后将结果与下一个元素再次传递给二元函数,依此类推,直到遍历完整个可迭代对象。

reduce() 函数的语法如下:

functools.reduce(function, iterable[, initializer])
  • function:二元函数,用于对两个参数进行操作。
  • iterable:可迭代对象,要进行累积操作的元素序列。
  • initializer(可选):初始值。如果指定了初始值,则将其作为第一个元素传递给 function,否则使用 iterable 的第一个元素作为初始值。

示例如下:

from functools import reduce# 定义一个二元函数,用于将两个数相乘
def multiply(x, y):return x * y# 定义一个列表
numbers = [1, 2, 3, 4, 5]# 使用reduce()函数对列表中的元素进行累积操作
result = reduce(multiply, numbers)print(result)		# 输出 120

注意:在 Python 2 中,reduce() 函数是内置函数,无需导入;在 Python 3 中已经被移到 functools 模块,因此在使用前需要导入 functools 模块。

79. 谈下python的GIL。

在 Python 的官方实现 CPython 中,存在 GIL。GIL 表示全局解释器锁定(Global Interpreter Lock)。这是一个互斥锁,它限制在解释器级别同一时刻只能有一个线程在解释器中执行字节码。这意味着在 Python 中,多线程不能真正利用多核处理器的并行计算能力。即使有多个线程,但它们在解释器内部是依次执行的,而不是并行执行的。下图表示 GIL 的工作原理。

在这里插入图片描述
根据上图,有三个线程。第一个线程首先获取 GIL 并开始执行 I/O。I/O 操作完成后,线程 1 释放获取的 GIL,然后由第二个线程占用。该过程重复,GIL 由不同的线程交替使用,直到线程完成其执行。没有 GIL 锁的线程进入等待状态,只有在获取锁时才恢复执行。

虽然 GIL 限制了多线程并行执行,但 Python 仍然可以通过其他方式进行并发处理,比如使用多进程。Python 中有 multiprocessing 模块可以用来创建多个进程,每个进程都有独立的解释器和 GIL,因此在多进程模型中可以充分利用多核处理器的能力。

此外,对于 CPU 密集型任务,还可以使用其他 Python 解释器或编译器,如 Jython、IronPython、PyPy 等,这些解释器或编译器没有 GIL 的限制,可以实现更好的并行性能。

80. 什么是PYTHONPATH?

PYTHONPATH 是一个环境变量,用于在导入模块或包期间合并其他目录。PYTHONPATH 用于检查导入的包或模块在现有目录中是否可用。不仅如此,解释器使用此环境变量来识别需要加载哪个模块。

81. 什么是 pip?

pip 是 Python Package Index(Python 软件包索引)的包管理工具。它是一个命令行工具,通过 pip,可以方便地下载、安装、升级和卸载 Python 软件包。

  • 安装包:使用 pip install package_name 命令可以从 Python 软件包索引中下载并安装指定的 Python 包。例
  • 升级包:使用 pip install --upgrade package_name 命令可以将已安装的 Python 包升级到最新版本。
  • 卸载包:使用 pip uninstall package_name 命令可以将已安装的 Python 包卸载。
  • 显示已安装的包:使用 pip list 命令可以显示当前 Python 环境中已安装的所有包及其版本信息。

82. 在 Python 中是否有任何用于识别错误和执行静态分析的工具?

Python 中有多个工具可用于识别错误和执行静态分析。这些工具可以帮助开发者在代码编写过程中发现潜在的问题,并提供代码质量的改进建议,像 PyChecker 和 Pylint。

在使用 PyChecker 之前,需要先安装它。安装完成后,可以在终端或命令行中运行 PyChecker 来分析 Python 代码。例如,要分析名为 example.py 的 Python 文件,可以使用以下命令:

pychecker example.py

PyChecker 会分析代码并输出潜在问题和错误的报告,Pylint 使用方法也是如此。

83. Python的__main__功能是什么?如何调用它?

在 Python 中,__main__ 是一个特殊的标识符,用于指示当前模块是主程序入口。当 Python 解释器执行一个 Python 脚本时,它会将该脚本视为主程序,并为其设置 __name__ 变量为 __main__。这样,可以在脚本中根据 __name__ 的值来执行一些特定的操作,使得脚本既可以作为主程序执行,也可以作为模块被导入到其他脚本中使用。

通过使用 if __name__ == '__main__': 语句,可以在脚本中定义一些只有在该脚本作为主程序执行时才会运行的代码块。示例代码如下:

# 名为 example.py 的脚本
def add(a, b):return a + bdef subtract(a, b):return a - bif __name__ == '__main__':result_add = add(3, 5)print("Addition result:", result_add)result_subtract = subtract(10, 4)print("Subtraction result:", result_subtract)

当在命令行或终端中运行 example.py 时,Python 解释器会将 __name__ 设置为 __main__,并执行 if __name__ == '__main__': 语句块中的代码。输出将会是:

Addition result: 8
Subtraction result: 6

另一方面,如果从其他脚本中导入 example.py,则__name__将会等于 exampleif __name__ == '__main__': 语句块中的代码将不会执行。

Python 编程面试问题:待更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/21754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2023】Git版本控制-远程仓库详解

目录 创建远程仓库向远程仓库推送数据文件从第二台主机本地拉取远程仓库数据第一台主机同步远程仓库数据tag标签git忽略文件 Git远程仓库是Git版本控制系统的一个概念,它是一个存储Git代码的远程服务器。 你可以将本地Git仓库上传到远程仓库,以便与其他…

【机器学习】Classification using Logistic Regression

Classification using Logistic Regression 1. 分类问题2. 线性回归方法3. 逻辑函数(sigmod)4.逻辑回归5. 决策边界5.1 数据集5.2 数据绘图5.3 逻辑回归与决策边界的刷新5.4 绘制决策边界 附录 导入所需的库 import numpy as np %matplotlib widget imp…

“RISC-V成长日记” blog发布,第一个运行在RISC-V服务器上的blog?

尽管推特、公众号、微博、抖音等社交平台风靡一时,但blog(博客)在全世界依然经久不衰,尤其是在技术领域。对于博主而言,博客是他们独立创作的天地,可以随时更新内容和故事,确保素材的时效性。此…

IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介

系列文章目录 IDEA上面书写wordcount的Scala文件具体操作 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍 目录 系列文章目录 前言 一 准备工作 1.1 安装Maven 1.1.1 Maven安装配置步骤 1.1.2 解压相关的软件包 1.1.3 Maven 配置环境变量 1.1.4 配…

[Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

目录 0、CI/CD系统最终架构图规划IP地址 1、git配置Git下载pycharm配置gitidea配置git 2、GitLab安装与配置主机要求拉取镜像定义 compose.yml启动gitlab浏览器访问并修改密码查看登录密码修改密码 3、SonarQube 安装与配置拉取镜像修改虚拟内存的大小启动SonarQube登录 SonarQ…

mac pd安装ubuntu并配置远程连接

背景 一个安静的下午,我又想去折腾点什么了。准备学习一下k8s的,但是没有服务器。把我给折腾的,在抱怨了:为什么M系列芯片的资源怎么这么少。 好在伙伴说,你可以尝试一下ubantu。于是,我只好在我的mac上安…

软件外包开发的GO语言特点

Go语言(也称为Golang)是由Google开发的一种编程语言。它具有许多特点,使其成为许多项目范围的优秀选择。Go语言适用于需要高性能、并发和简洁易读的项目,特别是面向网络和分布式应用的项目。今天和大家分享项目的特点及适用的项目…

【深度学习】SMILEtrack: SiMIlarity LEarning for Multiple Object Tracking,论文

论文:https://arxiv.org/abs/2211.08824 代码:https://github.com/WWangYuHsiang/SMILEtrack 文章目录 AbstractIntroductionRelated WorkTracking-by-DetectionDetection methodData association method Tracking-by-Attention Methodology架构概述外观…

TensorFlow项目练手(三)——基于GRU股票走势预测任务

项目介绍 项目基于GRU算法通过20天的股票序列来预测第21天的数据,有些项目也可以用LSTM算法,两者主要差别如下: LSTM算法:目前使用最多的时间序列算法,是一种特殊的RNN(循环神经网络)&#xf…

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…

04 Ubuntu中的中文输入法的安装

在Ubuntu22.04这种版本相对较高的系统中安装中文输入法,一般推荐使用fctix5,相比于其他的输入法,这款输入法的推荐词要好得多,而且不会像ibus一样莫名其妙地失灵。 首先感谢文章《滑动验证页面》,我是根据这篇文章的教…

通用指令(汇编)

一、数据处理指令1)数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向减法指令乘法指令数据运算指令的扩展 2)逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3&#xff…

前端实现打印1 - 使用 iframe 实现 并 分页打印

目录 打印代码对话框预览打印预览 打印代码 <!-- 打印 --> <template><el-dialogtitle"打印":visible.sync"dialogVisible"width"50%"top"7vh"append-to-bodyclose"handleClose"><div ref"print…

STM32 DHT11

DHT11 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。 使用单总线通信 该传感器包括一个电容式感湿元件和一个NTC测温元件&#xff0c;并于一个高性能8位单片机相连&#xff08;模数转换&#xff09;。 DHT11引脚说明 开漏模式下没有输出高电平的能…

Embedding入门介绍以及为什么Embedding在大语言模型中很重要

Embeddings技术简介及其历史概要 在机器学习和自然语言处理中&#xff0c;embedding是指将高维度的数据&#xff08;例如文字、图片、音频&#xff09;映射到低维度空间的过程。embedding向量通常是一个由实数构成的向量&#xff0c;它将输入的数据表示成一个连续的数值空间中…

Java版本spring cloud + spring boot企业电子招投标系统源代码 tbms

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…

Kubernetes概述

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

企业新片场排名如何优化

企业新片场排名如何优化 要如何去做关键SEO&#xff1f;第一个我们要做的就是做好 SEO 关键词的选词&#xff0c;一般就是会有第一个常用的选词方法&#xff0c;第一是以常用的提问词去做&#xff0c;不实像是情人节买什么礼物&#xff0c;母亲节买什么礼物&#xff0c; 618 有…

推荐前端开发者提升效率的工具

是否掌握新的技术很大程度决定着你是否被淘汰。 虽然应用程序试图将网站替代&#xff0c;但前端 Web 开发业务仍在快速变化和增长&#xff0c;前端开发人员的功能并没有消失。以下介绍一款前端开发者提升效率的工具。 目录 一、低代码工具前景 二、如何理解低代码工具 三、前端…

【怎么提高性能和解决高并发】

怎么解决高并发 解决高并发的整体流程大概是&#xff1a; 先进行性能评估、再进行性能测试、然后找到程序可以承受的临界点、最后针对出问题的地方&#xff0c;进行优化。当然硬件设置对高并发的影响也很重要&#xff0c;如果达到硬件天花板&#xff0c;那么再怎么优化程序都…