第一部分 Python基础篇(80题)
1.为什么学习Python?
首先是亲朋好友的推荐
2.通过什么途径学习的Python?
3.Python和Java、PHP、C、C#、C++等其他语言的对比?
4.简述解释型和编译型编程语言?
5.Python解释器种类以及特点?
6.位和字节的关系?
1个字节等于8位,1byte = 8bit
7.b、B、KB、MB、GB 的关系?
1GB = 1024MB
1Mb = 1024KB
1kb = 1024B
1B = 1024b
8.请至少列举5个 PEP8 规范(越多越好)。
1.使用4个空格来进行缩进
2.每行最大长度79,对于文档字符串或者注释,最长72字符
3.换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车
4.两行空行分割顶层函数和类的定义;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
5.if/for/while语句中,即使执行语句只有一句,也必须另起一行。
6.不要在一句import中多个库,但从一个包中添加不同的模块或者函数也是允许的
9.通过代码实现如下转换:
二进制转换成十进制:v = “0b1111011”
十进制转换成二进制:v = 18
八进制转换成十进制:v = “011”
十进制转换成八进制:v = 30
十六进制转换成十进制:v = “0x12”
十进制转换成十六进制:v = 87
10.请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
11.python递归的最大层数?
998
12.求结果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or False and 1
1
3
0
1
1
False
13.ascii、unicode、utf-8、gbk 区别?
ascii:一个字符占一个字节, 只包含英文、数字、和一些特殊字符,只有256个字符;
unicode:1个字符,无论中文、英文、数字,都用4个字节表示;
utf-8:用最少的字节表示一个字符,英文占一个字节,欧洲文字占2个字节,亚洲文字占3个字节;
gbk:英文占一个字节,中文占两个字节,不能表示所有中文,最多表示65536个字符;
14.字节码和机器码的区别?
机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
15.三元运算规则以及应用场景?
结果1 if 表达式 结果2
16.列举 Python2和Python3的区别?
python2支持xrange和range,python只支持range
python2支持int,long类型,python3统一用int
python2支持raw_input,python3用input
17.用一行代码实现数值交换
a = 1
b = 2
a, b = b, a
18.Python3和Python2中 int 和 long的区别?
19.xrange和range的区别?
在python2,xrange返回一个生成器,range返回一个列表
在python3,range返回一个对象
20.文件操作时:xreadlines和readlines的区别?
readlines()读取文件所有内容,按行为单位放到一个列表中,返回list类型
xreadlines(),返回一个生成器。
21.列举布尔值为False的常见值?
'',[],(),{}
22.字符串、列表、元组、字典每个常用的5个方法?
字符串:strip,replace,index,find,split
列表:append,extend,pop,insert,remove
元组:index,count
字典:get,pop,keys,items,values,update
23.lambda表达式格式以及应用场景?
lambda x:x + 1
24.pass的作用?
pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
25.arg和*kwarg作用
arg 接收位置参数,*kwarg接收关键字参数
26.is和==的区别
== 比较的是值,is比较的是内存地址
27.简述Python的深浅拷贝以及应用场景?
浅拷贝第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址
深拷贝拷贝所有层,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变
28.Python垃圾回收机制?
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]}
31 求结果:
def num():
return [lambda x: i * x for i in range(4)]
print([m(2) for m in num()])
[6,6,6,6]
31.列举常见的内置函数?
map,zip,filter,bin,oct,hex,sorted,print,divmod,enumerate,range
32.filter、map、reduce的作用?
map:遍历序列,对序列中每个元素进行操作,最终获取新的序列。
filter:对于序列中的元素进行筛选,最终获取符合条件的序列
reduce:对于序列内所有元素进行累计操作
33.一行代码实现9*9乘法表
34.如何安装第三方模块?以及用过哪些第三方模块?
pip3 install 模块名
requests,bs4,pillow,urllib3,numpy,pandas,gevent,ffmemg
35.至少列举8个常用模块都有那些?
random,time,json,pickle,collections,os,sys,re,logging,hashlib,configparser
36.re的match和search区别?
match只从字符串的开始进行匹配,search会扫描整个字符串并返回第一个成功的匹配
37.什么是正则的贪婪匹配?
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
在量词后面加上?,则采用非贪婪匹配,比如.*?,.+?
38.求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
[0,1,0,1,0,1,0,1,0,1]
返回一个生成器
39.求结果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
1
2
False
True
40.def func(a,b=[]) 这种写法有什么坑?
如果不传参数b,对参数b进行修改操作,会改变参数b
41.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
'1,2,3'.split(',')
42.如何实现[‘1’,’2’,’3’]变成[1,2,3] ?
[int(i) for i in ['1', '2', '3']]
43.比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?
[1, 2, 3] == [(1), (2), (3)]
[(1,),(2,),(3,)],列表的每一个元素是元组
44.如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
[i ** 2 for i in range(1, 11)]
45.一行代码实现删除列表中重复的值 ?
l = [1,1,2,2,3,3]
list(set(l))
46.如何在函数中设置一个全局变量 ?
x = 1
def func():
global x
x = 2
47.logging模块的作用?以及应用场景?
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等
49.请用代码简答实现stack 。
class Stack(object):
def init(self):
self.stack = []
def push(self, val):
self.stack.append(val)
def pop(self):
return self.stack.pop()
@property
def top(self):
return self.stack[-1]
@property
def size(self):
return len(self.stack)
50.常用字符串格式化哪几种?
format()
%s
51.简述 生成器、迭代器、可迭代对象 以及应用场景?
生成器:生成器也是迭代器,函数内部含有yield关键字,生成器表达式
迭代器:必须含有iter()、next()方法,包含next()方法的可迭代对象就是迭代器
可迭代对象:内部含有iter_()方法
52.用Python实现一个二分查找的函数。
def search(li, i, left=0, right=None):
if not right:
right = len(li) - 1
if left <= right:
mid = (left + right) // 2
if i < li[mid]:
return search(li, i, left, mid - 1)
elif i > li[mid]:
return search(li, i, mid + 1, right)
else:
return '在列表的第{}个数'.format(mid + 1)
else:
return '没有这个数'
53.谈谈你对闭包的理解?
内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数称为闭包函数
54.os和sys模块的作用?
os模块是与操作系统交互的一个接口,提供了访问操作系统底层的接口
sys模块是与python解释器交互的一个接口,提供了一系列的函数和变量,用于操控python的运行时环境
55.如何生成一个随机数?
import random
f1 = random.random()
f2 = random.uniform(1, 10)
n1 = random.randint(1, 100)
n2 = random.randrange(1, 100)
random,uniform生成小数,randint,randrange生成整数
56.如何使用python删除一个文件?
import os