电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

python面试题精选--精选文档

44页
  • 卖家[上传人]:大米
  • 文档编号:472357481
  • 上传时间:2022-10-01
  • 文档格式:DOC
  • 文档大小:185KB
  • / 44 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、问题1到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做)。答案下面是一些关键点: Python是一种解释型语言,Python代码在运行之前不需要编译。 Python是动态类型语言,在声明变量时,不需要说明变量的类型。 Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符public和private, 在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。 Python代码编写快,但是运行速度比编译语言通常要慢。ython允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。numpy就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。 Python用途非常广泛网络应用,自动化,科学建模,大数据应用,等等。它也常被用作“胶水语言”,帮助其

      2、他语言和组件改善运行状况。 Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。问题2补充缺失的代码def print_directory_contents(sPath): 这个函数接受文件夹的名称作为输入参数, 返回该文件夹中文件的路径, 以及其包含文件夹中文件的路径。 # 补充代码答案def print_directory_contents(sPath): import os for sChild in os.listdir(sPath): sChildPath = os.path.join(sPath,sChild) if os.path.isdir(sChildPath): print_directory_contents(sChildPath) else: print sChildPath特别要注意以下几点: 命名规范要统一。如果样本代码中能够看出命名规范,遵循其已有的规范。 递归函数需要递归并终止。确保你明白其中的原理,否则你将面临无休无止的调用栈(callstack)。 我们使用os模块与操作系统进行交互,同时做到交互方式是可

      3、以跨平台的。你可以把代码写成sChildPath = sPath + / + sChild,但是这个在Windows系统上会出错。 熟悉基础模块是非常有价值的,但是别想破脑袋都背下来,记住Google是你工作中的良师益友。 如果你不明白代码的预期功能,就大胆提问。 坚持KISS原则!保持简单,不过脑子就能懂!为什么提这个问题: 说明面试者对与操作系统交互的基础知识 递归真是太好用啦问题3阅读下面的代码,写出A0,A1至An的最终值。A0 = dict(zip(a,b,c,d,e),(1,2,3,4,5)A1 = range(10)A2 = i for i in A1 if i in A0A3 = A0s for s in A0A4 = i for i in A1 if i in A3A5 = i:i*i for i in A1A6 = i,i*i for i in A1答案A0 = a: 1, c: 3, b: 2, e: 5, d: 4A1 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9A2 = A3 = 1, 3, 2, 5, 4A4 = 1, 2, 3, 4, 5A

      4、5 = 0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81A6 = 0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81问题4Python和多线程(multi-threading)。这是个好主意码?列举一些让Python代码以并行方式运行的方法。答案Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过GIL这一道关卡处理,会增加执行的开销。这意味着,如果你想提高代码的运行速度,使用threading包并不是一个很好的方法。不过还是有很多理由促使我们使用threading包的。如果你想同时执行一些任务,而且不考虑效率问题,那么使用这个包是

      5、完全没问题的,而且也很方便。但是大部分情况下,并不是这么一回事,你会希望把多线程的部分外包给操作系统完成(通过开启多个进程),或者是某些调用你的Python代码的外部程序(例如Spark或Hadoop),又或者是你的Python代码调用的其他代码(例如,你可以在Python中调用C函数,用于处理开销较大的多线程工作)。问题5你如何管理不同版本的代码?答案:版本管理!GIT, SVN问题6下面代码会输出什么:def f(x,l=): for i in range(x): l.append(i*i) print lf(2)f(3,3,2,1)f(3)答案:0, 13, 2, 1, 0, 1, 40, 1, 0, 1, 4呃?第一个函数调用十分明显,for循环先后将0和1添加至了空列表l中。l是变量的名字,指向内存中存储的一个列表。第二个函数调用在一块新的内存中创建了新的列表。l这时指向了新生成的列表。之后再往新列表中添加0、1、2和4。很棒吧。第三个函数调用的结果就有些奇怪了。它使用了之前内存地址中存储的旧列表。这就是为什么它的前两个元素是0和1了。不明白的话就试着运行下面的代码吧:l_m

      6、em = l = l_mem # the first callfor i in range(2): l.append(i*i)print l # 0, 1l = 3,2,1 # the second callfor i in range(3): l.append(i*i)print l # 3, 2, 1, 0, 1, 4l = l_mem # the third callfor i in range(3): l.append(i*i)print l # 0, 1, 0, 1, 4问题7monkey patch (猴子补丁)用来在运行时动态修改已有的代码,而不需要修改原始代码。简单的monkey patch 实现:python#coding=utf-8def originalFunc(): print this is original function!def modifiedFunc(): modifiedFunc=1 print this is modified function!def main(): originalFunc()if _name_=_main_: origina

      7、lFunc=modifiedFunc main()python中所有的东西都是object,包括基本类型。查看一个object的所有属性的方法是:dir(obj)函数在python中可以像使用变量一样对它进行赋值等操作。查看属性的方法:print locals()print globals()问题8这两个参数是什么意思:*args,*kwargs?我们为什么要使用它们?答案如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args;如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用*kwargs。args和kwargs这两个标识符是约定俗成的用法,你当然还可以用*bob和*billy,但是这样就并不太妥。下面是具体的示例:def f(*args,*kwargs): print args, kwargsl = 1,2,3t = (4,5,6)d = a:7,b:8,c:9f()f(1,2,3) # (1, 2, 3) f(1,2,3,groovy) # (1, 2, 3, groovy) f(a=1

      8、,b=2,c=3) # () a: 1, c: 3, b: 2f(a=1,b=2,c=3,zzz=hi) # () a: 1, c: 3, b: 2, zzz: hif(1,2,3,a=1,b=2,c=3) # (1, 2, 3) a: 1, c: 3, b: 2f(*l,*d) # (1, 2, 3) a: 7, c: 9, b: 8f(*t,*d) # (4, 5, 6) a: 7, c: 9, b: 8f(1,2,*t) # (1, 2, 4, 5, 6) f(q=winning,*d) # () a: 7, q: winning, c: 9, b: 8f(1,2,*t,q=winning,*d) # (1, 2, 4, 5, 6) a: 7, q: winning, c: 9, b: 8def f2(arg1,arg2,*args,*kwargs): print arg1,arg2, args, kwargsf2(1,2,3) # 1 2 (3,) f2(1,2,3,groovy) # 1 2 (3, groovy) f2(arg1=1,arg2=2,c=3) # 1 2 () c: 3f2(arg1=1,arg2=

      《python面试题精选--精选文档》由会员大米分享,可在线阅读,更多相关《python面试题精选--精选文档》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.