Python面试题之基础篇(二)

1、python递归的最大层数?

998

2、求结果(and or or)

1. 求结果:1 or 3
print(1 or 3)  # 1
2. 求结果:1 and 3
print(1 and 3)  # 3
3. 求结果:0 and 2 and 1
print(0 and 2 and 1)  # 0
4. 求结果:0 and 2 or 1
print(0 and 2 or 1)  # 1
5. 求结果:0 and 2 or 1 or 4
print(0 and 2 or 1 or 4)  # 1
6. 求结果:0 or Flase and 1
print(0 or False and 1)  # Flase
总结:
  # x or y 如果 x为真,则值为x,   否则为y
  # x and y 如果 x 为真,则值为 y,否则为 x

运算符

1. 求结果:2 & 5

print(2 & 5)  # 10 & 101 => 000 => 0

2. 求结果:2 ^ 5

print(2 ^ 5)  # 10 ^ 101 => 111 => 1*2**0+1*2**1+1*2**2=1+2+4=7

13、ascii、unicode、utf-8、gbk 区别

python2内容进行编码(默认ascii),而python3对内容进行编码的默认为utf-8。
ascii   最多只能用8位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
unicode  万国码,任何一个字符==两个字节
utf-8    万国码的升级版  一个中文字符==三个字节   英文是一个字节  欧洲的是 2个字节
gbk      国内版本  一个中文字符==2个字节   英文是一个字节
gbk 转 utf-8  需通过媒介 unicode

4、字节码和机器码的区别

机器码,学名机器语言指令,有时也被称为原生码,是电脑的CPU可直接解读的数据。
字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
什么是机器码
机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
总结:机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写
什么是字节码
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。
总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
-----------
#is  比较的是内存地址
#== 比较的是值
# int     具有范围:-5---256
#对于int 小数据池
 范围:-5----256 创建的相间的数字,都指向同一个内存地址
#对于字符串 (面试)
1、小数据池 如果有空格,那指向两个内存地址,
2、长度不能超过 20
3、不能用特殊字符
i = 'a'*20
j = 'a'*20
print(i is j)   # True
i = "a"*21
j = "a"*21
print(i is j)   # False
关于编码所占字节
unicode: 所有字符(无论英文、中文等)   1个字符:2个字节
gbk:一个字符,英文1个字节,中文两个字节
utf-8:英文1个字节、 欧洲:2个字节, 亚洲:3个字节
在utf-8中,一个中文字符占用3个字节
在gbk中一个汉字占用2个字节
黎诗 = utf-8(6字节)=48
黎诗 = gbk(4字节)=32
字节和位的关系。
  #一个字节(byte) = 8 位(bit)
  # 位为最小的单位
简述变量命名规范
  #1、以字母,数字,下划线任由结合
  #2、不能以命名太长,不使用拼音,中文
  #3、不能以数字开头
  #4、不能用关键词

5、三元运算写法和应用场景?

应用场景:简化if语句
# 关于三元运算
# 结果+ if  + 条件  + else + 结果
result='gt' if 1>3 else 'lt'
print(result)       # lt
# 理解:如果条件为真,把if前面的值赋值给变量,否则把else后面的值赋值给变量。
lambda 表达式
temp = lambda x,y:x+y
print(temp(4,10))   # 14
可替代:
def foo(x,y):
    return x+y
print(foo(4,10))    # 14

6、Python3和Python2的区别?

1:打印时,py2需要可以不需要加括号,py3 需要
python 2 :print ('lili')   ,   print 'lili'
python 3 : print ('lili')   
python3 必须加括号
exec语句被python3废弃,统一使用exec函数
2:内涵
Python2:1,臃肿,源码的重复量很多。
      2,语法不清晰,掺杂着C,php,Java,的一些陋习。
Python3:几乎是重构后的源码,规范,清晰,优美。
3、输出中文的区别
python2:要输出中文 需加 # -*- encoding:utf-8 -*-
Python3 : 直接搞
4:input不同
python2 :raw_input
python3 :input 统一使用input函数
5:指定字节
python2在编译安装时,可以通过参数-----enable-unicode=ucs2 或-----enable-unicode=ucs4分别用于指定使用2个字节、4个字节
表示一个unicode;
python3无法进行选择,默认使用 ucs4
查看当前python中表示unicode字符串时占用的空间:
impor sys
print(sys.maxunicode)
#如果值是65535,则表示使用usc2标准,即:2个字节表示
#如果值是1114111,则表示使用usc4标准,即:4个字节表示
6:
py2:xrange
    range
py3:range  统一使用range,Python3中range的机制也进行修改并提高了大数据集生成效率
7:在包的知识点里
包:一群模块文件的集合 + __init__
区别:py2 : 必须有__init__
   py3:不是必须的了
8:不相等操作符"<>"被Python3废弃,统一使用"!="
9:long整数类型被Python3废弃,统一使用int
10:迭代器iterator的next()函数被Python3废弃,统一使用next(iterator)
11:异常StandardError 被Python3废弃,统一使用Exception
12:字典变量的has_key函数被Python废弃,统一使用in关键词
13:file函数被Python3废弃,统一使用open来处理文件,可以通过io.IOBase检查文件类型

7、用一行代码实现数值交换

a = 1 
b = 2
a, b = b, a

8、Python3和Python2中int和long区别

在python3里,只有一种整数类型int,大多数情况下,和python2中的长整型类似。

9、xrange和range的区别

都在循环时使用,xrange内存性能更好,xrange用法与range完全相同,range一个生成list对象,xrange是生成器。

要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

在python2中:

range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

例子:

xrange用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。

例子:

由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用。

在 Python 3 中,range() 是像 xrange() 那样实现,xrange()被抛弃。

10、文件操作时:xreadlines和readlines的区别?

readlines     返回一个列表
xreadlines   返回一个生成器

python学习网,免费的在线学习python平台,欢迎关注!

1.Python是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制一、对象的引用计数机制Python内部使用引用计数,来保持追踪内存中的对象,所有对象 ...