每年的 3-4 月份是跳槽的高峰期, 无论是应聘 Python web 开发, 爬虫工程师, 或是数据分析, 还是自动化运维, 都涉及到一些基础的知识! 我挑了一些 Python 的基础面试题, 看看你能不能的答上来, 也许面试的同学用的着!
问题 1: 请问如何修改以下 Python 代码, 使得下面的代码调用类 A 的 show 方法?
答: 这道题的考点是类继承, 只要通过__class__ 方法指定类对象就可以了. 补充的代码如下:
问题 2: 请问如何修改以下 Python 代码, 使得代码能够运行?
答: 此题考察得是方法对象, 为了能让对象实例能被直接调用, 需要实现 __call__ 方法, 补充代码如下:
问题 3: 下面这段代码的输出是什么?
答:
此题考察的是 new 和 init 的用法, 使用 __new__ 方法, 可以决定返回那个对象, 也就是创建对象之前调用的, 这个常见于于设计模式的单例, 工厂模式.__init__ 是创建对象是调用的.
问题 4: 下面这段代码输出什么?
答:
此题考察的是列表和字典的生成.
问题 5: 下面这段代码输出什么?
答:
此题考察全局变量和局部变量. num 不是个全局变量, 所以每个函数都得到了自己的 num 拷贝, 如果你想修改 num , 则必须用 global 关键字声明. 比如下面这样
问题 6: 如何使用一行代码交换两个变量值?
答:
问题 7: 如何添加代码, 使得没有定义的方法都调用 mydefault 方法?
答:
此题的考的是 Python 的默认方法, 只有当没有定义的方法调用时, 才会调用方法 __getattr__. 当 fn1 方法传入参数时, 我们可以给 mydefault 方法增加一个 *args 不定参数来兼容.
问题 8: 一个包里有三个模块, mod1.py , mod2.py , mod3.py , 但使用 from demopack import * 导入模块时, 如何保证只有 mod1 , mod3 被导入了.
答: 在包中增加 __init__.py 文件, 并在文件中增加:
问题 9: 写一个函数, 接收整数参数 n , 返回一个函数, 函数返回 n 和参数的积.
答:
问题 10: 请问下面的代码有什么隐患?
答: 由于变量 str 是个不可变对象, 每次迭代, python 都会生成新的 str 对象来存储新的字符串, num 越大, 创建的 str 对象越多, 内存消耗越大.
来源: http://developer.51cto.com/art/201805/571944.htm