华为、阿里巴巴、字节跳动 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 random
    
    random_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 random
    
    my_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 + b

def subtract(a, b):
    return a - b

if __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 编程面试问题:待更新

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echart折线图,调节折线点和y轴的间距(亲测可用)

options代码: options {tooltip: {trigger: axis, //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。},xAxis: {type: category,//类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。…

抓紧收藏,Selenium无法定位元素的几种解决方案

01、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法: driver.switch_to.frame(id/name/obj) switch_to.frame()默认可以直接取表单的id或name属性。如果没有可用的id和…

自适应大屏

可视化大屏适配/自适应现状 可视化大屏的适配是一个老生常谈的话题了,现在其实不乏一些大佬开源的自适应插件、工具但是我为什么还要重复造轮子呢?因为目前市面上适配工具每一个都无法做到完美的效果,做出来的东西都差不多,最终实…

ETHERNET/IP 转ETHERCAT连接ethercat总线伺服如何控制

捷米JM-EIP-ECAT网关连接到ETHERNET/IP总线中做为从站使用,连接到ETHERCAT总线中做为从站使用,可以同时满足多种工业生产的需求。支持广泛的设备类型,可以和多种不同的设备进行通讯。 技术参数 ETHERNET/IP 技术参数 网关做为 ETHERNET/IP …

CentOS下 Docker、Docker Compose 的安装教程

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker Compose是用于定义…

一些类型推导相关的功能(C++)

目录 auto关键的新用法(C11起) 背景介绍 用法示例 注意事项 typeid运算符 type_info类 typeid的用法 decltype运算符 用法阐述 用法示例 用法建议 function类模板 用法阐述 用法示例 function较函数指针的优势 std::function和decltype的…

DID以及社交网络中的ZKP

1. 引言 本文关键术语为: Decentralized Identity (DID,去中心化身份) or self-sovereign identity (SSI,自治身份) :是一个基于开放标准的框架,使用自主、独立的标识符和可验证证书,实现可信的数据交换。…

Vue2 第六节 key的作用与原理

(1)虚拟DOM (2)v-for中的key的作用 一.虚拟DOM 1.虚拟DOM就是内存中的数据 2.原生的JS没有虚拟DOM: 如果新的数据和原来的数据有重复数据,不会在原来的基础上新加数据,而是重新生成一份 3. Vue会有虚拟…

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分,嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

3ds MAX绘制茶壶

综合一下之前的内容画个茶壶 长方形,然后转化为可编辑多边形,添加节点并设置圆角,如下图 车削生成一个圆环,其实这一步也可以用一个圆柱体和两个圆角圆柱体解决 效果如下: 茶壶的底座绘制好了 接下来是茶壶的上半边 …

python测试开发面试常考题:装饰器

目录 简介 应用 第一类对象 装饰器 描述器descriptor 资料获取方法 简介 Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用…

Hudi Flink SQL源码调试学习(1)

前言 本着学习hudi-flink源码的目的,利用之前总结的文章Hudi Flink SQL代码示例及本地调试中的代码进行调试,记录调试学习过程中主要的步骤及对应源码片段。 版本 Flink 1.15.4Hudi 0.13.0 目标 在文章Hudi Flink SQL代码示例及本地调试中提到:我们…

【LLM系列之指令微调】长话短说大模型指令微调的“Prompt”

1 指令微调数据集形式“花样”太多 大家有没有分析过 prompt对模型训练或者推理的影响?之前推理的时候,发现不加训练的时候prompt,直接输入模型性能会变差的,这个倒是可以理解。假如不加prompt直接训练,是不是测试的时…

基于高通QCC5171的对讲机音频数据传输系统设计

一 研发资料准备 二 设计方法 蓝牙连接与配对:使用QCC5171的蓝牙功能,实现设备之间的蓝牙连接和配对。确保设备能够相互识别并建立起稳定的蓝牙连接。 音频采集与处理:将麦克风采集到的音频数据通过QCC5171的ADC(模数转换器&…

linux系统编程重点复习--线程同步

目录 复习目标: 1 互斥锁 1.1互斥锁的使用步骤 1.2 练习 1.3 死锁 2 读写锁 3 条件变量 4 信号量 复习目标: 熟练掌握互斥量的使用说出什么叫死锁以及解决方案熟练掌握读写锁的使用熟练掌握条件变量的使用理解条件变量实现的生产消费者模型理解…

python简单的病毒编程代码,如何用python写一个病毒

大家好,本文将围绕python简单的病毒编程代码展开说明,如何用python做恶搞病毒是一个很多人都想弄明白的事情,想搞清楚如何用python写一个病毒需要先了解以下几个事情。 1、Python能不能写病毒 国家计算机病毒应急处理中心通过对互联网的监测…

算法leetcode|64. 最小路径和(rust重拳出击)

文章目录 64. 最小路径和:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 64. 最小路径和: 给定一个包含非负整数的 m x n 网…

windows 安装 mongodb 数据库

软件下载 访问官方的下载地址: https://www.mongodb.com/try/download/community ,然后选择对应的版本进行下载 下载好了之后双击进行安装 软件安装 1、点击 next 点击下一步 2、勾选接受协议,点击 next 3、第三页有两个选项&#x…

redisson分布式锁学习

什么是分布式锁? 当有多个线程并发访问同一共享数据时,如果多个线程同时都去修改这个共享数据,且修改操作不是原子操作,就很有可能出现线程安全问题,而产生线程安全问题的根本原因是缺乏对共享数据访问的同步和互斥。 为了解决这个问题,通常我们的做法…