python面试题总结

文化

说说你对zen of python的理解,你有什么办法看到它:

import this

你在github上都fork过哪些python库,列举一下你经常使用的,每个库用一句话描述下其功能

说说你对pythonic的看法,尝试解决下面的小问题:

交换两个变量值
a,b = b,a

去掉list中的重复元素
old_list = [1,1,1,3,4]
new_list = list(set(old_list))

翻转一个字符串
s = 'abcde'
ss = s[::-1]

用两个元素之间有对应关系的list构造一个dict
names = ['jianpx', 'yue']
ages = [23, 40]
m = dict(zip(names,ages))

将数量较多的字符串相连,如何效率较高,为什么
fruits = ['apple', 'banana']
result = ''.join(fruits)

python字符串效率问题之一就是在连接字符串的时候使用‘+’号,例如 s = ‘s1’ + ‘s2’ + ‘s3’ + ...+’sN’,总共将N个字符串连接起来, 但是使用+号的话,python需要申请N-1次内存空间, 然后进行字符串拷贝。原因是字符串对象PyStringObject在python当中是不可变 对象,所以每当需要合并两个字符串的时候,就要重新申请一个新的内存空间 (大小为两个字符串长度之和)来给这个合并之后的新字符串,然后进行拷贝。 所以用+号效率非常低。建议在连接字符串的时候使用字符串本身的方法 join(list),这个方法能提高效率,原因是它只是申请了一次内存空间, 因为它可以遍历list中的元素计算出总共需要申请的内存空间的大小,一次申请完。

你调试python代码的方法有哪些

基础

什么是GIL

什么是元类(meta_class)

对比一下dict中 items iteritems

高级

是否遇到过python的模块间循环引用的问题,如何避免它

有用过with statement吗?它的好处是什么?

说说decorator的用法和它的应用场景,如果可以的话,写一个decorator

inspect模块有什么用

写一个类,并让它尽可能多的支持操作符

说一说你见过比较cool的python实现

Table Of Contents

Previous topic

计算KDE桌面的二进制时钟

Next topic

Ubuntu问题及技巧整理

This Page