专栏中心

EEPW首页 > 专栏 > Python主要面试题总结

Python主要面试题总结

发布人:only1 时间:2020-08-21 来源:工程师 发布文章

  现在编程界,可谓最火的语言就是Python,Python编程学习起来很费事,但是面试时也会有很多的问题,今天就让我们扣丁学堂为大家列举几点常见的问题。

  【题目:001】说说你对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中的元素计算出总共需要申请的内存空间的大小,一次申请完。


  【题目:002】|你调试python代码的方法有哪些?


  具体IDE都有调试,比如:IDLE,Eclipse+Pydev都可以设置断点调试。


  pdb模块也可以做调试。


  还有PyChecker和Pylint


  PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug,会对代码的复杂度和格式提出警告


  Pylint是另外一个工具可以进行codingstandard检查。


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


  http://rogerdudler.github.io/git-guide/index.zh.html#关于git简明指南


  http://www.zhihu.com/question/20070065#关于git的BBS


  http://www.techug.com/githug-for-designer#关于github的


  【题目:004】|什么是GIL?


  什么是GIL(GlobalInterpreterLock)全局解释器锁?简单地说就是:


  每一个interpreter进程,只能同时仅有一个线程来执行,获得相关的锁,存取相关的资源.


  那么很容易就会发现,如果一个interpreter进程只能有一个线程来执行,


  多线程的并发则成为不可能,即使这几个线程之间不存在资源的竞争.


  从理论上讲,我们要尽可能地使程序更加并行,能够充分利用多核的功能.


  【题目:005】|什么是元类(meta_class)?


  元类就是用来创建类的“东西”


  详情操作:http://blog.jobbole.com/21351/


  【题目:006】|对比一下dict中items与iteritems?


  >>>D={'a':1,'b':2,'c':3,'d':4}


  >>>D.items()#一次性取出所有


  [('a',1),('c',3),('b',2),('d',4)]


  >>>D.iteritems()#迭代对象,每次取出一个。用for循环遍历出来;


  <dictionary-itemiteratorobjectat0x00000000026243B8>


  >>>foriinD.iteritems():


  ...printi,


  ...


  ('a',1)('c',3)('b',2)('d',4)


  >>>fork,vinD.iteritems():


  ...printk,


  ...


  acbd


  总结:


  1.一般iteritems()迭代的办法比items()要快,特别是数据库比较大时。


  2.在Python3中一般取消前者函数


  【题目:007】|是否遇到过python的模块间循环引用的问题,如何避免它?


  这是代码结构设计的问题,模块依赖和类依赖


  如果老是觉得碰到循环引用,很可能是模块的分界线划错地方了。可能是把应该在一起的东西硬拆开了,可能是某些职责放错地方了,可能是应该抽象的东西没抽象


  总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工


  采取办法,从设计模式上来规避这个问题,比如:


  1.使用“__all__”白名单开放接口


  2.尽量避免import


  【题目:008】|有用过withstatement吗?它的好处是什么?


  >>>withopen('text.txt')asmyfile:


  ...whileTrue:


  ...line=myfile.readline()


  ...ifnotline:


  ...break


  ...printline,


  #with语句使用所谓的上下文管理器对代码块进行包装,允许上下文管理器实现一些设置和清理操作。


  #例如:文件可以作为上下文管理器使用,它们可以关闭自身作为清理的一部分。


  #NOTE:在PYTHON2.5中,需要使用from__future__importwith_statement进行with语句的导入


  【题目:009】|用Python生成指定长度的斐波那契数列


  deffibs(x):


  result=[0,1]


  forindexinrange(x-2):


  result.append(result[-2]+result[-1])


  returnresult


  if__name__=='__main__':


  num=input('Enteronenumber:')


  printfibs(num)


  想要学习Python或者想要进行Python培训的小伙伴就选择口碑良好的扣丁学堂进行学习吧,扣丁学堂不仅有专业的老师和与时俱进的课程体系,更有大量的Python视频教程供学员观看学习,想要学好Python高薪就业的小伙伴抓紧时间行动吧。扣丁学堂Python技术交流群:816572891。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

特斯拉擎天柱机器人的公开失败必须亲眼见证才会相信

ARM培训资料by 英蓓特

现代的MobED机器人荣获2026年CES最佳创新奖

迪拜首条空中出租车服务将于2026年开通

国际视野 2026-01-05

ARM_vs_DSP

资源下载 2007-03-22

pppoe server

escene 2005-09-27

Intersil公司2010年路演武汉站讲座1--通信电源解决方案

视频 2011-10-18

谷歌引领TPU创新,推动专利尖峰;博通、联发科据报道提升预留晶圆

国际视野 2026-01-05

CES 2026:LG CLOiD 机器人展示“零劳务之家”愿景

arm_kf

资源下载 2007-03-22

人工智能数据中心的需求远超铜线所能提供的

保时捷为消费者带来无线电动汽车充电

2026年11个令人惊叹的工程事件

Intersil公司2010年路演武汉站讲座4--用于仪器及工业应用的高性能模拟信号链产品

视频 2011-10-18

vxWorks下pppoe

escene 2005-09-28

arm_linux

资源下载 2007-03-22

Intersil公司2010年路演武汉站讲座3--高速有源有线 & 显示端口

据报道,NVIDIA和AMD计划从2026年1月1月开始涨价;GeForce RTX 5090 可能达到 5,000 美元

消费电子 2026-01-05

比亚迪超越特斯拉,中国重塑全球电动汽车竞赛格局

ARM710avD

资源下载 2007-03-22

Intersil公司2010年路演武汉站讲座2--ISim设计工具

视频 2011-10-18

Intersil公司2010年路演武汉站讲座6--无线基础设施应用解决方案

视频 2011-10-18
更多 培训课堂
更多 焦点
更多 视频

技术专区