1, 一行代码实现 1--100 之和
利用 sum()函数求和
2, 如何在一个函数内部修改全局变量
利用 global 修改全局变量
3, 列出 5 个 python 标准库
os: 提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime: 处理日期时间
4, 字典如何删除键和合并两个字典
del 和 update 方法
5, 谈下 python 的 GIL
GIL 是 python 的全局解释器锁, 同一进程中假如有多个线程运行, 一个线程在运行 python 程序的时候会霸占 python 解释器(加了一把锁即 GIL), 使该进程内的其他线程无法运行, 等该线程运行完后其他线程才能运行. 如果线程运行过程中遇到耗时操作, 则解释器锁解开, 使其他线程运行. 所以在多线程中, 线程的运行仍是有先后顺序的, 并不是同时进行.
多进程中因为每个进程都能被系统分配资源, 相当于每个进程有了一个 python 解释器, 所以多进程可以实现多个进程的同时运行, 缺点是进程系统资源开销大
6,python 实现列表去重的方法
先通过集合去重, 在转列表
7,fun(*args,**kwargs)中的 * args,**kwargs 什么意思?
8,python2 和 python3 的 range(100)的区别
python2 返回列表, python3 返回迭代器, 节约内存
9, 一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言, 可以使用装饰器
10,python 内建数据类型有哪些
整型 --int
布尔型 --bool
字符串 --str
列表 --list
元组 --tuple
字典 --dict
11, 简述面向对象中__new__和__init__区别
__init__是初始化方法, 创建对象后, 就立刻被默认调用了, 可接收参数, 如图
1,__new__至少要有一个参数 cls, 代表当前类, 此参数在实例化时由 Python 解释器自动识别
2,__new__必须要有返回值, 返回实例化出来的实例, 这点在自己实现__new__时要特别注意, 可以 return 父类(通过 super(当前类名, cls))__new__出来的实例, 或者直接是 object 的__new__出来的实例
3,__init__有一个参数 self, 就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
4, 如果__new__创建的是当前类的实例, 会自动调用__init__函数, 通过 return 语句里面调用的__new__函数的第一个参数是 cls 来保证是当前类实例, 如果是其他类的类名,; 那么实际创建返回的就是其他类的实例, 其实就不会调用当前类的__init__函数, 也不会调用其他类的__init__函数.
12, 简述 with 方法打开处理文件帮我我们做了什么?
打开文件在进行读写的时候可能会出现一些异常状况, 如果按照常规的 f.open
写法, 我们需要 try,except,finally, 做异常判断, 并且文件最终不管遇到什么情况, 都要执行 finally f.close()关闭文件, with 方法帮我们实现了 finally 中 f.close
(当然还有其他自定义功能, 有兴趣可以研究 with 方法源码)
13, 列表 [1,2,3,4,5], 请使用 map() 函数输出[1,4,9,16,25], 并使用列表推导式提取出大于 10 的数, 最终输出[16,25]
map()函数第一个参数是 fun, 第二个参数是一般是 list, 第三个参数可以写 list, 也可以不写, 根据需求
14,python 中生成随机整数, 随机小数, 0--1 之间小数方法
随机整数: random.randint(a,b), 生成区间内的整数
随机小数: 习惯用 numpy 库, 利用 np.random.randn(5)生成 5 个随机小数
0-1 随机小数: random.random(), 括号中不传参
15, 避免转义给字符串加哪个字母表示原始字符串?
r , 表示需要原始字符串, 不转义特殊字符
16,<div class="nam">中国</div>, 用正则匹配出标签里面的内容("中国"), 其中 class 的类名是不确定的
17,python 中断言方法举例
assert()方法, 断言成功, 则程序继续执行, 断言失败, 则程序报错
18, 数据表 student 有 id,name,score,city 字段, 其中 name 中的名字可有重复, 需要消除重复行, 请写 sql 语句
select distinct name from student
19,10 个 Linux 常用命令
ls pwd cd touch rm mkdir tree cp mv cat more grep echo
20,python2 和 python3 区别? 列举 5 个
1,Python3 使用 print 必须要以小括号包裹打印内容, 比如 print('hi')
Python2 既可以使用带小括号的方式, 也可以使用一个空格来分隔打印内容, 比如 print 'hi'
2,python2 range(1,10)返回列表, python3 中返回迭代器, 节约内存
3,python2 中使用 ascii 编码, python 中使用 utf-8 编码
4,python2 中 unicode 表示字符串序列, str 表示字节序列
python3 中 str 表示字符串序列, byte 表示字节序列
5,python2 中为正常显示中文, 引入 coding 声明, python3 中不需要
6,python2 中是 raw_input()函数, python3 中是 input()函数
21, 列出 python 中可变数据类型和不可变数据类型, 并简述原理
不可变数据类型: 数值型, 字符串型 string 和元组 tuple
不允许变量的值发生变化, 如果改变了变量的值, 相当于是新建了一个对象, 而对于相同的值的对象, 在内存中则只有一个对象 (一个地址), 如下图用 id() 方法可以打印对象的 id
可变数据类型: 列表 list 和字典 dict;
允许变量的值发生变化, 即如果对变量进行 append,+= 等这种操作后, 只是改变了变量的值, 而不会新建一个对象, 变量引用的对象的地址也不会变化, 不过对于相同的值的不同对象, 在内存中则会存在不同的对象, 即每个对象都有自己的地址, 相当于内存中对于同值的对象保存了多份, 这里不存在引用计数, 是实实在在的对象.
22,s = "ajldjlajfdljfddd", 去重并从小到大排序输出 "adfjl"
可变数据类型: 列表 list 和字典 dict;
允许变量的值发生变化, 即如果对变量进行 append,+= 等这种操作后, 只是改变了变量的值, 而不会新建一个对象, 变量引用的对象的地址也不会变化, 不过对于相同的值的不同对象, 在内存中则会存在不同的对象, 即每个对象都有自己的地址, 相当于内存中对于同值的对象保存了多份, 这里不存在引用计数, 是实实在在的对象.
23, 用 lambda 函数实现两个数相乘
24, 字典根据键从小到大排序 dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
25, 利用 collections 库的 Counter 方法统计字符串每个单词出现的次数 "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
26, 字符串 a = "not 404 found 张三 99 深圳", 每个词中间是空格, 用正则过滤掉英文和数字, 最终输出 "张三 深圳"
顺便贴上匹配小数的代码, 虽然能匹配, 但是健壮性有待进一步确认
27,filter 方法求出列表所有奇数并构造新列表, a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filter() 函数用于过滤序列, 过滤掉不符合条件的元素, 返回由符合条件元素组成的新列表. 该接收两个参数, 第一个为函数, 第二个为序列, 序列的每个元素作为参数传递给函数进行判, 然后返回 True 或 False, 最后将返回 True 的元素放到新列表
28, 列表推导式求列表所有奇数并构造新列表, a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
29, 正则 re.complie 作用
re.compile 是将正则表达式编译成一个对象, 加快速度, 并重复使用
30,a=(1,)b=(1),c=("1") 分别是什么类型的数据?
---------------------
来源: http://www.bubuko.com/infodetail-2948435.html