温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python面试宝典之基础篇-04

发布时间:2020-08-19 02:59:03 阅读:251 作者:千锋Python唐小强 栏目:编程语言
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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

Python面试宝典之基础篇-04

题目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标准库中的模块非常多,建议大家根据自己过往的项目经历来介绍你用过的标准库和三方库,因为这些内容应该是你最为熟悉的,经得起面试官深挖的。

Python面试宝典之基础篇-04

题目20:__init__和__new__方法有什么区别?

Python中调用构造器创建对象属于两阶段构造过程,首先执行__new__方法获得保存对象所需的内存空间,再通过__init__执行对内存空间数据的填充(对象属性的初始化)。__new__方法的返回值是创建好的Python对象(的引用),而__init__方法的第一个参数就是这个对象(的引用),所以在__init__中可以完成对对象的初始化操作。__new__是类方法,它的第一个参数是类,__init__是对象方法,它的第一个参数是对象。

温馨提示:Python面试宝典会持续更新,从基础到项目实战的内容都会慢慢覆盖到。虽然每天只更新5个题目,但是每道题扩散出的信息量还是比较大的,希望对找工作的小伙伴所有帮助。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://blog.itpub.net/69923331/viewspace-2698059/

AI

开发者交流群×