分享几道你可能遇到的python面试题


Posted in Python onJuly 24, 2017

本文主要给大家介绍的是关于最近在面试中遇到的几个python面试题,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:

一、生成斐波那契数列并取前10项

def func(m):
 n,a,b = 0,1,1
 while n < m:
 yield a
 a,b = b,a+b
 n += 1
for one in func(10):
 print one

这个可以说是一道常见的简单算法题了,关键点就是理解a,b=b,a+b以及yield的作用。

二、扩展一个列表,列表中的元素可能也包含列表

def myextend(alist):
 tmp = []
 for one in alist:
  if isinstance(one,list):
   tmp.extend(myextend(one))
  else:
   tmp.append(one)
 return tmp
t = [1,2,5,[3,[],5,2,[57]],90]
print t
print myextend(t)

考察递归调用的思想。

三、有如下代码,请写出输出

def test(x,l=[]):
 for o in range(x):
  l.append(o)
 print l
test(3)
test(1,[3,2,1])
test(3)

输入如下:

[0,1,2]
[3,2,1,0]
[0,1,2,0,1,2]

可变类型作为参数在不显示传递参数时,每次函数调用时候都是共用的;如果传递了参数(比如第二种)则不会互相影响。

四、已知某列表中包含重复数据,保持列表中元素第一次出现的顺序并去重,要求复杂度为O(n)。

def fun(alist):
 result = []
 temp = set()
 for o in alist:
  if o not in temp:
   result.append(o)
   temp.add(o)
 return result

考察列表、集合等常见操作的复杂度。

五、已知如下函数,请写出输出,并写出正确写法:

z = [lambda x:x*i for i in range(3)]
x = [o(2) for o in z]
print x

输出为[4,4,4]

这里主要考察python中闭包、返回值为函数时候的知识点。由于lambda函数共用了i变量,当调用时候i已经变成了2,所以输出都是4。

改正:

def func():
 def m(x):
  def n(y):
   return x * y
  return n
 return [f(one) for one in range(3)]
z = func()
x = [o(2) for o in z]
print x

输出[0,2,4]

六、创建一个类,并输出某个属性。如果这个属性存在则输出值,否则输出这个属性名的字符串

class Mycls(object):
 a = 0
 def __getattr__(self,name):
  print name
z = Mycls()
print z.a,z.b

输出为0,b。

主要考察python的反射机制,以及类相关的__getattr__方法。

注意: __getattr__方法和__getattribute__方法的区别,前者只有在属性不存在时候调用,返回一个值或者引发异常。而后者是每次都会被调用的。

另外可以看看getattr() ,hasattr()这种内置函数。

简答题

  • 简述py2和py3的区别
  • python的垃圾回收机制
  • python中多线程的方法,局限,以及有什么其他方式进行并发处理
  • 简述epoll、select、poll三种模型

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python读取注册表中值的方法
Apr 08 Python
Python 的描述符 descriptor详解
Feb 27 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python实现抖音视频批量下载
Jun 20 Python
关于python写入文件自动换行的问题
Jun 23 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
Python 编程速成(推荐)
Apr 15 Python
python实现大文件分割与合并
Jul 22 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
python Timer 类使用介绍
Dec 28 Python
Python读取和写入Excel数据
Apr 20 Python
python 判断是否为正小数和正整数的实例
Jul 23 #Python
python WindowsError的错误代码详解
Jul 23 #Python
python实现发送邮件功能
Jul 22 #Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 #Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 #Python
安装Python的教程-Windows
Jul 22 #Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 #Python
You might like
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
js实现文字截断功能
2016/09/14 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python操作gmail实例
2015/01/14 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
简单实现python数独游戏
2018/03/30 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
会展中心部门工作职责
2013/11/27 职场文书
老同学聚会感言
2014/02/23 职场文书
班风口号
2014/06/18 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
分享几种python 变量合并方法
2022/03/20 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js