Python
1、假设 AAA=[1,1,1,3,5,2,6,1,7,3,45],请问使用python如何在将list里重复的数字过滤掉?
>>>list(set(AAA))
【评析】注意,虽然set(list(AAA))的结果好像也是一样的,但是注意set是{},list是[]。而且如果AAA里是中括号套中括号的话,那么不可以使用set(list()),因为没法比。不是哈希。
2、简述一下list和tuple的不同
list是动态的,设定完了可以删减元素,而tuple是静态的,不能删减元素。
【评析】tuple的调用速度更快,如果是一个需要反复调用的数组,用tuple效果更好。
tuple不能索引也不能删减元素,但是其实是可以增加元素的,举个例子:
>>>AAA=(1,2,4,5)
>>>AAA=AAA[:2]+(3,)+AAA[2:]
>>>print(AAA) #看看结果。
3、简述一下search()和match()的区别
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none
4、如何在生成一个随机数?
>>>import random
>>>random.random()
【评析】这样会生成一个在0~1之间的浮点数。如果要生成一个1~10的整数,那么就是print(random,randint(1,10))。
如果要是在固定的几个元素中随机抽取一个值,比如aaa=["林志玲","贾静雯","刘涛","关咏荷","高圆圆"],要从这几个女性中随机抽取一个值,同样先import random,然后random.choice(aaa)。
5、假设 AAA=["梅西","内马尔","苏亚雷斯","皮克","布斯克茨","伊涅斯塔"],BBB=["皮克","德赫亚","拉莫斯","伊涅斯塔","法布雷加斯","布斯克茨"],如何求出两个list之间的交集和差集?
交集:CCC=[val for val in AAA if val in BBB]
差集:DDD=[val for val in AAA if val not in BBB]
【评析】DDD这个差集是AAA这个list里有但是BBB里没有的,如果要显示出BBB有而AAA没有的元素,那么就调换一下 DDD=[val for val in BBB if val not in AAA]
本题里AAA和BBB都是list,所以要用“列表生成式”;如果这里AAA和BBB都是set,即AAA={"梅西","内马尔","苏亚雷斯","皮克","布斯克茨","伊涅斯塔"},BBB={"皮克","德赫亚","拉莫斯","伊涅斯塔","法布雷加斯","布斯克茨"},那么这样求交集就是AAA&BBB,而差集就是AAA|BBB。
6、反转由单词和不定个数空格组成的字符串,要求单词中的字母顺序不变。如:"I love this game!"反转成“game! this love I”。
>>> import re
>>> AAA = "I love this game!"
>>> BBB= ''.join(re.split(r'(\s+)',AAA)[::-1])
>>> print(BBB)
【评析】这道题虽然寥寥几个字,但是真心有难度。
7、deepcopy和copy的区别?
copy:只拷贝父对象,不去深入挖掘里面的子对象
deepcopy:父对象子对象都拷贝,有点坚守原样的意思。
【评析】
>>>import copy
>>>a=[1,2,3,4,["a","b"]]
>>>b=a #与a同进共退
>>>c=copy.copy(a) #浅拷贝
>>>d=copy.deepcopy(a) #深拷贝
>>>a.append(5)
>>>a[4].append("c") # 此时分别输出一下a,b,c,d看一下结果。
Mysql
1、MySQL中myisam与innodb的区别,至少5点
【评析】将Mysql常见的存储引擎的特点归纳表格如下
特点 | myisam | innodb | memory | archive |
存储限制 | 256TB | 64TB | 有 | 无 |
事物安全 | 不 | 支持 | 不 | 不 |
支持索引 | 支持 | 支持 | 支持 | 不支持 |
锁颗粒(锁力度) | 表锁 | 行锁(没有索引的情况是表锁) | 表锁 | 行锁 |
数据压缩 | 支持 | 不支持 | 支持 | 不支持 |
支持外键 | 不 | 支持 | 不 | 不 |
2、varchar与char的区别;varchar(50)中50的涵义;int(20)中20的涵义;
char是定长变量,varchar是变长变量。 varchar(50)表示这一行的变量最大的存储字节是50个字节,int(20)同理。
【评析】假设有一行是name char(8),如果有一个数据是叫 AAA,那么它仅仅只有三个字节被存储进去,但是依旧存储了8个字节,多余的5个字节空着也就空着了。而是name varchar(8),同样是AAA,由于是变长,所以只保存了3个字节,剩下5个字节是弹性的,有就用,没有就不用。
在读取方面,char的读取速度要比varchar快,也就是常说的“用读取换容量”,但是还是多用varchar,当数据库内容成万上亿的时候,节省的容量是非常非常可观的。
3、问了下MySQL数据库cpu飙升到500%的话他怎么处理?
4、explain出来的各种item的意义;profile的意义以及使用场景;explain中的索引问题。
5、备份计划,mysqldump以及xtranbackup的实现原理;备份恢复时间;备份恢复失败如何处理。
mysqldump是采用sql级别的备份机制,将数据表导成sql脚本文件,在不用的mysql版本之间升级时相对比较合适。
xtranbackup是innodb的hotbackup工具,xtrbackup在启动的时候会复制所有的数据文件,同时会启动一个后台进程,用于监视事务日志,并且从事务日志复制最新的修改。所以xtrbackup在启动的开始,就不懂的将事务日志的每个数据文件的修改都记录下来。
mysqldump的备份和恢复时间都很慢,任何数据的更新和变化都会被挂起。
xtrabackup的恢复时间比mysqldump快一点,但是会锁表。
备份恢复失败的话,其实原因很多,主要可能就是参数设置的不对,检查一下参数。
【评析】使用mysqldump备份数据表的命令,在shell下执行:
mysqldump -u用户名 -p密码(可以直接-p) -h主机名 --databases 数据库名 > 要备份的文件路径
mysqldump -u用户名 -p密码 -h主机名 --all-databases >要备份的文件路径
mysqldump -u用户名 -p密码 -h主机名 --no-data 数据库名 >要备份的文件路径
这里并不全,另写文章专门补充。
6、MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的?
InnoDB的行锁是通过加在索引上实现的,为什么这么设计,我也不知道,去问mysql的设计公司。
http://www.2cto.com/database/201312/265037.html
http://www.myexception.cn/mysql/1712377.html