Python面试突击

时间:2022-07-28
本文章向大家介绍Python面试突击,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Python基础

  1. 到底什么是Python?你可以在回答中与其他技术进行对比。
    • Python是一种解释型语言。与C语言和Java这种编译型语言不同,Python代码在运行之前不需要编译。
    • Python是动态型语言,即在声明变量时,不需要说明变量的类型的。
    • Python是面向对象的编程语言(OOP),Python中一切皆对象,函数是第一类对象,指的是函数可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。
    • Python简单易学,设计宗旨可以参考Python之禅,让程序员不用处理底层的细节。
    • Python用途非常方法——Web编程、自动化、人工智能、大数据等领域大放异彩。也常常被用作“胶水”语言,帮助其他语言和组件改善运行状况。
  2. 什么是PEP?
    • PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议。
  3. 什么是pickling和unpickling?
    • Pickle模块读入任何Python对象,将它们转换成字符串,然后使用dump函数将其转储到一个文件中——这个过程叫做pickling。
    • 反之从存储的字符串文件中提取原始Python对象的过程,叫做unpickling
  4. Python是如何被解释的?
    • 它的源代码可以直接运行。Python解释器会将源代码转换成中间语言,之后再翻译成机器码再执行。
  5. Python是怎样管理内存的?
  6. 有哪些工具可以帮助debug或做静态分析?
    • PyChecker是一个静态分析工具,它不仅能报告源代码中的错误,并且会报告错误类型和复杂度。Pylint是检验模块是否达到代码标准的另一个工具。
  7. 什么是Python装饰器?
    • Python装饰器是Python中的特有变动,可以使修改函数变得更容易。
  8. 数组和元组之间的区别是什么?
    • 数组和元组之间的区别:数组内容是可以被修改的,而元组内容是只读的。另外,元组可以被哈希,比如作为字典的关键字。
  9. 参数按值传递和引用传递是怎样实现的?
    • Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定的,因此无法被改变。但是如果一个对象是可以被修改的,你可以改动对象。
  10. 字典推导式和列表推导式是什么?
  11. Python都有哪些自带的数据结构?
  12. 什么是Python的命名空间?
  13. Python中的lambda是什么?
  14. 为什么lambda没有语句?
  15. Python中的pass是什么?
  16. Python中什么是遍历器?
  17. Python中的unittest是什么?
* 在Python中,unittest是Python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等的功能。
  1. 在Python中什么是slicing?
* Slicing是一种在有序的对象类型中(数组,元组,字符串)节选某一段的语法。
  1. 在Python中什么是构造器?
* 生成器是实现迭代器的一种机制。它功能的实现依赖于yield表达式,除此之外它跟普通的函数没有两样
  1. Python中的docstring是什么?
* Python中文档字符串被称为docstring,它在Python中的作用是为函数、模块和类注释生成文档。
  1. 如何在Python中拷贝一个对象?
* 如果要在Python中拷贝一个对象,大多时候你可以用copy.copy()或者copy.deepcopy()。但并不是所有的对象都可以被拷贝。
  1. Python中的负索引是什么?
* Python中的序列索引可以是正也可以是负。如果是正索引,0是序列中的第一个索引,1是第二个索引。如果是负索引,(-1)是最后一个索引而(-2)是倒数第二个索引。
  1. 如何将一个数字转换成一个字符串?
  2. Xrange和range的区别是什么?
* Xrange用于返回一个xrange对象,而range用于返回一个数组。不管那个范围多大,Xrange都使用同样的内存。
  1. Python中的模块和包是什么?
* 在Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象和属性。
* 一个包含许多Python代码的文件夹是一个包。一个包可以包含模块和子文件夹。
  1. 尽可能列举python列表的成员方法,并给出一下列表操作的答案:
  2. a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?
  3. 一行代码实现对列表a中的偶数位置的元素进行加3后求和?
  4. 将列表a的元素顺序打乱,再对a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。
  5. 用python实现统计一篇英文文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数,并解答以下问题?(标点符号可忽略)
  6. 创建文件对象f后,解释f的readlines和xreadlines方法的区别?
  7. 追加需求:引号内元素需要算作一个单词,如何实现?
  8. 简述python GIL的概念,以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。
  9. 用python编写一个线程安全的单例模式实现。
  10. 阐述一下装饰器,描述符(property)、元类的概念,并列举其应用场景;
  11. 如何动态获取和设置对象的属性。
  12. Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)
  13. 介绍一下except的用法和作用?
  14. 如何用Python来进行查询和替换一个文本字符串?
  15. Python里面match()和search()的区别?
  16. 用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
  17. Python里面如何生成随机数?
  18. 有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
* PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
  Pylint是另外一个工具可以进行codingstandard检查
  1. 如何在一个function里面设置一个全局的变量?
  2. 单引号,双引号,三引号的区别?