搜档网
当前位置:搜档网 › 最常见的-35-个-Python-面试题及答案

最常见的-35-个-Python-面试题及答案

最常见的-35-个-Python-面试题及答案
最常见的-35-个-Python-面试题及答案

1. Python 面试问题及答案

作为一个Python 新手,你必须熟悉基础知识。在本文中我们将讨论一些Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。让我们来深入研究这些问题

Python 面试问题

. Python 的特点和优点是什么

Python 可以作为编程的入门语言,因为他具备以下特质:

1. 解释性

2. 动态特性

3. 面向对象

4. 语法简洁

5. 开源

6. 丰富的社区资源

实际上Python 的优点远不止这些,更详细的介绍可以阅读Introduction to Python ( blogs/python-tutorial/)

. 深拷贝和浅拷贝的区别是什么

深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,使用方法如下:

深拷贝-Python 面试问题及答案

浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝,使用方法如下:

浅拷贝—Python 面试问题及答案

. 列表和元祖有什么不同

主要区别在于列表是可变的,元祖是不可变的。看下面的例子:

会出现以下错误提示:

TypeError: ‘tuple’ object does not support item assignment

关于列表和元祖的更多内容参考 Tuples vs Lists( blogs/python-tuples-vs-lists/)2. Python 面试基础题

到是新手经常会被问到的一些 Python 基础题,有经验的人也可以参考这些问题来复习这些概念。

. 解释 Python 中的三元表达式

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

[on true] if [expression]else [on false]

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

下面是例子:

2

Hi

. Python 中如何实现多线程

线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python 是一种多线程语言,它有一个多线程包。

GIL(全局解释器锁)确保一次执行单个线程。一个线程保存 GIL 并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在 CPU 上。当然,所有传递都会增加执行的开销。

. 解释继承

一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法)。

继承使我们可以重用代码,并且还可以更方便地创建和维护代码。Python 支持以下类型的继承:

1. 单继承- 一个子类类继承自单个基类

2. 多重继承- 一个子类继承自多个基类

3. 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类

4. 分层继承- 多个子类继承自同一个基类

5. 混合继承- 两种或两种以上继承类型的组合

关于继承的更多内容参考 Python Inheritance( blogs/python-inheritance/)

. 什么是 Flask

Flask 是一个使用 Python 编写的轻量级 Web 应用框架,使用 BSD 授权。其 WSGI 工具箱采用 Werkzeug,模板引擎则使用 Jinja2。除了 Werkzeug 和 Jinja2 以外几乎不依赖任何外部库。因为 Flask 被称为轻量级框架。

Flask 的会话会话使用签名cookie 来允许用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。但如果要修改会话,则必须有密钥。

我们将在后续的课程中进一步讨论 Flask。

. 如何在 Python 中管理内存

Python 用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。由解释器来管理它。不过使用一些核心 API,我们可以访问一些 Python 内存管理工具控制内存分配。. 解释 Python 中的 help() 函数和 dir() 函数。

help() 函数返回帮助文档和参数说明:

运行结果如下:

Help on function copy in module copy

copy(x)

Shallow copy operation on arbitrary Python objects.

See the module』s __doc__ string for more info.

dir() 函数返回对象中的所有成员 (任何类型)

. 当退出 Python 时是否释放所有内存分配

答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放

另外不会释放 C 库保留的部分内容。

. 什么是猴子补丁

在运行时动态修改类和模块

Hi, monkey

. 什么是 Python 字典

字典是我在 C++和 Java 中没有见过的数据结构,它拥有键-值对

3

字典是可变的,我们也可以用推导式的方式创建它.

{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}

要了解更多字典的内容请点击 Python Dictionaries( blogs/python-dictionaries/). 能否解释一下 *args 和 **kwargs

如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。

3

2

1

4

7

当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。

使用 args 和 kwargs 作为参数名只是举例,可以任意替换。

对于 Python 的基础题任何疑问,请在评论区提问。

. 编程实现计算文件中的大写字母数

26

. 什么是负索引

我们先创建如下列表:

与正索引不同,负索引是从右边开始检索。

6

同样可以用于列表的切片:

[3, 4, 5, 6, 7]

. 如何随机打乱列表中元素,要求不引用额外的内存空间

我们用 random 包中的 shuffle() 函数来实现。

[3, 4, 8, 0, 5, 7, 6, 2, 1]

. 解释 Python 中的 join() 和 split() 函数

join() 函数可以将指定的字符添加到字符串中。

‘1,2,3,4,5’

split() 函数可以用指定的字符分割字符串

[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]

. Python 区分大小写吗

验证 Python 是否区分大小写的方法是测试 myname 和 Myname 在程序中是不是算同一个标识符。观察以下代码的返回结果:

Myname

NameError: name ‘Myname’ is not defined

如你所见,这里出现了 NameError,所以 Python 是区分大小的语言。

. Python 中标识符的命名规则

Python 中的标识符可以是任意长度,但必须遵循以下命名规则:

1. 只能以下划线或者 A-Z/a-z 中的字母开头。

2. 其余部分只能使用 A-Z/a-z/0-9。

3. Python 标识符区分大小写。

4. 关键字不能作为标识符。Python 有以下这些关键字:

. 如何删除字符串中的前置空格

前置空格是第一个非空格字符前的所有空格,使用 lstrip() 函数来删除.

‘Ayushi ‘

如图这个字符串既包含前置空格也包含后置空格. 调用lstrip() 函数去除了前置空格。如果想去除后置空格,使用 rstrip() 函数。

‘ Ayushi’

以上是面向 Python 新手的基础题部分。

3. Python 面试进阶题

Q. 21 至 Q. 35 是针对有经验者的一些 Python 面试问题及其答案和示例。

. 如何将字符串转换为小写

使用 lower() 函数

‘ayushi’

转换为大写用 upper() 函数

‘AYUSHI’

要检查字符串是否为全大写或全小写,使用 isupper() 和 islower() 函数

像 @ 和$这样的字符即满足大写也满足小写。

istitle() 可以检查字符串是否是标题格式。

True

. Python 中的 pass 语句有什么作用

我们在写代码时,有时可能只写了函数声明而没想好函数怎么写,但为了保证语法检查的正确必须输入一些东西。在这种情况下,我们使用 pass 语句。

类似的 break 语句可以跳出循环。

1

2

continue 语句可以跳到下一轮循环。

1

2

4

5

6

. 请解释 Python 中的闭包

如果在一个内部函数里。对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。

7

闭包的详细解释请点击 Closures in Python。(blogs/python-closure/)

. 解释 Python 中的a**b 返回 a 的 b 次方

1024

% 是取模符号。返回除法后的余数。

6

对于 Python 进阶面试问题和答案有任何疑问请在评论区提问。

. Python 中有多少种运算符,解释算术运算符。

这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题。

在 Python 中我们有 7 中运算符:算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。

1. 加号 (+) 将两个对象的值相加。

15

2. 减号 (-) 将第一个对象的值减去第二个对象的值。

-1

3. 乘号 (*) 将两个对象的值相乘。

56

4. 除号 (/) 将第一个对象的值除以第二个对象的值。

关于地板除法、取模和取幂,请参考上一个问题。

. 解释 Python 中的关系运算符。

关系运算符用来比较两个对象。

1. 判断小于 (<):如果符号左边的值比右边小则返回 True。

False

2. 判断大于 (>):如果符号左边的值比右边大则返回 True。

True

出现上面的错误结果是因为 Python 的浮点运算存在一些 Bug。

3. 判断小于等于 (<=):如果符号左边的值小于或等于右边则返回 True。

True

4. 大判断于等于 (>=):如果符号左边的值大于或等于右边则返回 True。

True

5. 判断等于 (==) 如果符号两边的值相等则返回 True。

True

6. 判断不等于 (!=) 如果符号两边的值不等则返回 True。

True

True

. 解释 Python 中的赋值和算数运算符

这是面试中的常见题目。我们将算数运算符和赋值符号放在一起介绍。

. 解释 Python 中的逻辑运算符

Python 中有三个逻辑运算符:and、or、not

. 解释 Python 中的成员运算符

使用 in 和 not in 运算符我们可以判断某个值是否在成员中。

. 解释 Python 中的身份运算符

这是非常常见的 Python 面试题,用下面的示例来回答.

is 和 not is 运算符可以判断两个对象是否相同

. 解释 Python 中的位运算符

此运算符按二进制位对值进行操作。

1. 与 (&) 返回按位与结果

2

2. 或 (|) 返回按位或结果

3

3. 异或 (^) 返回按位异或结果

1

4. 取反 (~) 返回按位取反结果

-3

5. 左移位 (<<) 将符号左边数的二进制左移右边数位

4

1 的二级制 001 左移

2 位变成 100 也即十进制的 4

6. 右移位 (>>)

1

想了解关于位运算符的更多内容请点击 Operators in Python(blogs/python-operators/). 如何在 Python 使用多进制数字

除十进制以外,在 Python 中还可以使用二进制、八进制、十六进制。

1. 二进制数有 0 和 1 组成,我们使用 0b 或 0B 前缀表示二进制数

10

使用 bin() 函数可以将数字转换为二进制

‘0b1111’

2. 八进制数由数字 0-7 组成,使用前缀 0o 或 0O 表示 8 进制数

‘0o10’

3. 十六进数由数字 0-15 组成,使用前缀 0x 或者 0X 表示 16 进制数

‘0x10’

‘0xf’

. 如何获取字典中的所有键

使用 keys() 来获取字典中的所有键

. 问什么标识符不建议使用下划线开头

因为在 Python 中以下划线开头的变量为私有变量,如果你不想让变量私有,就不要使用下划线开头。

. 如何声明多个变量并赋值

有两种方式:

. 什么是元组的解封装

首先我们来介绍元组封装:

(3, 4, 5)

将 3,4,5 封装到元组 mytuple 中。

现在我们要将这些值解封装到变量 x,y,z 中

12

以上是Python 高级面试问题和答案,新手也可以参考这些问题以获得进阶的Python 知识。

4. 结束语

本篇文章介绍了一些重要的 Python 面试问题和答案,后续我们还会增加。在你面试之前应该熟练掌握这些。如有想添加的问题欢迎随时评论。

`

Python经典面试题

1:Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1. class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls.instance = None def __call__(cls, *args, **kw): if cls.instance is None: cls.instance = super(Singleton, cls).__call__(*args, **kw) return cls.instance class MyClass(object): __metaclass__ = Singleton print MyClass() print MyClass() 2. 使用decorator来实现单例模式 def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class MyClass: … 2:什么是lambda函数? Python允许你定义一种单行的小函数。定义lambda函数的形式如下:labmda 参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个:>>> g = lambda x, y: x*y >>> g(3,4) 12 >>> g = lambda x, y=0, z=0: x+y+z >>> g(1) 1

Python面试题及答案

P y t h o n面试题及答案 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

2018年最新P y t h o n面试题及答案找工作是每个学习Python人员的目标,为了更好的找到工作,刷面试题是必不可少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些20XX年最新的Python面试题,来测测你技术的掌握度吧。 1、Python里面如何拷贝一个对象( 赋值,浅拷贝,深拷贝的区别) 答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的()函数} 2、Python里面match()和search()的区别? 答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。 re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。 >>>print(‘super’, ‘superstition’).span())

(0, 5) >>>print(‘super’, ‘insuperable’)) None >>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’).span()) (2, 7) 3、有没有一个工具可以帮助查找python的bug和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告 Pylint是另外一个工具可以进行codingstandard检查 4、简要描述Python的垃圾回收机制(garbage collection)。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合 == o2和 == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。

python面试题整理(20170131092705)

1 请教一下列表与元组的区别是什么.分别在什么情况下使用 列表中的项目应该包括在方括号中,你可以添加、删除或是搜索列表中的项目。由于你可以增加或 删除项目,所以列表是可变的数据类型,即这种类型是可以被改变的。 元组和列表十分类似,但是元组是不可变的.也就是说你不能修改元组。元组通过圆括号中用逗号分 割的项目定义。元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候, 即被使用的元组的值不会改变。 2 字典 键值对的集合(map)字典是以大括号“{}”包围的数据集合。 与列表区别:字典是无序的,在字典中通过键来访问成员。字典是可变的,可以包含任何其他类型。 3 Python是如何进行内存管理的? Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。 也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由 于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运 行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响 Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内 存的申请和释放。这也就是之前提到的Pymalloc机制。 4 如何在一个function里面设置一个全局的变量? 解决方法是在function的开始插入一个global声明 5 Python中pass语句的作用是什么? pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如: while False: pass pass通常用来创建一个最简单的类: class MyEmptyClass: pass pass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如: def initlog(*args): pass #please implement this 6 Python里面如何拷贝一个对象?

最新python 笔试题

Python基础知识笔试 1 2 3 一、单选题(2.5分*20题) 4 1. 下列哪个表达式在Python中是非法的? B 5 A. x = y = z = 1 6 B. x = (y = z + 1) 7 C. x, y = y, x 8 D. x += y 9 2. python my.py v1 v2 命令运行脚本,通过 from sys impor t argv如何获得v2的参数值? C 10 11 A. argv[0] 12 B. argv[1] 13 C. argv[2] 14 D. argv[3] 15 3. 如何解释下面的执行结果? B 16 print 1.2 - 1.0 == 0.2 17 False 18 A. Python的实现有错误 19 B. 浮点数无法精确表示 20 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False 21 22 4. 下列代码执行结果是什么? D

23 x = 1 24 def change(a): 25 x+= 1 26 print x 27 change(x) 28 A. 1 29 B. 2 30 C. 3 D. 报错 31 32 5. 下列哪种类型是Python的映射类型? D 33 A. str 34 B. list 35 C. tuple 36 D. dict 6. 下述字符串格式化语法正确的是? D 37 38 A. 'GNU's Not %d %%' % 'UNIX' 39 B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' % 'UNIX' 40 41 D. 'GNU\'s Not %s %%' % 'UNIX' 42 7. 在Python 2.7中,下列哪种是Unicode编码的书写方式?C A. a = ‘中文’ 43 44 B. a = r‘中文’

Python面试题及答案

2018年最新Python面试题及答案 找工作是每个学习Python人员的目标,为了更好的找到工作,刷面试题是必不可少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些2017年最新的Python面试题,来测测你技术的掌握度吧。 1、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的()函数} 2、Python里面match()和search()的区别? 答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。 re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。 >>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’)) None

>>>print(‘super’, ‘superstition’).span()) (0, 5) >>>print(‘super’, ‘insuperable’).span()) (2, 7) 3、有没有一个工具可以帮助查找python的bug和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python 代码的bug, 会对代码的复杂度和格式提出警告 Pylint是另外一个工具可以进行codingstandard检查 4、简要描述Python的垃圾回收机制(garbage collection)。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合 == o2和 == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。 Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

20道python面试题

对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔。那么你了解过Python编程面试题吗?今天我们就来了解一下! 1、python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。 多进程间共享数据,可以使用 multiprocessing.Value和multiprocessing.Array。 2、什么是lambda函数?它有什么好处? lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。 3、Python是如何进行类型转换的? ①函数描述 ② int(x [,base ]) 将x转换为一个整数 ③long(x [,base ]) 将x转换为一个长整数 ④float(x ) 将x转换到一个浮点数 ⑤complex(real [,imag ]) 创建一个复数 ⑥str(x ) 将对象 x 转换为字符串 ⑦repr(x ) 将对象 x 转换为表达式字符串 ⑧eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 ⑨tuple(s ) 将序列 s 转换为一个元组 ⑩list(s ) 将序列 s 转换为一个列表 ?chr(x ) 将一个整数转换为一个字符 ?unichr(x ) 将一个整数转换为Unicode字符 ?ord(x ) 将一个字符转换为它的整数值 ?hex(x ) 将一个整数转换为一个十六进制字符串 ?oct(x ) 将一个整数转换为一个八进制字符串 4、python多线程与多进程的区别

最常见的-35-个-Python-面试题及答案

最常见的35 个Python 面试题及答案(2018 版) 1. Python 面试问题及答案 作为一个Python 新手,你必须熟悉基础知识。在本文中我们将讨论一些Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。让我们来深入研究这些问题 Python 面试问题 . Python 的特点和优点是什么 Python 可以作为编程的入门语言,因为他具备以下特质: 1. 解释性 2. 动态特性 3. 面向对象 4. 语法简洁 5. 开源 6. 丰富的社区资源 实际上Python 的优点远不止这些,更详细的介绍可以阅读Introduction to Python ( blogs/python-tutorial/) . 深拷贝和浅拷贝的区别是什么 深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,使用方法如下: 深拷贝-Python 面试问题及答案 浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝,使用方法如下: 浅拷贝—Python 面试问题及答案 . 列表和元祖有什么不同 主要区别在于列表是可变的,元祖是不可变的。看下面的例子: 会出现以下错误提示: TypeError: ‘tuple’ object does not support item assignment 关于列表和元祖的更多内容参考 Tuples vs Lists( blogs/python-tuples-vs-lists/)2. Python 面试基础题 到是新手经常会被问到的一些 Python 基础题,有经验的人也可以参考这些问题来复习这些概念。 . 解释 Python 中的三元表达式 与 C++不同, 在 Python 中我们不需要使用符号,而是使用如下语法: [on true] if [expression]else [on false] 如果 [expression] 为真, 则 [on true] 部分被执行。如果表示为假则 [on false] 部分被执行 下面是例子:

python面试题100

Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = [] def fun(a): a.append(1) fun(a) print(a) # [1] 所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。 这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples,

和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里函数把引用指向了一个不可变对象,当函数返回的时候,外面的引用没半毛感觉.而第二个例子就不一样了,函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改. 2 Python中的元类(metaclass) 元类就是用来创建类的“东西”。你创建类就是为了创建类的实例对象,但是我们已经学习到了Python中的类也是对象。好吧,元类就是用来创建这些类(对象)的,元类就是类的类 这个非常的不常用,详情请看:《深刻理解Python中的元类(metaclass)》 3 @staticmethod和@classmethod Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print( "executing class_foo(%s,%s)"%(cls,x)) @staticmethod def static_foo(x):

Python培训面试题目有哪些

Python培训面试题目有哪些 面试是公司挑选职工的一种重要方法。它给公司和应招者提供了进行双向交流的机会,能使公司和应招者之间相互了解,从而双方都可更准确做出聘用与否、受聘与否的决定。Python后端工程师面试题目有哪些? 一、语言 1.推荐一本看过最好的python书籍? 2.python适合的场景有哪些?当遇到计算密集型任务怎么办? 二、操作系统 可以直接认为是linux,毕竟搞后端的多数是和linux打交道。 1.tcp/udp的区别?tcp粘包是怎么回事,如何处理?udp有粘包吗? 2.time_wait是什么情况?出现过多的close_wait可能是什么原因? 3.epoll,select的区别?边缘触发,水平触发区别? 千锋Python课程历时一年精心策划,十大阶段共23周超长课时,以实战项目做指导,手把手纯面授,面对面现场教学。同时论坛辅导,上课资料录制,方便学生课后复习,严格保障教学质量。

三、存储 存储可能包含rdbms,nosql以及缓存等,我以mysql,redis举例mysql 相关 1.谈谈mysql字符集和排序规则? 2.varchar与char的区别是什么?大小限制? 3.primary key和unique的区别? 4.外键有什么用,是否该用外键?外键一定需要索引吗? 四、安全 1.sql注入是怎么产生的,如何防止? 2.xss如何预防?htmlescape后能否避免xss? 3.csrf是什么?django是如何防范的? 五、综合问题 是否关注新技术啊?golang,rust是否了解?numpy,pandas是什么? 是否紧跟时代潮流?逛不逛微博,刷不刷知乎? 这是有些公司面试Python后端工程师可能会抛给求职者的一些题目,这些

Python面试题总结

1.Python 线程池原理? 我理解为线程池是一个存放很多线程的单位,同时还有一个对应的任务队列。整个执行过程其实就是使用线程池中已有有限的线程把任务队列中的任务做完。这样做的好处就是你不需要为每个任务都创建一个线程,因为当你创建第100 个线程来执行第100个任务的时候,可能前面已经有50个线程结束工作了。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。因此重复利用线程来执行任务,减少系统资源的开销。 2.Python合并字典,相同key的value如何相加? 利用collections.Counter可轻松办到 >>> x = { 'apple':1, 'banana':2 } >>> y = { 'banana':10, 'pear':11 } >>> from collections import Counter >>> X,Y = Counter(x), Counter(y) >>> z = dict(X+Y) >>> z {'apple': 1, 'banana': 12, 'pear': 11} 另一种写法 >>>from collections import Counter >>>dict(Counter(x)+Counter(y)) ( 合并两个字典的方法 方法1: dictMerged1=dict(dict1.items()+dict2.items()) 方法2: dictMerged2=dict(dict1, **dict2) 方法2等同于: dictMerged=dict1.copy() dictMerged.update(dict2) 或者 dictMerged=dict(dict1) dictMerged.update(dict2) 3.解释GUI和GPL? GUI图形用户(Graphical User Interface,简称GUI,又称图形)是指采用图形方式显示的计算机操作用户。 GPL() GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 4.简述爬虫的基本步骤和流程?

python笔试题

Python基础知识笔试 一、单选题(分*20题) 1. 下列哪个表达式在Python中是非法的 B A. x = y = z = 1 B. x = (y = z + 1) C. x, y = y, x D. x += y 2. python v1 v2 命令运行脚本,通过 from sys imp ort argv如何获得v2的参数值 C A. argv[0] B. argv[1] C. argv[2] D. argv[3] 3. 如何解释下面的执行结果B print - == False A. Python的实现有错误 B. 浮点数无法精确表示 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False

4. 下列代码执行结果是什么 D x = 1 def change(a): x+= 1 print x change(x) A. 1 B. 2 C. 3 D. 报错 5. 下列哪种类型是Python的映射类型 D A. str B. list C. tuple D. dict 6. 下述字符串格式化语法正确的是 D A. 'GNU's Not %d %%' % 'UNIX' B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' % 'UNIX' D. 'GNU\'s Not %s %%' % 'UNIX'

7. 在Python 中,下列哪种是Unicode编码的书写方式C A. a = ‘中文’ B. a = r‘中文’ C. a = u’中文’ D. a = b’中文’ 8. 下列代码的运行结果是 D print 'a' < 'b' < 'c' A. a B. b C. c D. True E. False 9. 下列代码运行结果是 C a = 'a' print a > 'b' or 'c' A. a B. b C. c D. True E. False

Python面试考题

一,中文单项选择题(30分,每个3分)?1.下列哪个语句在Python中是非法的 A、x=y=z=1 B、x=(y=z+1) C、x,y=y,x D、x+=y ?2.关于Python内存管理,下列说法错误的是 A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 ?3、下面哪个不是Python合法的标识符 A、int32 B、40XL C、self D、name ?4、下列哪种说法是错误的 A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False ?5、下列表达式的值为True的是 A、5+4j>2-3j B、3>2>2 C、(3,2)<('a','b') D、’abc’>‘xyz’ ?6、Python不支持的数据类型有 A、char B、int C、float D、list ?7、关于Python中的复数,下列说法错误的是 A、表示复数的语法是real+imagej B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 ?8、关于字符串下列说法错误的是

A、字符应该视为长度为1的字符串 B、字符串以\0标志字符串的结束 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符 ?9、以下不能创建一个字典的语句是 A、dict1={} B、dict2={3:5} C、dict3={[1,2,3]:“uestc”} D、 dict4={(1,2,3):“uestc”} ?10、下列Python语句正确的是 A、min=xifxyx:y C、if(x>y)printx D、whileTrue:pass 二,英文单项选择题(30分) ?() printtype(1/2) A. B. C. D. E. ?() nums=set([1,1,2,3,3,3,4]) printlen(nums) "\nwoow" :woow :r"\nwoow" :\nwoow :woow :nwoow ?() foriinrange(2): printi foriinrange(4,6): printi ,4,,1,2,4,5,,1,4,,1,4,5,6,7,8,,2,4,5,6 ?() importmath ?'Amir','Barry','Chales','Dao'] ? ?if'amir'innames1: ?print1 ?else:

ython面试题及答案

2018 年最新Python 面试题及答案 找工作是每个学习Python 人员的目标,为了更好的找到工作,刷面试题是必不可 少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些20XX年最新的Python 面试题,来测测你技术的掌握度吧。 1、Python 里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别) 答:赋值( =),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变) {1, 完全切片方法;2,工厂函数,如list() ;3,copy 模块的copy() 函数} 深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变) {copy 模块的() 函数} 2、Python 里面match() 和search() 的区别? 答:re 模块中match(pattern,string[,flags]), 检查string 的开头是否与 pattern 匹配。 re 模块中research(pattern,string[,flags]), 在string 搜索pattern 的第一个 匹配值。 >>>print( ‘super', ‘superstition ').span()) (0, 5) >>>print( ‘super', ‘insuperable '))

None >>>print( ‘super', ‘superstition ').span()) (0, 5) >>>print( ‘super ', ‘insuperable ').span()) (2, 7) 3、有没有一个工具可以帮助查找python 的bug 和进行静态的代码分析? 答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码 的bug, 会对代码的复杂度和格式提出警告 Pylint 是另外一个工具可以进行codingstandard 检查 4、简要描述Python 的垃圾回收机制( garbage collection )。 答案 这里能说的很多。你应该提到下面几个主要的点: Python在内存中存储了每个对象的引用计数(referenee count )。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。 偶尔也会出现引用循环( reference cycle )。垃圾回收器会定时寻找这个循环, 并将其回收。举个例子,假设有两个对象o1和02,而且符合==02和==o1这两个 条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。 Python 中使用了某些启发式算法( heuristics )来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代 (generation )。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

经典Python面试题之数据库和缓存

经典Python面试题之数据库和缓存 1. 列举常见的关系型数据库和非关系型都有那些? 2. MySQL常见数据库引擎及比较? 3. 简述数据三大范式? 4. 什么是事务?MySQL如何支持事务? 5. 简述数据库设计中一对多和多对多的应用场景? 6. 如何基于数据库实现商城商品计数器? 7. 常见SQL(必备) 8. 简述触发器、函数、视图、存储过程? 9. MySQL索引种类 10. 索引在什么情况下遵循最左前缀的规则? 11. 主键和外键的区别? 12. MySQL常见的函数? 13. 列举创建索引但是无法命中索引的8种情况。 14. 如何开启慢日志查询? 15. 数据库导入导出命令(结构+数据)? 16. 数据库优化方案? 17. char和varchar的区别? 18. 简述MySQL的执行计划? 19. 在对name做了唯一索引前提下,简述以下区别: select * from tb where name = ‘Oldboy-Wup eiqi’

select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1 20. 1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决? 21. 什么是索引合并? 22. 什么是覆盖索引? 23. 简述数据库读写分离? 24. 简述数据库分库分表?(水平、垂直) 25. redis和memcached比较? 26. redis中数据库默认是多少个db 及作用? 27. python操作redis的模块? 28. 如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值? 29. redis如何实现主从复制?以及数据同步机制? 30. redis中的sentinel的作用? 31. 如何实现redis集群? 32. redis中默认有多少个哈希槽? 33. 简述redis的有哪几种持久化策略及比较? 34. 列举redis支持的过期策略。 35. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据? 36. 写代码,基于redis的列表实现先进先出、后进先出队列、优先级队列。

Python测试开发面试笔试题

Python测试开发面试笔试题 一,中文单项选择题(30分,每个3分) 1.下列哪个语句在Python中是非法的? A、x=y=z=1 B、x=(y=z+1) C、x,y=y,x D、x+=y 2.关于Python内存管理,下列说法错误的是 A、变量不必事先声明 B、变量无须先创建和赋值而直接使用 C、变量无须指定类型 D、可以使用del释放资源 3、下面哪个不是Python合法的标识符 A、int32 B、40XL C、self D、name 4、下列哪种说法是错误的 A、除字典类型外,所有标准对象均可以用于布尔测试 B、空字符串的布尔值是False C、空列表对象的布尔值是False D、值为0的任何数字对象的布尔值是False 5、下列表达式的值为True的是 A、5+4j>2-3j B、3>2>2 C、(3,2)<('a','b') D、’abc’>‘xyz’ 6、Python不支持的数据类型有 A、char B、int C、float D、list 7、关于Python中的复数,下列说法错误的是 A、表示复数的语法是real+image j B、实部和虚部都是浮点数 C、虚部必须后缀j,且必须是小写 D、方法conjugate返回复数的共轭复数 8、关于字符串下列说法错误的是 A、字符应该视为长度为1的字符串 B、字符串以标志字符串的结束 C、既可以用单引号,也可以用双引号创建字符串 D、在三引号字符串中可以包含换行回车等特殊字符

9、以下不能创建一个字典的语句是 A、dict1={} B、dict2={3:5} C、dict3={[1,2,3]:“uestc”} D、dict4={(1,2,3):“uestc”} 10、下列Python语句正确的是 A、min=x if xy?x:y C、if(x>y)print x D、while True:pass 二,英文单项选择题(30分) 1.what gets printed?Assuming python version 2.x() print type(1/2) A. B. C. D. E. 2.What gets printed?() nums=set([1,1,2,3,3,3,4]) print len(nums) A.1 B.2 C.4 D.5 E.7 3.What gets printed?() counter=1 def doLotsOfStuff(): global counter for i in(1,2,3): counter+=1 doLotsOfStuff() print counter A.1 B.3 C.4 D.7 E.none of the above 4.What gets printed?() print r"woow" A.new line then the string:woow B.the text exactly like this:r"woow" C.the text like exactly like this:woow D.the letter r and then newline then the text:woow E.the letter r then the text like this:nwoow 5.Which numbers are printed?()

python常见面试题集

1、MySQL 数据库总结 MySQL 可以建多少个数据库,理论上是没有限制的,每一个数据库可以有上亿的对象,但是一般基于硬件要求、效率问题一般不超过64个, 超过64个会对数据处理速度造成影响,每一张表建议不超过过1亿条数据。 2、Python 话题 1.最受欢迎的Python开源框架1:Django2:Twisted 3:Tornado除了以上三种常用的开源框架外还有: Diesel、Flask、Cubes、Kartograph、Pulsar、Web2py、Falcon、DPark、Buildbot、Zerorpc、Bottle、webpy、Scrapy 3、python常用的web框架1:Django2:Tornado3:Bottle4:web.py 5:web2py 6:Quixote(豆瓣网就是基于该框架开发的) 4、python几种流行框架的比较 https://https://www.sodocs.net/doc/b718112856.html,/question/1047367767941211939.html 国内著名网基于Python开发的豆瓣、知乎、美团、咕咚网、快玩游戏。 5、Python常用的内置模块 multiprocessing (多进程模块) Queue(多线程编程)os (用于获取环境变量、路径,判断文件等)functools(包含一些常用的函数) collection(集合、常用数据结构算法)re(正则匹配,字符的查询替换等操作) 6、python中re模块的match()和search()函数的区别 re模块中match(pattern,string,[flags]),检查string的开头是否与patter匹配 re模块中search(pattern,string,[flags]),在string搜索pattern的第一个配置值 7、python2和python3的区别 Python2中使用ASCII 码作为默认编码方式导致string有两种类型str和unicode,Python3只支持unicode的string Python2中采用相对路径的import Python3采用的是绝对路径的方式进行import python3的缩进更加的严格python3采用的是print函数exec函数python2采用的是print 语句和exec语句

Python面试笔试题

第一题 以下两段代码,运行结束后的结果是什么?是否相同?原因是什么? 代码一 代码二 第二题 4G内存怎么读取一个5G的数据? 第三题 浅述深浅拷贝 答案 第一题 结果不相同 第一段结果为: [{'num':0},{'num':1},{'num':2},{'num':3},{'num':4},{'num':5},{'num':6},{'num':7},{'n um':8},{'num':9}] 第二段结果为: [{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'num':9},{'n um':9},{'num':9}]

字典是可变类型,这里l.append(a)相当于执行了浅拷贝,每改变一次a中num的值,所有a的值都将改变 第二题 实现方法有两种。 实现方法一: 方法一的实现思路是通过生成器,一次读取少量数据,标准答案是根据文件实现,这里给出的例子是咸鱼学习bobby老师的课程时记录的例子,不知道如何使用生成器完成这个需求的朋友可以参考: 实现方法二: 在linux系统下使用split可以分割文件,对于多行文件可以使用按行分割的方式,对于单行的大文件可以采用按文件大小分割。 按文件行数分割:split -l 300 large_file.log smallfile_prefix 按文件大小分割:split -b 10m large_file.log smallfile_prefix 之后再按文件读取即可。 第一题 下图中的打印结果分别是什么?

第二题 Python中静态方法、类方法、成员函数作用是什么? 第三题 说说对缺省参数的理解?* args是什么?** kwargs是什么? 答案 第一题 前三个是True,最后一个会报错。 具前三个为什么输出True,不了解的可以参考下图: 图来源于bobby老师的异步IO编程课件 最后一个为什么报错,我们可以先看下issubclass的用法: issubclass方法用于判断参数 class 是否是类型参数 classinfo 的子类 issubclass(class, classinfo) 参数

python面试题及答案

1. Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 引用计数增加的情况: 1,一个对象分配一个新名称 2,将其放入一个容器中(如列表、元组或字典) 引用计数减少的情况: 1,使用del语句对对象别名显示的销毁 2,引用超出作用域或被重新赋值 sys.getrefcount( )函数可以获得对象的当前引用计数 多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。 二、垃圾回收 1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。 2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。 三、内存池机制 Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。 2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。 2. 什么是lambda函数?它有什么好处? 答:lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数 lambda函数:首要用途是指点短小的回调函数 lambda [arguments]:expression >>> a=lambdax,y:x+y >>> a(3,11) 3. Python里面如何实现tuple和list的转换? 答:直接使用tuple和list函数就行了,type()可以判断对象的类型 4. 请写出一段Python代码实现删除一个list里面的重复元素 答: 1,使用set函数,set(list) 2,使用字典函数, >>>a=[1,2,4,2,4,5,6,5,7,8,9,0] >>> b={} >>>b=b.fromkeys(a) >>>c=list(b.keys()) >>> c 5. 编程用sort进行排序,然后从最后一个元素开始判断 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]

相关主题