400-807-8991
奇酷学院专注于Python培训,欢迎您咨询本校Python培训班
网站首页 >Python培训 >Python就业 >Python面试中经常被问到的几个问题,看看有没有你不知道的

Python面试中经常被问到的几个问题,看看有没有你不知道的

来源:奇酷教育 点击量: 发表于:

一场Python开发面试对于Python开发老鸟来说自然是信手拈来,但对于这个行业的新手来说十分困难,加上面试时的紧张情绪,很可能会导致面试失败。所以说想要轻松获得自己想要的Python开发岗位,做好面试前的准备是十分有必要的,今天就让奇酷学院来为您讲解一下Python开发面试中的常见问题,让你做到有的放矢。

Python面试常见问题

1.你是怎么理解Python这门语言的

回答这个问题要记住以下要点

(1)Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。

(2)Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。

(3)Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符(access specifier,类似C++中的public和private),这么设计的依据是大家都是成年人了。

(4)在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。Python代码编写快,但是运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。numpy就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。

(5)Python用途非常广泛用于网络应用,自动化,科学建模,大数据应用,等等。它也常被用作胶水语言,帮助其他语言和组件改善运行状况。

(6)Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

Python和多线程的关系

 

2.你是如何理解Python和多线程(multi-threading)关系的

Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过GIL这一道关卡处理,会增加执行的开销。这意味着,如果你想提高代码的运行速度,使用threading包并不是一个很好的方法。

不过还是有很多理由促使我们使用threading包的。如果你想同时执行一些任务,而且不考虑效率问题,那么使用这个包是完全没问题的,而且也很方便。但是大部分情况下,并不是这么一回事,你会希望把多线程的部分外包给操作系统完成(通过开启多个进程),或者是某些调用你的Python代码的外部程序(例如Spark或Hadoop),又或者是你的Python代码调用的其他代码(例如,你可以在Python中调用C函数,用于处理开销较大的多线程工作)。

Python的垃圾回收机制


3.简要描述Python的垃圾回收机制(garbage collection)

回答这个问题要记住以下要点:

(1)Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。

(2)偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合o1.x == o2和o2.x == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。

(3)Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。

4.你如何管理不同版本的代码?

版本管理!被问到这个问题的时候,你应该要表现得很兴奋,甚至告诉他们你是如何使用Git(或是其他你最喜欢的工具)追踪自己和奶奶的书信往来。我偏向于使用Git作为版本控制系统(VCS),但还有其他的选择,比如subversion(SVN)。

提问这个问题的意义在于:版本控制能够帮你追踪谁对代码库做了什么操作,发现新引入了什么bug,管理你的软件的不同版本和发行版。在团队成员中分享源代码,部署及其他自动化处理,它能让你回滚到出现问题之前的版本。

 

热门文章

开课提醒

郑州

郑州Python
开课时间离开课还有

-

奇酷教育培训课程

猜你喜欢

Python前景