1.简述解释型和编译型编程语言?
对于语言来说,各种编程语言本质没什么不同,所谓的‘解释型’和‘编译型’指的是执行机制上的不同。
解释型语言是它执行机制使用一个,‘解释器’来执行,解释器对于程序员是一句一句‘翻译’,成机器语言来执行。例如shell脚本语言。效率比较低。
编译型语言是它执行机制使用一个,‘编译器’来编译成机器语言,然后就可以直接运行这个编译成的‘可执行文件’,例如C语言。效率比较高,但也不能一概而论。
你也可以为解释型语言写个编译器来编译,这样它就成了‘编译语言’。
你也可以为变一下语言写个解释器家执行,这样它就成了‘解释型语言’。
2.Python解释器种类以及特点?
Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器:
Cpython:
c语言开发的,使用最广的解释器。
Ipython:
基于cpython之上的一个交互式计时器,交互方式增强,功能和cPython一样
PyPy:
目标是执行效率。瞎用JIT技术,对python代码进行动态编译,提高执行效率
Jpython:
运行在Java上的解释器,直接吧python代码编译成Java字节码执行。
Ironpython:
运行在微软.NET平台上的解释器,把python编译成.ENT的字节码。
3.位和字节的关系?
位(bit),数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位,是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
4.b、B、KB、MB、GB 的关系?
1TB=1024GB,
1GB=1024MB;
1MB=1024KB;
1KB=1024B;
1B=8bit。
5.请至少列举5个 PEP8 规范(越多越好)。
(1) 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。
(2)每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。
(3)不要在一句import中多个库,比如import os, sys不推荐。
(4)各种右括号前不要加空格。
(5) if/for/while语句中,即使执行语句只有一句,也必须另起一行。
(6) 块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔。
(7)模块命名尽量短小,使用全部小写的方式,可以使用下划线。
6.python递归的最大层数?
在python中默认最大递归次数是998。
7.ascii、unicode、utf-8、gbk 区别?
ASCII | 1个字节 | 英文 |
Unicode | 2个字节(生僻字4个) | 所有语言 |
UTF-8 | 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 | 所有语言 |
最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
8.字节码和机器码的区别?
机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。