Python面试题(十六)
1、取出两个升序数组中的最小的一半的元素组成一个新的升序数组。
map(lambda x, y: x if x < y else y, a, b)
2、用至少2种不同的方式删除一个list里面的重复元素
a = [1, 2, 2, 4, 34, 3, 4, 56, 65, 456, 5, 6456, 456, 54, 45, 6, 464, 564] # 方法一 new_list3 = list(set(a)) # 方法二 new_list = [] for num in a: if num not in new_list: new_list.append(num) # 方法三 dict1 = dict.fromkeys(a) new_list2 = dict1.keys()
3、利用线程池(10个线程)实现一个并行打印10行信息的程序,打印This is thread xx.(注:xx为线程id)
4、关系型数据库的事务隔离级别有哪些,分别有什么影响?
1、未提交读(Read Uncommitted) 直译就是"读未提交",意思就是即使一个更新语句没有提交,但是别的事务可以读到这个改变.这是很不安全的。允许任务读取数据库中未提交的数据更改,也称为脏读。 2、提交读(Read Committed) 直译就是"读提交",可防止脏读,意思就是语句提交以后即执行了COMMIT以后别的事务就能读到这个改变. 只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 3、可重复读(Repeatable Read): 直译就是"可以重复读",这是说在同一个事务里面先后执行同一个查询语句的时候,得到的结果是一样的.在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读 4、串行读(Serializable) 直译就是"序列化",意思是说这个事务执行的时候不允许别的事务并发执行. 完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞 四,隔离级别对事务并发的控制 下表是各隔离级别对各种异常的控制能力: 丢失更新 脏读 非重复读 二类丢失更新(覆盖更新) 幻像读 未提交读 Y Y Y Y Y 提交读 N N Y Y Y 可重复读 N N N N Y 串行读 N N N N N
5、请用python编写函数find_string,从文本中搜索并打印内容,要求支持通配符星号和问号。
例子:
>>>find_string('hello\nworld\n','wor')
['wor']
>>>find_string('hello\nworld\n','l*d')
['ld']
>>>find_string('hello\nworld\n','o?')
['or']
6、请为find_string编写单元测试
7、已有一个字典列表,如下:
li = [ {'id': '1.1', 'content': "14"}, {'id': '1.2', 'content': "15"}, {'id': '1.3', 'content': "16"}, {'id': '1.4', 'content': "17"}, {'id': '1.5', 'content': "18"}, ]
请写一个类:
abc = x() >>abc['1.1'] 14
class x(UserDict): def __init__(self): super().__init__() for dic in li: # print(dic) self.data.update({dic['id']:dic['content']}) abc = x() print(abc['1.1'])
8、如何快速对学生的成绩进行评级:(源自Fluent Python)
60分以下评为F
60-70评为D
...
90分以上为A
import bisect import sys def grade(score, breakpoint=[60, 70, 80, 90], grades = 'FDCBA'): i = bisect.bisect(breakpoint, score) return grades[i] if __name__ == '__main__': level = grade(64) print(level)
人,从刚出生来到这个世界,便开始探索这个世界。累了就歇会,精神了就继续探索,直至死亡。