华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)
系列文章目录
个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊
文章目录
- 系列文章目录
- Python 面试的基础问题
- 1. 什么是 Python?使用 Python 的好处是什么
- 2. 什么是强动态类型语言?
- 什么是动态类型/静态类型?
- 性能
- 灵活性和出错
- 什么是强类型/弱类型?
- 记住
- 结论
- 3.什么是解释型语言?
- 4. PEP 8 是什么?为什么它很重要?
- 5. Python 中的作用域是什么?
- 6. 什么是列表和元组?两者的主要区别是什么?
- 7. Python 中常见的内置数据类型有哪些?
- 8. 什么是 Python 中的 pass?
- 9. 什么是 Python 中的模块和包?
- 10. Python 中的全局属性、受保护属性和私有属性是什么?
- 11. self 在 Python 中有什么用?
- 12. 什么是__init__?
- 13. 什么是 Python 中的 break、continue 和 pass?
- 14. 什么是 Python 中的单元测试?
- 15. 什么是 Python 中的文档字符串?
- 16. 什么是 Python 中的切片?
- 17. 解释如何在 Unix 上使 Python 脚本可执行?
- 18. Python 数组和列表有什么区别?
- Python 面试的进阶问题:[华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(二)](https://blog.csdn.net/a2360051431/article/details/131484549)
本文是Python面试专栏的第一篇。在本专栏中,我将总结华为、阿里巴巴、字节跳动等互联网公司 Python 面试中最常见的 100+ 问题。每道题都提供参考答案,希望能够帮助你在求职面试中脱颖而出,找到一份高薪工作。这些面试题涉及 Python 基础知识、Python 编程、数据分析以及 Python 函数库等多个方面。
Python 面试的基础问题
1. 什么是 Python?使用 Python 的好处是什么
Python 是一种高级的、解释型的、通用的编程语言。作为一种通用语言,它可以使用合适的工具/库来构建几乎任何类型的应用程序。此外,Python 还支持对象、模块、线程、异常处理和自动内存管理,这有助于对现实世界的问题进行建模,并构建应用程序来解决这些问题。
使用 Python 的好处:
- Python 是一种通用编程语言,它具有简单、易于学习的语法,强调可读性,从而降低了程序维护的成本。此外,该语言能够编写脚本,是完全开源的,并支持鼓励模块化和代码重用的第三方包。
- 它的高级数据结构与动态类型和动态绑定相结合,吸引了大量开发人员进行快速应用程序开发和部署。
2. 什么是强动态类型语言?
什么是动态类型/静态类型?
在理解动态类型语言之前,我们应该先了解什么是类型检查。
类型检查是一个验证和施加类型约束的过程,编译器或解释器通常在编译或运行阶段做类型检查。用更简单的术语,类型检查仅仅就是查看变量和它们的类型,然后说这个表达式是合理的。
因此,现在我们知道类型检查是什么,明白这些术语真的很简单。
- 在静态类型语言(statically typed languages)中,类型检查发生在编译阶段(compile time),即代码执行前;
- 在动态类型语言(dynamically typed languages)中,类型检查发生在运行阶段(run time),即代码执行期间。
性能
-
静态类型:编译阶段做更多处理,但是运行时性能更好
-
动态类型:编译阶段更高效,但是运行时的类型检查会影响到性能
灵活性和出错
-
静态类型:运行时出错机会更小,但是提供给程序员的灵活性不好
-
动态类型:提供更多的灵活性但是运行时出错机会相对更大
什么是强类型/弱类型?
首先看下什么是强类型,在强类型中,不管在编译时还是运行时,一旦某个类型赋值给某个变量,它会持有这个类型,并且不能同其他类型在计算某个表达式时混合计算
然而,在弱类型中,它是很容易与其他类型混合计算的。
例如,在 Python 中,“1”+ 2 将导致类型错误,因为这些语言不允许 “类型强制转换”(数据类型的隐式转换)。然而,在另一门同样伟大的语言 Javascript 中,将简单地输出 “12” 作为结果。
记住
各种语言按照动态/静态,强/弱类型的划分:
结论
- 类型检查确保一个表达式中的变量类型是合法的。在静态类型语言中,类型检查发生在编译阶段;动态类型语言,类型检查发生在运行阶段。
- 强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而弱类型语言允许各种变量类型间做一些运算。
- Python 是一门强动态类型的语言
3.什么是解释型语言?
解释型语言逐行执行它的语句。Python、Javascript、R、PHP 和 Ruby 等语言是解释型语言的主要例子。用解释型语言编写的程序直接从源代码运行,没有中间的编译步骤。
4. PEP 8 是什么?为什么它很重要?
PEP 8 是 Python 官方推荐的编码规范。其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。PEP 8 是向 Python 社区提供信息的官方设计文档,或者描述 Python 或其进程的新特性。PEP 8 特别重要,因为它记录了Python 代码的样式指南。显然,为使代码易读、易懂、易维护需要真诚而严格地遵循这些样式指南。
5. Python 中的作用域是什么?
Python 中的每个对象都在一个作用域内运行。作用域是 Python 中对象保持相关的代码块。命名空间唯一地标识程序中的所有对象。但是,这些名称空间也有一个为它们定义的作用域,可以在没有任何前缀的情况下使用它们的对象。Python 代码执行过程中创建作用域的几个例子如下:
- 局部作用域指的是当前函数中可用的局部对象。
- 全局作用域指的是自开始以来在整个代码执行过程中可用的对象。
- 模块级作用域指的是程序中可访问的当前模块的全局对象。
- 最外层作用域指的是程序中可调用的所有内置名称。最后搜索此范围内的对象以查找引用的名称。
注意:局部作用域对象可以使用
global
关键字与全局作用域对象同步。
6. 什么是列表和元组?两者的主要区别是什么?
列表和元组都是序列数据类型,可以在 Python 中存储数据。存储在这两个序列中的数据可以具有不同的数据类型。列表用方括号表示,而元组用圆括号表示。
但两者的真正区别是什么呢?两者之间的关键区别在于,列表是可变的,而元组是不可变的对象。这意味着列表可以随时修改、追加或切片,但元组保持不变。可以在 Python IDLE 上运行以下示例来确认差异:
my_tuple = ('sara', 6, 5, 0.97)
my_list = ['sara', 6, 5, 0.97]
print(my_tuple[0]) # output => 'sara'
print(my_list[0]) # output => 'sara'
my_tuple[0] = 'ansh' # modifying tuple => throws an error
my_list[0] = 'ansh' # modifying list => list modified
print(my_tuple[0]) # output => 'sara'
print(my_list[0]) # output => 'ansh'
7. Python 中常见的内置数据类型有哪些?
Python 中有几种内置数据类型。虽然 Python 不要求在变量声明期间显式定义数据类型,但如果忽略数据类型的知识及其相互兼容性,则可能会发生类型错误。Python 提供 type()
和 isinstance()
函数来检查这些变量的类型。这些数据类型可分为以下几类:
-
None Type:
关键字
None
表示 Python 中的空值。可以使用这些 NoneType 对象执行布尔相等运算。类名 描述 NoneType 表示 Python 中的 NULL 值。 -
数值类型:
有三种不同的数值类型——整数、浮点数和复数。此外,布尔类型是整数类型的子类型。
类名 描述 整型 将整数文本(包括十六进制、八进制和二进制数)存储为整数。 浮点型 将包含十进制值和/或指数符号的文本存储为浮点数。 复数型 以(A+Bj)的形式存储复数,并具有属性: real
和imag
。布尔型 存储布尔值(True 或 False)。 -
序列类型:
根据 Python 文档,有三种基本的序列类型—— 列表、元组和 range 对象。序列类型定义了用于遍历其元素的
in
和not in
运算符。这些运算符与比较操作具有相同的优先级。类名 描述 列表 通常用于存放同类项目集合的可变序列。 元组 通常用于储存异构数据多项集的不可变序列。 range 对象 在执行期间生成的不可变的数字序列。 字符串 由 Unicode 码位构成的不可变序列。 注意: 标准库还包括用于处理的其他类型:二进制数据,如 bytes、bytearray 和 memoryview。
-
映射类型:
映射对象可以将可哈希值映射到 Python 中的随机对象。映射对象是可变的,目前只有一种标准映射类型,即字典。
类名 描述 字典 存储以逗号分隔的键:值对列表。 -
集合类型:
目前,Python 有两种内置的集合类型—— set 和 frozenset。 set 类型是可变的,其内容可以使用
add()
和remove()
这样的方法来改变。 由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。 frozenset 类型是不可变并且为 hashable,其内容在被创建后不能再改变,因此它可以被用作字典的键或其他集合的元素。类名 描述 set 不同可哈希对象的可变无序集合。 frozenset 不同可哈希对象的不可变集合。 -
模块:
模块是 Python 解释器支持的附加内置类型。模块唯一的特殊操作是属性访问:m.name,这里 m 为一个模块而 name为定义在 m 的符号表中的一个名称。 模块属性可以被赋值。
-
可调用类型:
可调用类型是可以应用函数调用的类型。它们可以是用户定义的函数、实例方法、生成器函数以及其他一些内置函数、方法和类。
有关 Python 中数据类型的详细,可以参阅 docs.python.org 中的文档。
8. 什么是 Python 中的 pass?
关键字 pass
表示 Python 中的空操作。它通常用于填充可能在运行时执行但尚未编写的空代码块。如果没有以下代码中的 pass
语句,我们可能会在代码执行过程中遇到一些错误。
def myEmptyFunc(): # do nothingpass
myEmptyFunc() # nothing happens
## Without the pass keyword
# File "<stdin>", line 3
# IndentationError: expected an indented block
9. 什么是 Python 中的模块和包?
Python 包和模块是允许在 Python 中进行模块化编程的两种机制。模块化有几个优点:
- 简单性:处理单个模块可以帮助专注于手头问题的相对较小的一部分。这使得开发更容易,更不容易出错。
- 可维护性:模块被设计为在不同的问题域之间强制执行逻辑边界。如果它们是以一种减少相互依赖的方式编写的,那么模块中的修改不太可能影响程序的其他部分。
- 可重用性:在模块中定义的函数可以很容易地被应用程序的其他部分重用。
- 作用域:模块通常定义一个单独的命名空间,这有助于避免来自程序其他部分的标识符之间的混淆。
一般来说,模块只是具有 .py 扩展名的 Python 文件,可以定义和实现一组函数、类或变量。它们可以使用语句导入并初始化一次。如果需要部分功能,使用 import ... from ...
导入必需的类或函数
包允许使用点符号对模块命名空间进行分层结构。模块有助于避免全局变量名之间的冲突,同样,包有助于避免模块名之间的冲突。创建包很容易,因为它利用了系统固有的文件结构。所以只要把模块塞进一个文件夹,就可以了,文件夹名就是包名。从这个包中导入模块或其内容需要将包名作为模块名的前缀,并加上一个点。
10. Python 中的全局属性、受保护属性和私有属性是什么?
-
全局变量是在全局范围内定义的公共变量。要在函数内的全局范围内使用该变量,我们使用关键字
global
。 -
受保护属性是用前缀在其标识符上的下划线定义的属性,例如。_萨拉。仍然可以从定义它们的类之外访问和修改它们,但负责任的开发人员应避免这样做。
-
私有属性是在其标识符上带有双下划线前缀的属性,例如,
__ansh
。它们不能直接从外部访问或修改,如果进行此类尝试,将导致 AttributeError。
11. self 在 Python 中有什么用?
self 在 Python 中是一个特殊的参数,用于表示对象自身。它通常作为方法的第一个参数传递,并用于访问对象的属性和方法。
在类定义中,我们可以使用 self 来引用当前实例对象的属性和方法。通过 self,我们可以在类的方法中操作对象的状态,并将其封装起来以供其他方法调用。
举个例子,在一个 Person 类中,我们可以定义一个名为 set_name 的方法,使用 self 参数来设置对象的姓名属性:
class Person:def set_name(self, name):self.name = name
在这个例子中,self 参数表示当前实例对象,我们可以通过 self.name 来访问该对象的 name 属性。
总而言之,self 在 Python 中用于表示对象自身,在类的方法中使用 self 可以方便地访问和操作对象的属性和方法。
12. 什么是__init__?
__init__是Python中的一个特殊方法,用于在创建类的实例时进行初始化操作。它被称为构造函数或初始化方法。
当我们使用类创建对象时,Python 会自动调用该类的__init__方法来执行一些初始化任务。在__init__方法中,我们可以定义对象的属性并给它们赋初始值。
举个例子,假设我们有一个 Person 类,希望在创建 Person 对象时可以设置姓名和年龄。可以在类中定义一个__init__方法,并接受 name 和 age 两个参数来初始化对象的属性:
class Person:def __init__(self, name, age):self.name = nameself.age = age
当我们创建一个 Person 对象时,可以传递相应的参数来初始化对象的属性:
person = Person("Alice", 25)
在这个例子中,当我们执行 Person("Alice", 25)
时,Python 会自动调用 Person 类的__init__方法,并将 “Aliice” 和 25 作为参数传递给该方法。在__init__方法中,通过 self.name 和 self.age 来分别初始化对象的 name 和 age 属性。
13. 什么是 Python 中的 break、continue 和 pass?
break | break 语句立即终止循环,控制程序运行到循环体后面的语句。 |
continue | continue 语句是 break 语句的小版本,跳过当前迭代中的其余代码,控制程序运行到循环的下一个迭代。 |
pass | 如上所述,Python 中的 pass 关键字通常用于填充空块,类似于 Java、C++、Javascript 等语言中由分号表示的空语句。 |
pat = [1, 3, 2, 1, 2, 3, 1, 0, 1, 3]
for p in pat:passif (p == 0):current = pbreakelif (p % 2 == 0):continueprint(p) # output => 1 3 1 3 1
print(current) # output => 0
14. 什么是 Python 中的单元测试?
Python 中的单元测试是一种侧重于验证软件系统中单个单元或组件的正确性的测试。单元通常指的是一小段独立的代码,如函数、方法或类。
单元测试的目的是确保每个代码单元按预期执行,并在给定特定输入的情况下产生所需的输出。通过编写和运行单元测试,开发人员可以在开发过程的早期检测和修复错误,在进行更改时最小化引入新错误的风险,并提高代码库的整体质量和可靠性。
在 Python 中,单元测试通常使用测试框架(如 unittest、pytest 或 nose)创建。这些框架为定义测试用例、执行测试用例和报告结果提供了实用工具和断言。
典型的单元测试包括:
- 定义测试用例:这包括创建函数或方法,这些函数或方法定义了具有已知输入和预期输出的特定测试用例。
- 执行测试用例:测试框架自动运行定义的测试用例,并检查实际输出是否与预期输出匹配。
- 报告结果:测试框架提供关于测试通过、失败或遇到错误的详细报告。
通过定期运行单元测试,开发人员可以获得对代码行为的信心,促进团队成员之间的协作,并确保对代码库的修改或添加不会引入回档。
15. 什么是 Python 中的文档字符串?
- 文档字符串(docstring)是用于记录特定代码段的多行字符串。
- Python 的 docstring 约定建议使用三引号(“”")来定义 docstring。文档字符串可以在模块、函数、类或方法定义之后立即写入,并包含在各自的代码块中。
- 文档字符串应描述函数或方法的作用。
下面是一个带有 docstring 的函数示例:
def add(a, b):"""Adds two numbers and returns the result.Args:a (int): The first number.b (int): The second number.Returns:int: The sum of the two numbers."""return a + b
16. 什么是 Python 中的切片?
- 顾名思义,“切片” 是其中的一部分。
- 切片的语法是
[start : end : step]
- start 是要从中对列表或元组进行切片的起始索引
- end 是结束索引或停止的地方。。
- step 是跳跃的步数。
- start 的默认值为 0,end 为项目数,step 为 1。
- 切片可以在字符串、数组、列表和元组上完成。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numbers[1 : : 2]) # output : [2, 4, 6, 8, 10]
17. 解释如何在 Unix 上使 Python 脚本可执行?
要在 Unix 上使 Python 脚本可执行,可以按照以下步骤进行操作:
- 添加 shebang(也称为 hashbang)行:在 Python 脚本的第一行添加以下代码以指定解释器路径。
#!/usr/bin/env python
这将告诉系统使用 env 来查找 Python 解释器,并使用找到的解释器来运行脚本。如果你的 Python 解释器的路径不是 /usr/bin/env python
,请相应地更改该行。
- 设置脚本权限:使用
chmod
命令为脚本添加可执行权限。
chmod +x script.py
这将允许直接运行脚本而无需在命令前添加 python 关键字。
- 运行脚本:现在可以通过以下方式运行 Python 脚本。
./script.py
注意,脚本文件必须位于当前工作目录中,或者必须提供脚本的完整路径。
这样,就可以在 Unix 上使 Python 脚本可执行了。
18. Python 数组和列表有什么区别?
在 Python 中,数组和列表是两种不同的数据结构。它们有以下区别:
-
内存分配方式:数组通常在内存中以连续的块存储数据,这使得它们在访问元素时具有更快的速度。而列表是由指针链表实现的,每个节点都包含指向下一个节点的指针。
-
数据类型:数组只能包含相同数据类型的元素,即数组的数据类型应该是同类的,消耗的内存远少于列表。而列表可以包含不同数据类型的元素,即列表的数据类型可以是异构的,它具有消耗大量内存的缺点。这意味着数组支持更广泛的数值计算操作,如矩阵运算等。
-
大小调整:数组的大小是固定的,一旦创建就无法更改。如果需要更改数组的大小,通常需要创建一个新的数组并复制原始数据。而列表的大小是可变的,可以根据需要添加或删除元素。
考虑到上述区别,当需要进行数值计算和处理时,使用数组可能更有效。而当需要灵活性和动态调整大小时,列表可能更适合。
Python 面试的进阶问题:华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(二)
相关文章:

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)
系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …...

【牛客网】二叉搜索树与双向链表
二叉搜索树与双向链表 题目描述算法分析编程代码 链接: 二叉搜索树与双向链表 题目描述 算法分析 编程代码 /* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:…...

Oracle免费在线编程:Oracle APEX
前提: 注意:你要有个梯子才能更稳定的访问。 不需要安装Oracle,但是需要注册。(还算方便的) 注册&登录过程 进入Oracle APEX官网,我们选择免费的APEX工作区即可,点击“免费注册”。在注册…...

C#+WPF上位机开发(模块化+反应式)
在上位机开发领域中,C#与C两种语言是应用最多的两种开发语言,在C语言中,与之搭配的前端框架通常以QT最为常用,而C#语言中,与之搭配的前端框架是Winform和WPF两种框架。今天我们主要讨论一下C#和WPF这一对组合在上位机开…...

【LeetCode 算法】Card Flipping Game 翻转卡片游戏-阅读题
文章目录 Card Flipping Game 翻转卡片游戏问题描述:EN 分析代码 Tag Card Flipping Game 翻转卡片游戏 问题描述: 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们…...

【leetcode】138.复制带随机指针的链表
方法一:暴力求解 1️⃣遍历原链表,复制节点尾插 2️⃣更新random,原链表中的random对应第几个节点则复制链表中的random就对应第几个 📖Note 不能通过节点中的val判断random的指向,因为链表中可能存在两个val相等的节点…...

svn工具使用
svn 介绍 解决之道: SCM:软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS:元老级产品 VSS:入门级产品 ClearCase:IBM 公司提供技术支持 SVN:主流产品 什么是SVNÿ…...

SpringBoot项目使用MyBatisX+Apifox IDEA 插件快速开发
今天跟大家介绍两个快速开发项目的插件。能大大提高开发效率。希望能帮助到大家。 1、MyBatisX 插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题…...

Redis数据结构
Redis 支持的数据结构的列表 1、String:字符串,是 Redis 最基本的数据类型,可以存储字符串、整数和浮点数。 2、Hash:哈希表,由多个键值对组成,可以储存多个字段和值。 3、List:列表,…...

解密Redis:应对面试中的缓存相关问题
文章目录 1. 缓存穿透问题及解决方案2. 缓存击穿问题及解决方案3. 缓存雪崩问题及解决方案4. Redis的数据持久化5. Redis的过期删除策略和数据淘汰策略6. Redis分布式锁和主从同步7. Redis集群方案8. Redis的数据一致性保障和高可用性方案 导语: 在面试过程中&#…...

读取application-dev.properties的中文乱码【bug】
读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…...

Linux(centos7)如何实现配置iscsi存储多路径 及DM-Multipath的配置文件概述
安装多路径软件(系统默认安装) #第一:安装多路径软件yum -y install device-mapper device-mapper-multipath#第二:在CentOS7中启用多路径模块,mpathconf命令及相关模块加载(可以使用mpathconf -h查看用法&…...

DK7 vs JDK8 vs JDK11特性和功能的对比
JDK7 vs JDK8 vs JDK11特性和功能的对比 Java Development Kit (JDK) 是 Java 程序员所使用的开发工具包,它提供了编译、调试和运行 Java 程序所需的一切。JDK 在不同的版本中引入了许多新的特性和功能,下面我们来比较 JDK7、JDK8 和 JDK11 之间的一些重…...

你觉得企业为什么需要数据分析?
数据对于企业的作用就好比,一位士兵作战需要手枪一样,仅仅只是作为一项工具,帮助我们提高取得胜利的几率或者概率。数据只是数据,不代表业务,所起的作用也是有限的,网上那些夸大数据作用的,没有…...

SVN学习
SVN学习 以下总结是看了一个b站up主的视频总结出来的。 1. 简介 SVN是代码版本管理工具,它能记住每次的修改、查看所有修改记录、恢复到任何历史版本和恢复已经删除的文件。 SVN比起Git的好处就是使用简单,上手快;具备目录级权限控制&…...

vim怎么使用,vim使用教程,vimtutor怎么切换中文 汉化
vim 使用 在安装了 vim 的 unix 系统下可以使用 vimtutor zh_cn 开启下面的教程 序言 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.7 Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中就不详细介绍了。本教程的…...

[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联
上一节讲解了后台Rbac微服务角色增删改查微服务,这里讲解权限管理Rbac微服务管理员的增删改查微服务以及管理员和角色关联微服务功能 一.实现后台权限管理Rbac之管理员增删改查微服务服务端功能 1.创建Manager模型 要实现管理员的增删改查,就需要创建对应的模型,故在server/r…...

2023-07-31力扣每日一题
链接: 143. 重排链表 题意: 将链表L0 → L1 → … → Ln - 1 → Ln变成L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 解: 线性表法还是好写的 这边搞一下翻转法,快慢指针求翻转点(翻转后面一半然后双指针合并…...
接口自动化报告,生成本地服务并自动打开时失败
错误原因: 端口号被占用 首先可以在cmd中调出命令窗口然后执行命令netstat -ano就可以查看所有活动的链接,找到被占用的端口号 1、通过命令taskkill /f /t /im "进程名称" ,根据进程的名称杀掉所有的进程。或者taskkill /f /t /p…...

Git 的基本概念和使用方式
Git 是一种分布式版本控制系统,它能够记录文件内容的变化,并且允许用户在这些变化之间轻松地进行切换。 Git 的基本概念如下: 1. 仓库(Repository):Git 存放项目代码的地方。通常,一个仓库对应一…...

【JVM】(三) 深入理解JVM垃圾回收机制(GC)
文章目录 前言一、死亡对象的判断方法1.1 引用计数算法1.2 可达性分析算法 二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.5 分代算法2.6 Minor GC 和 Major GC 前言 JVM 的垃圾回收机制(Garbage Collection)是 Java 中的重要特性之…...

Flink CEP(二) 运行源码解析
通过DemoApp学习一下,CEP的源码执行逻辑。为下一篇实现CEP动态Pattern奠定理论基础。 1. Pattern的定义 Pattern<Tuple3<String, Long, String>,?> pattern Pattern.<Tuple3<String, Long, String>>begin("begin").where(new…...

剑指Offer-学习计划(四)双指针(下)
剑指 Offer 57. 和为s的两个数字 剑指 Offer 58 - I. 翻转单词顺序 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 题目一:调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的…...

深度学习——常见注意力机制
1.SENet SENet属于通道注意力机制。2017年提出,是imageNet最后的冠军 SENet采用的方法是对于特征层赋予权值。 重点在于如何赋权 1.将输入信息的所有通道平均池化。 2.平均池化后进行两次全连接,第一次全连接链接的神经元较少,第二次全连…...

Python 进阶(七):高级文件操作(shutil 模块)
❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 1. 简介2. 常用函数2.1 复制文件2.2 复制目录2.3 移动文件或目录2.4 删除文件或目录2.…...

保留网络:大型语言模型的Transformer继任者
原文信息 原文题目:《Retentive Network: A Successor to Transformer for Large Language Models》 原文引用:Sun Y, Dong L, Huang S, et al. Retentive Network: A Successor to Transformer for Large Language Models[J]. arXiv preprint arXiv:2…...

算法通关村第二关——反转链表青铜笔记
LeetCode 206.反转链表 建立虚拟结点辅助翻转 public ListNode reverseList(ListNode head) {ListNode ans new ListNode(-1);ListNode cur head;while(cur!null){ListNode curNext cur.next;cur.next ans.next;ans.next cur;cur curNext;}return ans.next; }不带虚拟头…...

【Linux】——线程安全
目录 关于线程进程的问题 可重入与线程安全 常见的线程安全的情况 常见的不可重入的情况 常见的可重入的情况 可重入与线程安全区别 可重入与线程安全联系 Linux线程互斥 进程线程间的互斥相关概念 互斥量mutex 互斥量mutex常用接口 互斥量改造抢票系统 互斥量的原…...

[React]生命周期
前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. Ract生命周期 React 生命周期分为三种状态 1. 初始化 2.更新 3.销毁 初始化 1、getDefaultProps() 设置默认的props,也可以用duf…...

【2023】Redis实现消息队列的方式汇总以及代码实现
Redis实现消息队列的方式汇总以及代码实现 前言开始前准备1、添加依赖2、添加配置的Bean 具体实现一、从最简单的开始:List 队列代码实现 二、发布订阅模式:Pub/Sub1、使用RedisMessageListenerContainer实现订阅2、还可以使用redisTemplate实现订阅 三、…...