Python工程师面试必备25条Python知识点

  • A+
所属分类:成长之路

到底什么是Python

你可以在回答中与其他技术进行对比,下面是一些关键点:

  • Python是种解释型语言。这就是说,与C语言和C衍生语言不同,Python代码在运行前不需要编译。其他的解释型语言还包括PHP和Ruby;
  • Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错;
  • Python非常适合面向对象的编程,因为支持通过组合composition与继承inheritance的方式定义类class。

Python中没有访问说明符access specifier,类似C++中的public和private,这么设计的依据是“大家都是成年人了”

  • Python语言中,函数是第一类对象。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类也是第一类对象;
  • Python代码编写快,但运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。

Numpy就是一个很好地例子,它运行速度真的非常快,因为很多算术运算其实不是通过Python实现的。

  • Python的用途非常广泛:网络应用,科学建模,自动化和大数据应用等。它也常被用作“胶水语言”帮助其他语言和组件改善其运行状况;
  • Python让困难的事变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

如果你应聘的是一个Python开发岗位,你应该知道这是门什么样的语言,以及为什么这么酷。以及哪里不好。

什么是PEP8

PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议。

主要内容包括代码编排、文档编排、空格使用、注释、文档描述、命名规范、编码建议等等。

什么是pickling和unpickling

Pickle模块读入任何Python对象,并将它们转换成字符串,然后用dump函数将其转储到一个文件中:这个过程就叫做pickling。

反之从存储的字符串文件中提取原始Python对象的过程,叫unpickling。

Python是如何被解释的

Python是种解释性语言,它的源代码可直接运行。Python解释器会将源代码转换成中间语言,之后再翻译成机器码再执行。

Python怎样管理内存的

Python的内存管理是由私有heap空间管理的。所有Python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才可以对它进行操作。

Python的heap空间分配内存是由Python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员来使用。

Python自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用。

有哪些工具可以帮助debug或做静态分析

PyChecker是一个静态分析工具,不仅能报告源代码中的错误,并会报告错误类型和复杂度。Pylint是检验模块是否达到代码标准的另一个工具。

何为Python装饰器

Python装饰器是Python中的特有变动,可以使修改函数变得更容易。

数组和元组之间区别是什么

数组和元组之间的区别:数组内容可以被修改的,元组内容是只读的。另外,元组可被哈希,比如作为字典的关键字。

参数按值传递和引用传递是怎样实现

Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定,因此无法改变。但如果一个对象是可以被修改的,可以改动对象。

字典推导式和列表推导式是什么

它们可以轻松创建字典和列表的语法结构。

Python都有哪些自带的数据结构

Python自带的数据结构分为可变的和不可变的。可变的有:数组、集合、字典;不可变的:元组、字符串以及数。

什么是Python命名空间

Python中,所有的名字都存在于一个空间中,它们在空间中存在和被操作:就是命名空间。

它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象。

Python的lambda是什么

这是一个常被用于代码中的单个表达式的匿名函数。

为什么lambda没有语句

匿名函数lambda没有语句的原因,是它被用于在代码被执行的时候构建新的函数对象并且返回。

Python的pass是什么

Pass是一个在Python不会被执行的语句。在复杂语句中,如一个地方需要暂时被留白,常常被用于占位符。

Python中什么是遍历器

遍历器是用于遍历一组元素,比如列表这样容器。

Python的unittest是什么

Python中,unittest是Python的单元测试框架。拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等功能。

Python中什么是slicing

Slicing是种在有序的对象类型中(数组,元组以及字符串)节选某一段的语法。

Python中什么是构造器

生成器是实现迭代器的一种机制。功能的实现依赖于yield表达式,除此之外跟普通的函数没有两样。

Python的docstring是什么

Python文档字符串被称为docstring,在Python中的作用是为函数、模块和类注释生成文档。

如何在Python拷贝一个对象

如果要在Python中拷贝一个对象,大多时候你可以用copy.copy()或者copy.deepcopy()。但不是所有的对象都可以被拷贝。

Python的负索引是什么

Python中的序列索引可以是正也可以是负。如果是正索引,0是序列中第一个索引,而1是第二个索引。如果是负索引,-1是最后一个索引而-2是倒数第二个索引。

如何将一个数字转换成为一个字符串

可以使用自带函数str()将一个数字转换为字符串。如果想要八进制或者十六进制数,可以用oct()或hex()。

Xrange和range区别是什么

Xrange用于返回一个xrange对象,而range用于返回一个数组。不管那个范围多大,Xrange都用同样的内存。

Python中的模块和包是什么

Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象、属性。

一个包含许多Python代码文件夹是一个包。一个包可以包含模块和子文件夹。

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

    • avatar RAW9426 7

      签到成功!签到时间:今日的下午4:51:00,每日打卡,生活更精彩哦!

      • avatar Galen 4

        签到成功!签到时间:今日的下午2:48:46,每日打卡,生活更精彩哦!

        • avatar 护栏熊 6

          签到成功!签到时间:今日的下午9:22:29,每日打卡,生活更精彩哦!