900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python面试宝典之基础篇-04

Python面试宝典之基础篇-04

时间:2018-09-01 15:05:39

相关推荐

Python面试宝典之基础篇-04

接着更新Python常见的面试题!

题目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个题目,但是每道题扩散出的信息量还是比较大的,希望对找工作的小伙伴所有帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。