分享几道你可能遇到的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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
python实现发送邮件功能
Jul 22 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
用python实现的线程池实例代码
Jan 06 Python
Python用5行代码写一个自定义简单二维码
Oct 21 Python
python对象与json相互转换的方法
May 07 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 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代码简化
2010/02/08 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
python实现查询IP地址所在地
2015/03/29 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
区域总监的岗位职责
2013/11/21 职场文书
宿舍违规检讨书
2014/01/12 职场文书
搞笑爱情保证书
2014/04/29 职场文书
烈士陵园观后感
2015/06/08 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS