-
最
常
见
p>
的
道
P
y
t
h
o
n
面
试
题
你
< br>能
答
对
多
少
附
带
答
案
TTA standardization
office
【
TTA 5AB- TTAK 08- TTA
2C
】
2018
年最常见的
36
道
Python
面试题你能答对多少?附带答案
p>
Q 1
:
Pyt
hon
有哪些特点和优点
?
作为一门编程入门语言,
Python
主要有以
下特点和优点:
?
?
?
?
?
?
可解释
具有动态特性
面向对象
简明简单
开源
具有强大的社区支持
当然,实际上<
/p>
Python
的优点远不止如此。
Q 2
:深拷贝和浅拷贝之间的区别是什么
?
答:深拷贝就是将一个对象拷贝到另一个对象中,这意
味着如果你对一个对象的拷贝做出改变
时,不会影响原对象。在
Python
中,我们使用函数
deepcopy()
执行深拷贝,导入模块
copy
,
如下所示:
1.
>>>importcopy
2.
>>>b=(a)
而浅拷贝则是将一个对象的引用拷贝到另一
个对象上,所以如果我们在拷贝中改动,会影响到原
对象。我们使用函数
function()
执行浅拷贝,使用如下所示:
>
>> b=(a)
复制代码
Q 3.
列表和元组之间的区别是
?
答:二者的主要区别是列表是可变的,而元组是不可变的。举个例子,如下所示:
1.
>>>mylist=[1,3,3]
2.
>>>mylist[1]=2
3.
>>>mytuple=(1,3,3)
4.
>>>mytuple[1]=2
5.
Traceback(mostrecentcalllast):
6.
File
7.
mytuple[1]=2
8.
会出现以下报错:
1.
TypeError:
‘
tuple
’
2.
objectdoesnotsupportitemassignment
从
Q4
到
Q20
都是针对新手的
Python
面试基础试题,
不过有经验的人也可以看看这些问题,复
习一下基础概念。
Q 4.
解释一下
Python
p>
中的三元运算子
不像
C++
,我们在
Python
中没
有
:
,但我们有这个:
1.
[ontrue]if[expression]else[onfalse]
如果表达式为
True
,就执行
[on true]
中的语句。否则,就执行
[on
false]
中的语句。
下面是使用它的方法:
1.
>>>a,b=2,3
2.
Python
Flask 让用户查看和修改会话内容。它会记录从一个请求到另一个请求的信 在 <
br>Python <
br>带参数时,返回参数的属性、方法列表。 <
br>,
>>>min=aifa
3.
>>>min
运行结果:
1.
2
2.
3.
>>>print(
运行结果:
1.
Hi
2.
Q
5.
在
Python
中如何实现多线
程
?
一个线程就是一个轻量级进程,
多线程能让我们一次执行多个线程。我们都知道,
Python
是多线
程语言,其内置有多线程工具包。
中的
GIL(
全局解
释器锁
)
确保一次执行单个线程。一个线程保存
GIL
并在将其传递给下个
线程之前执行一些操作,这
会让我们产生并行运行的错觉。但实际上,只是线程在
CPU
上
轮流运
行。当然,所有的传递会增加程序执行的内存压力。
Q 6.
解释一下
Python
p>
中的继承
当一个类继承自另一个类,它就
被称为一个子类
/
派生类,继承自父类
/
基类
/
超类。它会继承
/
获取
所有类成员
(
属性和方法
)
。
<
/p>
继承能让我们重新使用代码,也能更容易的创建和维护应用。
Py
thon
支持如下种类的继承:
?
?
?
?
?
?
单继承:一个类继承自单个基类
多继承:一个类继承自多个基类
多级继承:一个类继承自单个基类,后者则继承自另一个基类
分层继承:多个类继承自单个基类
混合继承:两种或多种类型继承的混合
Q 7.
什么是
Flask?
Flask
是
Python
编
写的一款轻量级
Web
应用框架。其
WSGI
工具箱采用
Werkzeug
,模板引擎
则使用
Jinja2
p>
。
Flask
使用
BSD
授权。其中两个环境依赖是
Werkzeug
和
jinja2
,这意味着它不
需要依赖外部库。正因如此,我们将其称为轻量级框架。
会话使用签名
cookie
息。不过,要想
修改会话,用户必须有密钥。
Q 8.
Python
中是如何管理内存的
?
Python
有一个私有堆空间
来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释
器在管理它。但是
有了核心
API
后,我们可以访问一些工具。
内存管理器控制内存分配。
另外,内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间。
Q 9.
解释
Python
p>
中的
help()
和
dir()
函数
Help()
p>
函数是一个内置函数,用于查看函数或模块用途的详细说明:
1.
>>>importcopy
2.
>>>help
运行结果为:
1.
Helponfunctioncopyinmodulecopy:
2.
copy(x)
3.
Shallowcopyope
rationonarbitraryPythonobjects.
4.
Seethemodule
p>
’
s__doc__stringformoreinfo.
p>
Dir()
函数也是
Python
内置函数,
dir()
函数不带参数时,返回
当前范围内的变量、方法和定义的
类型列表
;
以下实例展示了
dir
的使用方法:
1.
>>>dir
运行结果为:
1.
[
‘<
/p>
__annotations__
’
,<
/p>
‘
__call__
’
‘
__class__
’
p>
,
‘
__closure__
’
,
‘
__code__<
/p>
’
,
‘
__de
faults__
’
,
‘
__delattr__
’
,
‘
__dict__
’
,
‘
__dir__
’
,<
/p>
‘
__doc__
’
,
‘
__eq__
’
,
‘
__format__
’
,
‘
__ge__
< br>’
,
‘
__get__
’
,
‘
__getat
tribute__
’
,
‘
__globals__
’
,
‘
__gt__
’
,
‘
__hash__
’
,<
/p>
‘
__init__
’
< br>,
‘
__init_subclass__
’
,
‘
__kwdefau
lts__
’
,
‘
__le__
’
,
‘
__lt__
’
,
‘
__module__
’
,
< br>‘
__name__
’
,
‘
__ne__
’
,
‘
__new__
’
< br>,
‘
__qualname__
’
,
‘
__reduce__
’
,
‘
__reduc
e_ex__
’
,
‘
< br>__repr__
’
,
‘
__setattr__
’
,
‘
__sizeof__
’
,
‘
__str__
’
< br>,
‘
__subclasshook__
’
]
Q 10.
当退出<
/p>
Python
时,是否释放全部内存
?<
/p>
答案是
No
。
循环引用其它对象或引用自全局命名空间的对象的模块,在
Python
退出时并非完全
释放。
另外
,也不会释放
C
库保留的内存部分。
Q 11.
什么是猴子补丁
?
在运行期间动态修改一个类或模块。
1.
>>>classA:
2.
deffunc(self):
3.
print(
4.
>>>defmonkey(self):
5.
print
6.
>>>=monkey
7.
>>>a=()
8.
>>>()
运行结果为:
1.
Hi,Monkey
Q 12.
Python
中的字典是什么
?
p>
字典是
C++
和
J
ava
等编程语言中所没有的东西,它具有键值对。
1.
>>>roots={25:5,16:4,9:3,4:2,1:1}
2.
>>>type(roots)
3.
4.
>>>roots[9]
运行结果为:
1.
3
2.
字典是不可变的,我们也能用一个推导式来创建它。
1.
>>>roots={x**2:xforxinrange(5,0,-1)}
2.
>>>roots
运行结果:
1.
{25:5,16:4,9:3,4:2,1:1}
Q
13.
请解释使用
*args
和
p>
**kwargs
的含义
当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用
*args
。
1.
>>>deffunc(*args):
2.
foriinargs:
3.
print(i)
4.
>>>func(3,2,1,4,7)
运行结果为:
1.
3
2.
3.
2
4.
5.
1
6.
7.
4
8.
9.
7
10.
在我们不知道该传递多少关键
字参数时,使用
**kwargs
来收集关键字参数。
1.
>>>deffunc(**kwargs):
2.
foriinkwargs:
3.
print(i,kwargs[i])
4.
>>>func(a=1,b=2,c=7)
运行结果为:
1.
2.
3.
?
Q
14.
请写一个
Python
逻辑,
计算一个文件中的大写字母数量
1.
>>>importos
2.
>>>('C:UserslifeiDesktop')
3.
>>>withopen('')astoday:
4.
count=0
5.
foriin():
6.
if():
7.
count+=1
8.
print(count)
9.
运行结果:
1.
26
2.
Q
15.
什么是负索引
?
我们先创建这样一个列表:
1.
>>>mylist=[0,1,2,3,4,5,6,7,8]
负索引和正索引不同,它是从右边开始检索。
1.
>>>mylist[-3]
运行结果:
1.
6
2.
它也能用于列表中的切片:
1.
>>>mylist[-6:-1]
结果:
1.
[3,4,5,6,7]
Q 16.
如何以就地操作方式打乱一个列表的元素
?
为了达到这个目的,我们从
random
模块中导入<
/p>
shuffle()
函数。
1.
>>>fromrandomimportshuffle
2.
>>>shuffle(mylist)
3.
>>>mylist
运行结果:
1.
[3,4,8,0,5,7,6,2,1]
Q 17.
p>
解释
Python
中的
join()
和
split()
函
数
Join()
能让我们将指定字符
添加至字符串中。
1.
>>>','.join('12345')
运行结果:
1.
‘
1,
2,3,4,5
’
2.
Sp
lit()
能让我们用指定字符分割字符串。
1.
>>>'1,2,3,4,5'.split(',')
运行结果:
1.
[
‘<
/p>
1
’
,
‘
2
’
,
‘
3
’
,
‘
4
’
,
‘
5
’
]
Q 18.
Python
区分大小写吗
?
如果能区分像
myname
和
Myname
这样的标识符,那么它就是区分大小写的。也就是说它很在
乎大写和小写。我们可以用
Python
试一
试:
1.
>>>myname='Ayushi'
2.
>>>Myname
3.
Traceback(mostrecentcalllast):
4.
File
运行结果:
1.
MynameNameErro
r:name
‘
Myname
’
2.
isnotdefined
可以看到,这里出现了
NameError
,所以
Python
是区分大小写的。
Q 19. Python
中的标识符长度能有多长
?
在
Python
中,标识符可以是任意长度。此
外,我们在命名标识符时还必须遵守以下规则:
1.
只能以下划线或者
A-Z/a-z
中的字母开头
2.
其余部分可以使用
A-Z/a-z/0-9
3.
区分大小写
4.
关键字不能作为标识符,
Python
中共有如下关键字:
5.
Q
20.
怎么移除一个字符串中的前导空格
?
字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格。我们使用方法
p>
Istrip()
可以
将它从字符串中移除
。
1.
>>>'Ayushi'.lstrip()
结果:
1.
‘
Ayushi
’
2.
可以看到,该字符串既有前导字符,也有后缀字符,调用
Istrip()
去除了前导空格。如果我们想去
除后缀空格,就用
rstrip()
方法。
1.
>>>'Ayushi'.rstrip()
结果:
1.
‘
Ayushi
’
2.
从
Q
21
到
Q 35
是为有
Python
经验者准备的进阶版
Python
面试题。
Q 21.
怎样将字符串转换为小写
?
-
-
-
-
-
-
-
-
-
上一篇:PEP小学英语四年级上册知识点归纳
下一篇:紫的反义词是什么