题目26:什么是鸭子类型(duck typing)?

鸭子类型是动态类型语言判断一个对象是不是某种类型时使用的方法,也叫做鸭子判定法。简单的说,鸭子类型是指判断一只鸟是不是鸭子,我们只关心它游泳像不像鸭子、叫起来像不像鸭子、走路像不像鸭子就足够了。换言之,如果对象的行为跟我们的预期是一致的(能够接受某些消息),我们就认定它是某种类型的对象。

在Python语言中,有很多bytes-like对象(如:bytes、bytearray、array.array、memoryview)、file-like对象(如:StringIO、BytesIO、GzipFile、socket)、path-like对象(如:str、bytes),其中file-like对象都能支持read和write操作,可以像文件一样读写,这就是所谓的对象有鸭子的行为就可以判定为鸭子的判定方法。再比如Python中列表的extend方法,它需要的参数并不一定要是列表,只要是可迭代对象就没有问题。说明:动态语言的鸭子类型使得设计模式的应用被大大简化。

题目27:说一下Python中变量的作用域。

Python中有四种作用域,分别是局部作用域(Local)、嵌套作用域(Embedded)、全局作用域(Global)、内置作用域(Built-in),搜索一个标识符时,会按照LEGB的顺序进行搜索,如果所有的作用域中都没有找到这个标识符,就会引发NameError异常。

题目28:说一下你对闭包的理解。

闭包是支持一等函数的编程语言(Python、JavaScript等)中实现词法绑定的一种技术。当捕捉闭包的时候,它的自由变量(在函数外部定义但在函数内部使用的变量)会在捕捉时被确定,这样即便脱离了捕捉时的上下文,它也能照常运行。简单的说,可以将闭包理解为能够读取其他函数内部变量的函数。正在情况下,函数的局部变量在函数调用结束之后就结束了生命周期,但是闭包使得局部变量的生命周期得到了延展。使用闭包的时候需要注意,闭包会使得函数中创建的对象不会被垃圾回收,可能会导致很大的内存开销,所以闭包一定不能滥用。

题目29:说一下Python中的多线程和多进程的应用场景和优缺点。

线程是操作系统分配CPU的基本单位,进程是操作系统分配内存的基本单位。通常我们运行的程序会包含一个或多个进程,而每个进程中又包含一个或多个线程。多线程的优点在于多个线程可以共享进程的内存空间,所以进程间的通信非常容易实现;但是如果使用官方的CPython解释器,多线程受制于GIL(全局解释器锁),并不能利用CPU的多核特性,这是一个很大的问题。使用多进程可以充分利用CPU的多核特性,但是进程间通信相对比较麻烦,需要使用IPC机制(管道、套接字等)。

多线程适合那些会花费大量时间在I/O操作上,但没有太多并行计算需求且不需占用太多内存的I/O密集型应用。多进程适合执行计算密集型任务(如:视频编码解码、数据处理、科学计算等)、可以分解为多个并行子任务并能合并子任务执行结果的任务以及在内存使用方面没有任何限制且不强依赖于I/O操作的任务。扩展:Python中实现并发编程通常有多线程、多进程和异步编程三种选择。异步编程实现了协作式并发,通过多个相互协作的子程序的用户态切换,实现对CPU的高效利用,这种方式也是非常适合I/O密集型应用的。

题目30:说一下Python 2和Python 3的区别。点评:这种问题千万不要背所谓的参考答案,说一些自己最熟悉的就足够了。Python 2中的print和exec都是关键字,在Python 3中变成了函数。

Python 3中没有long类型,整数都是int类型。

Python 2中的不等号<>在Python 3中被废弃,统一使用!=。

Python 2中的xrange函数在Python 3中被range函数取代。

Python 3对Python 2中不安全的input函数做出了改进,废弃了raw_input函数。

Python 2中的file函数被Python 3中的open函数取代。

Python 2中的/运算对于int类型是整除,在Python 3中要用//来做整除除法。

Python 3中改进了Python 2捕获异常的代码,很明显Python 3的写法更合理。

Python 3生成式中循环变量的作用域得到了更好的控制,不会影响到生成式之外的同名变量。

Python 3中的round函数可以返回int或float类型,Python 2中的round函数返回float类型。

Python 3的str类型是Unicode字符串,Python 2的str类型是字节串,相当于Python 3中的bytes。

Python 3中的比较运算符必须比较同类对象。

Python 3中定义类的都是新式类,Python 2中定义的类有新式类(显式继承自object的类)和旧式类(经典类)之分,新式类和旧式类在MRO问题上有非常显著的区别,新式类可以使用__class__属性获取自身类型,新式类可以使用__slots__魔法。

Python 3对代码缩进的要求更加严格,如果混用空格和制表键会引发TabError。

Python 3中字典的keys、values、items方法都不再返回list对象,而是返回view object,内置的map、filter等函数也不再返回list对象,而是返回迭代器对象。

Python 3标准库中某些模块的名字跟Python 2是有区别的;而在三方库方面,有些三方库只支持Python 2,有些只能支持Python 3。温馨提示:Python面试宝典会持续更新,从基础到项目实战的内容都会慢慢覆盖到。虽然每天只更新5个题目,但是每道题扩散出的信息量还是比较大的,希望对找工作的小伙伴所有帮助。你的点赞、收藏和评论都是我继续创建的动力,请不要吝惜你的赞美。

python面试笔试宝典pdf_Python面试宝典之基础篇-06相关推荐

  1. [Python从零到壹] 四十一.图像处理基础篇之图像采样处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. [Python从零到壹] 四十.图像处理基础篇之图像量化处理

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. python程序员面试算法宝典 pdf_Python面试宝典之基础篇3

    Python面试宝典之基础篇-03 题目011:Python中为什么没有函数重载? 点评:C++.Java.C#等诸多编程语言都支持函数重载,所谓函数重载指的是在同一个作用域中有多个同名函数,它们拥有 ...

  6. 高频面试真题答案 -java后端 -java基础篇

    原贴 2022届秋招高频面试真题汇总,千题奉送!!!- 后端篇_笔经面经_牛客网 整理答案: 类加载机制 47 双亲委派机制 24 new一个对象的过程 4 java程序是如何运行起来的? 1 jvm ...

  7. python面试笔试宝典pdf_Python面试宝典之基础篇-02

    题目006:说说Python中的浅拷贝和深拷贝.点评:这个题目本身出现的频率非常高,但是就题论题而言没有什么技术含量.对于这种面试题,在回答的时候一定要让你的答案能够超出面试官的预期,这样才能获得更好 ...

  8. python面试笔试宝典pdf_Python面试宝典之基础篇-09

    题目41:说一下你对Python中模块和包的理解. 每个Python文件就是一个模块,而保存这些文件的文件夹就是一个包,但是这个作为Python包的文件夹必须要有一个名为__init__.py的文件, ...

  9. 个人总结面试笔试C语言、嵌入式相关基础知识点

    char *const *(*next)(); 1. (*next)  next 是一个指针 2.(*next)() next是一个函数指针 3.char *const 是一个指针 常量指针 4. n ...

最新文章

  1. 【哲学】形而上学具体指什么?metaphysics
  2. python lambda表达式的使用方法(匿名函数)
  3. ECSHOP 模版文件里的编辑区域
  4. 燃!阿里AI技术取得重大突破:连破中、英语言处理两项世界纪录
  5. MZOJ 1134: 二叉苹果树
  6. 贝叶斯深度神经网络_深度学习为何胜过贝叶斯神经网络
  7. 拥抱.NET Core系列:依赖注入(1)
  8. ASP.NET Core 中文文档 第三章 原理(3)静态文件处理
  9. 蛮力法在查找算法中的应用(JAVA)--顺序查找
  10. 【操作系统】实验 模拟操作系统的文件管理系统
  11. 《论文笔记》ROBUST MAP ALIGNMENT FOR COOPERATIVE VISUAL SLAM
  12. wsdl 架构验证警告:来自命名空间_Let it go: DARTS 神经网络可微架构搜索 笔记
  13. 验证注册页面信息(JavaScript)
  14. 知乎:前端IDE 那个流行,那个好;
  15. php收藏影视,十个值得收藏的影视资源网站
  16. buuctf crypto Quoted-printable
  17. PDF页面删除怎么操作
  18. 少儿编程Scratch学习教程--Scratch介绍及参赛相关
  19. 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛错题笔记
  20. 如何下载Jason2测高数据

热门文章

  1. leetcode之路050 Pow(x, n)
  2. 一个工科生的竹资源探索之旅
  3. SQL多表联查语句练习
  4. QQ和TIM群文件无法正常显示的一种解决办法
  5. 苹果电脑升降级MacOS 11-13.x系统安装包
  6. 移动端图片上传裁切(版权归秒为所有,仅为搬运)
  7. 第九章:用户自己建立数据类型
  8. 联想k920 android7,联想K920和小米4哪个好
  9. java处理异步非阻塞请求_Spring WebFlux 的异步非阻塞处理
  10. 经验分享——如何创建拼团活动?