初步了解10个python面试题,不再惧怕HR,轻松入职

1.简述解释型和编译型编程语言?

解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译,这样解释型语言每执行一次就要翻译一次,效率比较低;

用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统,把源高级程序编译成机器语言文件,翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但是不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。

2.python解释器的种类以及特点?

CPython

当从python官方网站上下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:CPython,这个解释器使用C语言开发的,所以叫CPython,在命令行下运行python,就是启动CPython解释器,CPython解释器是使用最广的python解释器。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE.

PyPy

PyPy是另一个python解释器,它的目标是执行速度,PyPy采用JIT技术,对python代码进行动态编译,所以可以显著提高python代码的执行速度。

Jython

Jython是运行在java平台上的python解释器,可以直接把python代码编译成java字节码执行

IronPython

IronPyhton和Jython类似,只不过IronPython是运行在微软.NET平台上的python解释器,可以直接把python代码编译成.NET的字节码,在python的解释器中,使用广泛的是CPyhton,对于python的编译,除了可以采用以上的解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写python解释器来执行python代码,时分的方便!

3.位和字节的关系?

bit就是位,也叫比特位,是计算机标识数据的最小的单位。

byte就是字节

1byte=8bit

4.请至少列举5个PEP8规范

上网查

5.通过代码实现如下转换

二进制转化为十进制,如V='0b1111011'

十进制转换为二进制,如v=18

八进制转换为十进制,如v='011'

十进制转换为八进制,如v=30

十六进制转换为十进制,如v='0x12'

十进制转换为十六进制,如v=87

6.python 递归的最大层数

 

7.ascii,unicode,utf-8,gbk的区别

最早只有127个字母被编码到计算机里,也就是大小写应为字母,数字和一些字符,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122.

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2132编码,用来把中文编进去。

你可以想到的是,权世界上有上百种语言,日本把日文编到shift_JIS里,韩国把韩文编写到Euc_kr里,各国有各国的标准,就会不可避免的出现冲突,结果就是,在多语言混合的文本中,显示出来就会有乱码。

因此,Unicode应运而生。Unicode把所有语言都编写到一套代码里,这样就不会有乱码的问题了。

Unicode标准也在不断发展,但最常用的是两个字节标识一个字符,现代操作系统和大多数变成语言都直接支持Unicode。

新的问题又出现了:如果同意编写成Unicode编码,乱码问题从此消失了,但是如果你写的基本上全是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分的不划算

所以,本着节约的精神,又出现的把Unicode编码转化为可变长编码“的utf-8”编码,utf-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码为一个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用utf-8编码就能节省空间。

utf-8还有一个额外的好处,就是ASCII编码实际上可以被看成是utf-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在utf-8编码下继续工作。

8.字节码和机器吗的区别

机器码,学名机器语言指令,有时也成为原生码,是电脑的CPU可直接解读的数据。

通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。

用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的含义,收编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态,这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍,而且,编写出的程序全是0和1的指令代码,直观性差,容易出错。现在,处理计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。

8086到Pentium的机器语言指令长度从1字节到13字节。

尽管机器语言好像是很复杂的,然而他是有规律的。

存在着多至100000种机器语言的指令,这意味着不能把这些指令全列出来。

总结:机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到。

 

字节码是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。通常情况下,他是已经经过编译,但与特定机器码无关,字节码通常不像源码一样可以让人阅读,而是编码后的数值常量, 引用,指令等构成的序列

字节码主要为了实现特定软件运行和软件环境,与硬件环境无关,字节码的实现方式是通过编译器和虚拟机器,编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为 java bytecode.

字节码在运行时通过JVM做一次转换生成机器指令,因此能够更好的跨平台运行。

总结:字节码是一种中间状态(中间码)的二进制代码。需要直译器转译后才能成为机器码。

9.三元运算符的运算规则和应用场景

表达式格式:

为真时的结果 if 判定条件 else 为假时的结果

举例:

1 if 3>2 else 0

10.用一行代码实现数值交换

a = 1

b = 2

a,b = b,a

print(a,b)

 

posted @ 2018-11-23 18:05  Gabrielle_gao  阅读(304)  评论(0)    收藏  举报