分享几道你可能遇到的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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Python 3.8 新功能全解
Jul 25 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python使用Matlab命令过程解析
Jun 04 Python
python常量折叠基础知识点讲解
Feb 28 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+java实现自动新闻滚动窗口
2006/10/09 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
jquery 事件对象属性小结
2010/04/27 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python ftp上传文件
2016/02/13 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python opencv之SIFT算法示例
2018/02/24 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
新学期决心书
2014/03/11 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
转让协议书
2015/01/27 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers