Python面试宝典之基础篇-04
接着更新Python常见的面试题!
创新互联建站-专业网站定制、快速模板网站建设、高性价比庆城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式庆城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖庆城地区。费用合理售后完善,十多年实体公司更值得信赖。
题目016:写一个函数,给定矩阵的阶数n,输出一个螺旋式数字矩阵。
例如:n = 2,输出:
例如:n = 3,输出:
这个题目本身并不复杂,下面的代码仅供参考。
def show
_spiral_matrix(n):
matrix = [
[0]
* n for _ in range(n)]
row, col = 0, 0
num, direction = 1, 0
while num <= n ** 2:
if matrix[
row][
col] == 0:
matrix[
row][
col] = num
num += 1
if direction == 0:
if col
<
n
-
1
and
matrix[
row][
col +
1] ==
0:
col +=
1
else:
direction +=
1
elif
direction ==
1:
if
row <
n
-
1
and
matrix[
row +
1][
col] ==
0:
row +=
1
else:
direction +=
1
elif
direction ==
2:
if
col > 0 and matrix[
row][
col - 1] == 0:
col -= 1
else:
direction += 1
else:
if row > 0 and matrix[
row - 1][
col] == 0:
row -= 1
else:
direction += 1
direction %= 4
for x in matrix:
for y in x:
print(y, end='\t')
print()
题目017:阅读下面的代码,写出程序的运行结果。
items
=
[1,
2
,
3
,
4
]
print([i
for
i
in
items
if
i
>
2
])
print([i
for
i
in
items
if
i
%
2
])
print([(x,
y)
for
x,
y
in
zip('abcd',
(1,
2
,
3
,
4
,
5
))])
print({x:
f'item{x
**
2
}'
for
x
in
(2,
4
,
6
)})
print(len({x
for
x
in
'hello world'
if
x
not
in
'abcdefg'
}))
点评:生成式(推导式)属于Python的特色语法之一,几乎是面试必考内容。Python中通过生成式字面量语法,可以创建出列表、集合、字典。
[
3, 4]
[
1, 3]
[
('a', 1), ('b', 2), ('c', 3), ('d', 4)]
{2: 'item4', 4: 'item16', 6: 'item36'}
6
题目018:说出下面代码的运行结果。
class
Parent:
x =
1
class Child1(Parent):
pass
class Child2(Parent):
pass
print(Parent.x, Child1.x, Child2.x)
Child1.x =
2
print(Parent.x, Child1.x, Child2.x)
Parent.x =
3
print(Parent.x, Child1.x, Child2.x)
点评:运行上面的代码首先输出1 1 1,这一点大家应该没有什么疑问。接下来,通过Child1.x = 2给类Child1重新绑定了属性x并赋值为2,所以Child1.x会输出2,而Parent和Child2并不受影响。执行Parent.x = 3会重新给Parent类的x属性赋值为3,由于Child2的x属性继承自Parent,所以Child2.x的值也是3;而之前我们为Child1重新绑定了x属性,那么它的x属性值不会受到Parent.x = 3的影响,还是之前的值2。
1
1
1
1
2
1
3
2
3
题目19:说说你用过Python标准库中的哪些模块。
点评:Python标准库中的模块非常多,建议大家根据自己过往的项目经历来介绍你用过的标准库和三方库,因为这些内容应该是你最为熟悉的,经得起面试官深挖的。
题目20:__init__和__new__方法有什么区别?
Python中调用构造器创建对象属于两阶段构造过程,首先执行__new__方法获得保存对象所需的内存空间,再通过__init__执行对内存空间数据的填充(对象属性的初始化)。__new__方法的返回值是创建好的Python对象(的引用),而__init__方法的第一个参数就是这个对象(的引用),所以在__init__中可以完成对对象的初始化操作。__new__是类方法,它的第一个参数是类,__init__是对象方法,它的第一个参数是对象。
温馨提示:Python面试宝典会持续更新,从基础到项目实战的内容都会慢慢覆盖到。虽然每天只更新5个题目,但是每道题扩散出的信息量还是比较大的,希望对找工作的小伙伴所有帮助。
网页标题:Python面试宝典之基础篇-04
分享路径:http://myzitong.com/article/pssdph.html