试题
第一部分:Python基础篇(80题)
-
为什么学习Python?
-
通过什么途径学习的Python?
-
Python和Java、PHP、C、C#、C++等其他语言的对比?
-
python 解释型语言,语法简洁优雅。
-
C C++ 编译型语言,先编译后运行,偏底层。
-
简述解释型和编译型编程语言?
-
编译型: c / c++ / go
-
运行速度快,开发效率低,不可跨平台
-
解释型:python / java / php
-
运行速度低,开发效率高,可跨平台
-
Python解释器种类以及特点?
-
解释器: 将python语法解释成二进制
-
CPython C语言写得
-
IPython 把CPython包装了一下
-
PyPy Python写得 采用JIT技术 一大块一大块编译 显著提高Python代码得执行速度
-
JPython Java写得
-
IronPython .NET写的
-
位和字节的关系?
-
1个字节等于8位
-
b、B、KB、MB、GB 的关系?
-
1B = 1Byte(字节) = 8bit(比特/位)
-
1GB = 1024MB
-
1MB = 1024KB
-
1KB = 1024B
-
请至少列举5个 PEP8 规范(越多越好)。
-
缩进。4个空格的缩进,不使用Tap,更不能混合使用Tap和空格。
-
模块内容的顺序:标准、三方和自己编写顺序依次排放,之间空一行。
-
空格:
-
各种右括号前不要加空格。
-
逗号、冒号、分号前不要加空格。
-
函数的左括号前不要加空格。如Func(1)。
-
序列的左括号前不要加空格。如list[2]。
-
操作符左右各加一个空格,不要为了对齐增加空格。
-
。。。
-
注释:
-
错误的注释不如没有注释,所以当一段代码发生变化时,一定
-
文档描述
-
为所有的共有模块、函数、类、方法写docstrings;
-
命名规则
-
模块命名尽量短小,使用全部小写的方式,可以使用下划线。
-
包命名尽量短小,使用全部小写的方式,不可以使用下划线。
-
类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。
-
函数命名使用全部小写的方式,可以使用下划线。
-
常量命名使用全部大写的方式,可以使用下划线。
-
。。。通过代码实现如下转换:
- 通过代码实现如下转换:
v = "0b1111011" >>> int("0b1111011",2) 123 v = 18 >>> bin(18) '0b10010' v = "011" >>> int("011",8) 9 v = 30 >>> oct(30) '0o36' v = "0x12" >>> int("0x12",16) 18 v = 87 >>> hex(87) '0x57'
-
请编写一个函数实现将IP地址转换成一个整数。
如: 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
在将二进制 拼接起来计算十进制的结果: 00001010 00000011 00001001 00001100 = ?
def func(str_ip): arr = str_ip.split(".") temp = [] for i in arr: t = bin(int(i))[2:] s = t.rjust(8,'0') temp.append(s) str_temp = "".join(temp) print(int(str_temp,2)) # 167971084 func("10.3.9.12")
11. python递归的最大层数?
>>> import sys >>> sys.getrecursionlimit() 1000
12. 求结果
v1 = 1 or 3 # 1 v2 = 1 and 3 # 3 v3 = 0 and 2 and 1 # 0 v4 = 0 and 2 or 1 # 1 v5 = 0 and 2 or 1 or 4 #1 v6 = 0 or Flase and 1 # False
-
ascii、unicode、utf-8、gbk 区别?
utf-8 占3个字节 中文
gbk 占2个字节 中文
unicode 占2个字节
ascii: 占1个字节,一套电脑编码系统,最多只能只能表示256个字符,主要用于显示英语字符和其他西欧语言。
显然ascii无法将世界上的各种文字和符号全部表示,所以就出现了一种可以代替所有字符和符号的编码,即 unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码,占2个字节。
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存(中文,占3个自己)
-
字节码和机器码的区别?
C语言,代码编译之后得到机器码: 机器码在处理器上直接执行,每一条指令控制cpu工作。
python语言,代码编译得到字节码,虚拟机上执行字节码并转换成机器码之后再到处理器上执行。
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
-
三元运算规则以及应用场景?
result = 值1 if 条件 else 值2 如果条件为真:result = 值1 如果条件为假:result = 值2
-
列举 Python2和Python3的区别?
py2 : 默认编码是 ascii
py3: 默认编码是 unicode,支持全球。
17. 用一行代码实现数值交换: a = 1 b = 2
a, b = b, a
-
Python3和Python2中 int 和 long的区别?
-
xrange和range的区别?
range 不是生成器 xrange 是生成器 ;生成器 内部基于yield 创建,即:对于生成器只有使用时,才创建,从而避免内存浪费
-
文件操作时:xreadlines和readlines的区别?
xreadlines 生成器
21. 列举布尔值为False的常见值?
bool("") bool(0) bool(False)
22. 字符串、列表、元组、字典每个常用的5个方法?
caplitalize upper lower find rfind center ljust rjust format index strip lstrip() rstrip() append insert extend count pop sort reverse remove li[2:5] = [1, 2, 3] = ['HELLO', 1, 3] li[0:6:2] = ['HELLO', 1, 3] .get keys values items pop update
23. lambda表达式格式以及应用场景?
v = lambda x:x+1 result = v(1) # 2 def v(x): return x+1 result = v(1)
24. pass的作用?
Python pass是空语句,是为了保持程序结构的完整性。 pass 不做任何事情,一般用做占位语句。
25. *arg和**kwarg作用
*arg会把多出来的位置参数转化为tuple
**kwarg会把关键字参数转化为dict
26. is和==的区别
python对象包含3要素 id type value id 用来唯一标识一个对象,type标识对象的类型,value是对象的值 is 判断的是 a对象是否是b对象, 是通过id来判断的。 == 判断的是 a对象的值是否是b对象的值,是通过的value来判断的。
27.简述Python的深浅拷贝以及应用场景?
当进行修改时,想要保留原来的数据和修改后的数据
在修改数据时:
数字字符串:在内存中新建一份数据
集合:修改内存中的同一份数据
对于集合,n层元素同时拷贝?
深拷贝
28.Python垃圾回收机制?
现在的高级语言如java,c#等,都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式。自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患。 GIL全局的锁
29.Python的可变类型和不可变类型?
可变:列表 字典
不可变: 数字 字符串 元祖
30. 求结果:
v = dict.fromkeys(['k1','k2'],[]) v['k1'].append(666) print(v) v['k1'] = 777 print(v) {'k1': [666], 'k2': [666]} {'k1': 777, 'k2': [666]}