Cet article vous apporte un résumé des questions et réponses d'entretien Python les plus courantes. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. . Aide.
Les débutants en Python doivent être familiers avec les bases de Python avant de rechercher un emploi en programmation Python. L'équipe technique du site de programmation DataFlair a partagé une collection des questions d'entretien Python les plus courantes en 2018. Il existe à la fois des questions d'entretien Python de base et des questions de version avancée pour vous guider dans la préparation de l'entretien. Les questions sont toutes accompagnées de réponses. Les questions d'entretien incluent le codage, les structures de données, les scripts et d'autres sujets. Cet article est le précédent.
Articles connexes recommandés : " Résumé des questions d'entretien Python en 2020 (dernières) "
Q 1 : Quels sont les fonctionnalités et avantages de Python ?
En tant que langage de programmation d'introduction, Python présente principalement les fonctionnalités et avantages suivants :
Interprétable
Fonctionnalités dynamiques
Orienté objet
Concis et simple
Open source
Bénéficie d'un fort soutien de la communauté
Bien sûr, en fait, les avantages de Python vont au-delà de cela.
Q 2 : Quelle est la différence entre la copie profonde et la copie superficielle ?
Réponse : La copie approfondie consiste à copier un objet vers un autre objet, ce qui signifie que si vous apportez des modifications à la copie d'un objet, cela n'affectera pas l'objet d'origine. En Python, nous utilisons la fonction deepcopy() pour effectuer une copie approfondie et importer la copie du module, comme indiqué ci-dessous :
>>> import copy >>> b=copy.deepcopy(a)
tandis que la copie superficielle consiste à copier la référence d'un objet Copié sur un autre objet, donc si nous le modifions pendant la copie, cela affectera l'objet d'origine. Nous utilisons la fonction function() pour effectuer une copie superficielle, en utilisant ce qui suit :
>>> b=copy.copy(a)
Q 3. Quelle est la différence entre une liste et un tuple ?
Réponse : La principale différence entre les deux est que les listes sont mutables, tandis que les tuples sont immuables. Par exemple, comme indiqué ci-dessous :
>>> mylist=[1,3,3] >>> mylist[1]=2 >>> mytuple=(1,3,3) >>> mytuple[1]=2 Traceback (most recent call last): File "<pyshell#97>", line 1, in <module> mytuple[1]=2
L'erreur suivante apparaîtra :
TypeError: ‘tuple’ object does not support item assignment
Pour plus d'informations sur les listes et les tuples, vous pouvez vérifier ici :
https://data-flair.training/blogs/python-tuples-vs-lists/
Du T4 au T20, ce sont des questions d'entretien Python de base pour les novices, mais pour ceux qui ont de l'expérience Les personnes intéressées peuvent également se pencher sur ces questions pour revoir les concepts de base.
Q 4. Expliquez l'opérateur ternaire en Python
Contrairement au C++, nous n'avons pas ?: en Python, mais nous avons ceci :
[on true] if [expression] else [on false]
Si l'expression est vraie, exécutez l'instruction dans [on true]. Sinon, exécutez l'instruction dans [on false].
Voici comment l'utiliser :
>>> a,b=2,3 >>> min=a if a<b else b >>> min
Résultat de l'exécution :
2 >>> print("Hi") if a<b else print("Bye")
Résultat de l'exécution :
Hi
Q 5. Comment implémenter le multi-threading en Python ?
Un thread est un processus léger. Le multi-threading nous permet d'exécuter plusieurs threads à la fois. Nous savons tous que Python est un langage multithread avec une boîte à outils multithread intégrée.
Le GIL (Global Interpreter Lock) en Python garantit l'exécution d'un seul thread à la fois. Un thread enregistre le GIL et effectue certaines opérations avant de le transmettre au thread suivant, ce qui nous donne l'illusion de fonctionner en parallèle. Mais en réalité, ce ne sont que des threads qui s'exécutent à tour de rôle sur le processeur. Bien entendu, tout passage augmente la pression de la mémoire sur l’exécution du programme.
Q 6. Expliquez l'héritage en Python
Lorsqu'une classe hérite d'une autre classe, elle est appelée une sous-classe/classe dérivée, qui hérite de la classe parent/classe de base /super classe. Il hérite/obtient tous les membres de la classe (propriétés et méthodes).
L'héritage nous permet de réutiliser le code et de faciliter la création et la maintenance d'applications. Python prend en charge les types d'héritage suivants :
Héritage unique : une classe hérite d'une seule classe de base
Héritage multiple : une classe hérite de plusieurs classes de base
Multi-niveau héritage : une classe hérite d'une seule classe de base, qui à son tour hérite d'une autre classe de base
Héritage hiérarchique : plusieurs classes héritent d'une seule classe de base
Héritage mixte : deux types ou plus Mélange Héritage
Pour plus d'informations sur l'héritage, voir :
https://data-flair.training/blogs/python-inheritance/
Q 7. Quoi 'est-ce que Flask ?
Flask est un framework d'application Web léger écrit en Python. Sa boîte à outils WSGI utilise Werkzeug et son moteur de modèles utilise Jinja2. Flask est sous licence BSD. Deux des dépendances de l'environnement sont Werkzeug et jinja2, ce qui signifie qu'il n'a pas besoin de s'appuyer sur des bibliothèques externes. Pour cette raison, nous l’appelons un framework léger.
Les sessions Flask utilisent des cookies signés pour permettre aux utilisateurs d'afficher et de modifier le contenu de la session. Il enregistre les informations d'une requête à une autre. Cependant, pour modifier la session, l'utilisateur doit disposer du secret Flask.secret_key.
Q 8. Comment la mémoire est-elle gérée en Python ?
Python 有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它。但是有了核心 API 后,我们可以访问一些工具。Python 内存管理器控制内存分配。
另外,内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间。
Q 9. 解释 Python 中的 help() 和 dir() 函数
Help() 函数是一个内置函数,用于查看函数或模块用途的详细说明:
>>> import copy >>> help(copy.copy)
运行结果为:
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 内置函数,dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
以下实例展示了 dir 的使用方法:
>>> dir(copy.copy)
运行结果为:
[‘__annotations__’, ‘__call__’, ‘__class__’, ‘__closure__’, ‘__code__’, ‘__defaults__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__get__’, ‘__getattribute__’, ‘__globals__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__kwdefaults__’, ‘__le__’, ‘__lt__’, ‘__module__’, ‘__name__’, ‘__ne__’, ‘__new__’, ‘__qualname__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’]
Q 10. 当退出 Python 时,是否释放全部内存?
答案是 No。循环引用其它对象或引用自全局命名空间的对象的模块,在 Python 退出时并非完全释放。
另外,也不会释放 C 库保留的内存部分。
Q 11. 什么是猴子补丁?
在运行期间动态修改一个类或模块。
>>> class A: def func(self): print("Hi") >>> def monkey(self): print "Hi, monkey" >>> m.A.func = monkey >>> a = m.A() >>> a.func()
运行结果为:
Hi, Monkey
Q 12. Python 中的字典是什么?
字典是 C++ 和 Java 等编程语言中所没有的东西,它具有键值对。
>>> roots={25:5,16:4,9:3,4:2,1:1} >>> type(roots) <class 'dict'> >>> roots[9]
运行结果为:
3
字典是不可变的,我们也能用一个推导式来创建它。
>>> roots={x**2:x for x in range(5,0,-1)} >>> roots
运行结果:
{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}
Q 13. 请解释使用 *args 和 **kwargs 的含义
当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args。
>>> def func(*args): for i in args: print(i) >>> func(3,2,1,4,7)
运行结果为:
3 2 1 4 7
在我们不知道该传递多少关键字参数时,使用**kwargs来收集关键字参数。
>>> def func(**kwargs): for i in kwargs: print(i,kwargs[i]) >>> func(a=1,b=2,c=7)
运行结果为:
a.1 b.2 c.7
Q 14. 请写一个Python逻辑,计算一个文件中的大写字母数量
>>> import os >>> os.chdir('C:\Users\lifei\Desktop') >>> with open('Today.txt') as today: count=0 for i in today.read(): if i.isupper(): count+=1
运行结果:
26
Q 15. 什么是负索引?
我们先创建这样一个列表:
>>> mylist=[0,1,2,3,4,5,6,7,8]
负索引和正索引不同,它是从右边开始检索。
>>> mylist[-3]
运行结果:
6
它也能用于列表中的切片:
>>> mylist[-6:-1]
结果:
[3, 4, 5, 6, 7]
Q 16. 如何以就地操作方式打乱一个列表的元素?
为了达到这个目的,我们从random模块中导入shuffle()函数。
>>> from random import shuffle >>> shuffle(mylist) >>> mylist
运行结果:
[3, 4, 8, 0, 5, 7, 6, 2, 1]
Q 17. 解释Python中的join()和split()函数
Join()能让我们将指定字符添加至字符串中。 >>> ','.join('12345')
运行结果:
‘1,2,3,4,5’
Split()能让我们用指定字符分割字符串。
>>> '1,2,3,4,5'.split(',')
运行结果:
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
Q 18. Python区分大小写吗?
如果能区分像myname和Myname这样的标识符,那么它就是区分大小写的。也就是说它很在乎大写和小写。我们可以用Python试一试:
>>> myname='Ayushi' >>> Myname Traceback (most recent call last): File "<pyshell#3>", line 1, in <module>
运行结果:
Myname NameError: name ‘Myname’ is not defined
可以看到,这里出现了NameError,所以Python是区分大小写的。
Q 19. Python中的标识符长度能有多长?
在Python中,标识符可以是任意长度。此外,我们在命名标识符时还必须遵守以下规则:
只能以下划线或者 A-Z/a-z 中的字母开头
其余部分可以使用 A-Z/a-z/0-9
区分大小写
关键字不能作为标识符,Python中共有如下关键字:
Q 20. 怎么移除一个字符串中的前导空格?
字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格。我们使用方法Istrip()可以将它从字符串中移除。
>>> ' Ayushi '.lstrip()
结果:
‘Ayushi ‘
可以看到,该字符串既有前导字符,也有后缀字符,调用Istrip()去除了前导空格。如果我们想去除后缀空格,就用rstrip()方法。
>>> ' Ayushi '.rstrip()
结果:
‘ Ayushi’
从Q 21到Q 35是为有Python经验者准备的进阶版Python面试题。
Q 21. 怎样将字符串转换为小写?
我们使用lower()方法。
>>> 'AyuShi'.lower()
结果:
‘ayushi’
使用upper()方法可以将其转换为大写。
>>> 'AyuShi'.upper()
结果:
‘AYUSHI’
另外,使用isupper()和islower()方法检查字符串是否全为大写或小写。
>>> 'AyuShi'.isupper() False >>> 'AYUSHI'.isupper() True >>> 'ayushi'.islower() True >>> '@yu$hi'.islower() True >>> '@YU$HI'.isupper() True
那么,像@和$这样的字符既满足大写也满足小写。
Istitle()能告诉我们一个字符串是否为标题格式。
>>> 'The Corpse Bride'.istitle() True
Q 22. Python中的pass语句是什么?
在用Python写代码时,有时可能还没想好函数怎么写,只写了函数声明,但为了保证语法正确,必须输入一些东西,在这种情况下,我们会使用pass语句。
>>> def func(*args): pass >>>
同样,break语句能让我们跳出循环。
>>> for i in range(7): if i==3: break print(i)
结果:
0 1 2
最后,continue语句能让我们跳到下个循环。
>>> for i in range(7): if i==3: continue print(i)
结果:
0 1 2 4 5 6
Q 23. Python中的闭包是什么?
当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包。其意义就是会记录这个值。
>>> def A(x): def B(): print(x) return B >>> A(7)()
结果:
17
更多关于闭包的知识,请参看这里:
https://data-flair.training/blogs/python-closure/
**Q 24. 解释一下Python中的//,%和 ** 运算符**
//运算符执行地板除法(向下取整除),它会返回整除结果的整数部分。 >>> 7//2 3
这里整除后会返回3.5。
同样地,执行取幂运算。ab会返回a的b次方。
>>> 2**10 1024
最后,%执行取模运算,返回除法的余数。
>>> 13%7 6 >>> 3.5%1.5 0.5
Q 24. 在Python中有多少种运算符?解释一下算数运算符。
在Python中,我们有7种运算符:算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
我们有7个算术运算符,能让我们对数值进行算术运算:
1.加号(+),将两个值相加
>>> 7+8 15
2.减号(-),将第一个值减去第二个值
>>> 7-8 -1
3.乘号(*),将两个值相乘
>>> 7*8 56
4.除号(/),用第二个值除以第一个值
>>> 7/8 0.875 >>> 1/1 1.0
5.向下取整除、取模和取幂运算,参见上个问题。
Q 25. 解释一下Python中的关系运算符
关系运算符用于比较两个值。
1.小于号(<),如果左边的值较小,则返回True。
>>> 'hi'<'Hi' False
2.大于号(>),如果左边的值较大,则返回True。
>>> 1.1+2.2>3.3 True
3.小于等于号(<=),如果左边的值小于或等于右边的值,则返回Ture。
>>> 3.0<=3 True
4.大于等于号(>=),如果左边的值大于或等于右边的值,则返回True。
>>> True>=False True
等于号(==),如果符号两边的值相等,则返回True。
>>> {1,3,2,2}=={1,2,3} True
不等于号(!=),如果符号两边的值不相等,则返回True。
>>> True!=0.1 True >>> False!=0.1 True
Q 26. 解释一下Python中的赋值运算符
这在Python面试中是个重要的面试问题。
我们将所有的算术运算符和赋值符号放在一起展示:
>>> a=7 >>> a+=1 >>> a 8 >>> a-=1 >>> a 7 >>> a*=2 >>> a 14 >>> a/=2 >>> a 7.0 >>> a**=2 >>> a 49 >>> a//=3 >>> a 16.0 >>> a%=4 >>> a 0.0
Q 27. 解释一下Python中的逻辑运算符
Python中有3个逻辑运算符:and,or,not。
>>> False and True False >>> 7<7 or True True >>> not 2==2 False
Q 28. 解释一下Python中的成员运算符
通过成员运算符‘in’和‘not in’,我们可以确认一个值是否是另一个值的成员。
>>> 'me' in 'disappointment' True >>> 'us' not in 'disappointment' True
Q 29. 解释一下Python中的身份运算符
这也是一个在Python面试中常问的问题。
通过身份运算符‘is’和‘is not’,我们可以确认两个值是否相同。
>>> 10 is '10' False >>> True is not False True
Q 30. 讲讲Python中的位运算符
该运算符按二进制位对值进行操作。
与(&),按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
>>> 0b110 & 0b010 2
2.或(|),按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
>>> 3|2 3
3.异或(^),按位异或运算符:当两对应的二进位相异时,结果为1
>>> 3^2 1
4.取反(~),按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
>>> ~2 -3
5.左位移(<<),运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0
>>> 1<<2 4
6.右位移(>>),把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
>>> 4>>2 1
更多关于运算符的知识,参考这里:
https://data-flair.training/blogs/python-operators/
Q 31. 在Python中如何使用多进制数字?
我们在Python中,除十进制外还可以使用二进制、八进制和十六进制。
二进制数字由0和1组成,我们使用 0b 或 0B 前缀表示二进制数。
>>> int(0b1010) 10
2.使用bin()函数将一个数字转换为它的二进制形式。
>>> bin(0xf) ‘0b1111’
3.八进制数由数字 0-7 组成,用前缀 0o 或 0O 表示 8 进制数。
>>> oct(8) ‘0o10’
4.十六进数由数字 0-15 组成,用前缀 0x 或者 0X 表示 16 进制数。
>>> hex(16) ‘0x10’ >>> hex(15) ‘0xf’
Q 32. 怎样获取字典中所有键的列表?
使用 keys() 获取字典中的所有键
>>> mydict={'a':1,'b':2,'c':3,'e':5} >>> mydict.keys() dict_keys(['a', 'b', 'c', 'e'])
Q 33. 为何不建议以下划线作为标识符的开头
因为Python并没有私有变量的概念,所以约定速成以下划线为开头来声明一个变量为私有。所以如果你不想让变量私有,就不要使用下划线开头。
Q 34. 怎样声明多个变量并赋值?
一共有两种方式:
>>> a,b,c=3,4,5 #This assigns 3, 4, and 5 to a, b, and c respectively >>> a=b=c=3 #This assigns 3 to a, b, and c
Q 35. 元组的解封装是什么?
首先我们来看解封装:
>>> mytuple=3,4,5 >>> mytuple (3, 4, 5)
这将 3,4,5 封装到元组 mytuple 中。
现在我们将这些值解封装到变量 x,y,z 中:
>>> x,y,z=mytuple >>> x+y+z
得到结果12.
相关学习推荐:python视频教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!