当前位置: 首页 > news >正文

华为、阿里巴巴、字节跳动 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 编程面试问题:待更新

相关文章:

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

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …...

hash 模式和 history 模式的实现原理

hash 模式和 history 模式的实现原理: #后面的 hash 值的变化不会导致浏览器向服务器发出请求,浏览器不发出请求,就不会刷新页面。通过监听 hashchange 事件的变化可以知道 hash 值发生了哪些变化,然后根据 hash 值的变化来实现更…...

并发编程Part 2

1. JMM 问题:请你谈谈你对volatile的理解? volitile 是 Java 虚拟机提供的一种轻量级的同步机制 ,三大特性: 保证可见性 不保证原子性 禁止指令重排 线程之间如何通信? 通信是指线程之间以如何来交换信息。一般线程之间的通信…...

springboot异步多线程的实现

1、配置线程池相关参数 package com.xxx.test.config;import lombok.extern.slf4j.Slf4j; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation…...

测试相关基础概念与常见开发模型

目录 1. 什么是需求 1.1 需求的定义 1.2 为什么有需求?为什么需求对软件测试人员如此重要? 1.3 测试人员眼里的需求(重要) 1.4 如何深入了解需求 2. 测试用例 2.1 什么是测试用例 2.2 为什么有测试用例 3. 什么是BUG 3.1 BUG定义 3.2 如何描述一个BUG 3.3 如何定义bug的级别 …...

MySQL安装详细教程!!!

安装之前,先卸载你之前安装过的数据库程序,否则会造成端口号占用的情况。 1.首先下载MySQL:MySQL :: Download MySQL Community Server(下载路径) 2.下载版本不一样,安装方法略有不同;(版本5的安装基本一致&#xff0c…...

前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包

文章目录 1、location.href2、location.href3、a标签4、请求后端的方式5、文件下载的方式6、Blob和Base647、下载附件方法(excel,zip,html,markdown)8、封装下载函数9、导出 zip 压缩包相关方法(流方式) 总结 1、location.href //get请求 window.location.href url;2、locati…...

铠甲网络面试(部分)

如何用Redis实现分布式锁的?如果设置的超时时间到了,但占有锁的任务还未完成,怎么办?答案:定时任务进行检测与续约,具体参考 本博----《专题三分布式系统》之《第三章 集中式缓存Redis》之 《第三节 Redis底…...

elasticsearch 将时间类型为时间戳保存格式的时间字段格式化返回

dsl查询用法如下: GET /your_index/_search {"_source": {"includes": ["timestamp", // Include the timestamp field in the search results// Other fields you want to include],"excludes": []},"query": …...

淘宝商品列表怎么通过接口形式导出?

淘宝是目前国内最大的电商平台之一,拥有海量的商品资源。但是,有时候我们需要对淘宝商品进行批量操作,比如进行价格比较、数据分析等等。这时候,我们就需要将淘宝商品列表导出。那么,淘宝商品列表怎么导出呢?又可以按…...

TWS真无线蓝牙耳机哪家好?六款口碑好的TWS真无线蓝牙耳机分享

为了帮助大家在这个充满选择的世界中找到最理想的蓝牙耳机,我们特别为您精心挑选了几款备受赞誉的产品,它们在音质、舒适度、功能和性价比等方面都有出色的表现。在本文中,我们将深入探讨这些蓝牙耳机的特点和优势,帮助您更好地了…...

解决Win11右键菜单问题

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 程序日常 ✨特色专栏&…...

开源元数据管理平台Datahub最新版本0.10.5——安装部署手册(附离线安装包)

大家好,我是独孤风。 开源元数据管理平台Datahub近期得到了飞速的发展。已经更新到了0.10.5的版本,来咨询我的小伙伴也越来越多,特别是安装过程有很多问题。本文经过和群里大伙伴的共同讨论,总结出安装部署Datahub最新版本的部署手…...

归并排序——“数据结构与算法”

各位CSDN的uu们好呀,今天,小雅兰的内容仍然是数据结构与算法专栏的排序呀,下面,让我们进入归并排序的世界吧!!! 归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种…...

C语言笔试题训练【第一天】

目录 第一题 第二题 第三题 第四题 第五题 大家好,我是纪宁。 从今天开始博主会日更一些经典的C语言笔试题,持续20天左右。题目类型为5道选择题加2道编程题,希望能和大家一起进步。 第一题 1.读程序,下面程序正确的输出是&…...

计算语言模型计算每秒钟生成的token数量it/s

在 main() 函数的stream循环中,我们可以计算每秒钟生成的token数量,然后输出 it/s。在流式生成过程中,我们可以使用Python的time模块来计算速度。在测试时,生成速度会受到多个因素的影响,包括设备性能、模型大小、输入…...

Clickhouse调研

1、独立组件个数(按进程) 默认情况下是1个;如果需要使用副本机制,需要依赖zookeeper;如果需要监控功能,还得依赖第三方监控系统。 2、单机部署 很好的支持单机运行,并且单机情况下查询入库性能不错(通过其提供的示例数据进行体验)。 3、窗口函数 Clickhouse没有显示…...

02.Redis实现添加缓存功能

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redis实现添加缓存功能 学习产出&#xff1a; 流程图 1. 准备pom环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId&g…...

【1.2】Java微服务:SpringCloud概论

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 微服务 ✨特色专栏&#xff1a; 知识分享 &#x…...

右键文件夹 ------- 打开 vscode的方法

1、右键vscode点击属性 2、这是地址栏&#xff0c;一会复制即可 3、新建一个txt文件,将这个复制进去 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode] "Open with Code" "Icon""D:\\Microsoft VS Code\\Code.exe"[HKE…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...