Linux运维工程师面试题第四套

本文介绍了Python中的数据处理技巧,包括列表操作、随机数生成、字符串处理等,并探讨了Python中list与tuple的区别及deepcopy与copy的用法。此外,还详细解析了MySQL中myisam与innodb存储引擎的特点,以及备份与恢复的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python

1、假设 AAA=[1,1,1,3,5,2,6,1,7,3,45],请问使用python如何在将list里重复的数字过滤掉?

1
>>> list ( set (AAA))

【评析】注意,虽然set(list(AAA))的结果好像也是一样的,但是注意set是{},list是[]。而且如果AAA里是中括号套中括号的话,那么不可以使用set(list()),因为没法比。不是哈希。


2、简述一下list和tuple的不同

list是动态的,设定完了可以删减元素,而tuple是静态的,不能删减元素。

【评析】tuple的调用速度更快,如果是一个需要反复调用的数组,用tuple效果更好。

tuple不能索引也不能删减元素,但是其实是可以增加元素的,举个例子:

1
2
3
>>>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、如何在生成一个随机数?

1
2
>>> 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”。

1
2
3
4
>>>  import  re
>>> AAA  =  "I love    this      game!"
>>> BBB =  ' '.join(re.split(r' (\s + )',AAA)[:: - 1 ])
>>>  print (BBB)


【评析】这道题虽然寥寥几个字,但是真心有难度。


7、deepcopy和copy的区别?

copy:只拷贝父对象,不去深入挖掘里面的子对象

deepcopy:父对象子对象都拷贝,有点坚守原样的意思。

【评析】

1
2
3
4
5
6
7
>>> 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常见的存储引擎的特点归纳表格如下

特点myisaminnodbmemoryarchive
存储限制256TB64TB
事物安全支持
支持索引支持支持支持不支持
锁颗粒(锁力度)表锁行锁(没有索引的情况是表锁)表锁行锁
数据压缩支持不支持支持不支持
支持外键支持


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



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1742467


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值