天天看点

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

Python

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

1

<code>&gt;&gt;&gt;</code><code>list</code><code>(</code><code>set</code><code>(AAA))</code>

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

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

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

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

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

2

3

<code>&gt;&gt;&gt;AAA</code><code>=</code><code>(</code><code>1</code><code>,</code><code>2</code><code>,</code><code>4</code><code>,</code><code>5</code><code>)</code>

<code>&gt;&gt;&gt;AAA</code><code>=</code><code>AAA[:</code><code>2</code><code>]</code><code>+</code><code>(</code><code>3</code><code>,)</code><code>+</code><code>AAA[</code><code>2</code><code>:]</code>

<code>&gt;&gt;&gt;</code><code>print</code><code>(AAA)              </code><code>#看看结果。</code>

3、简述一下search()和match()的区别

match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

4、如何在生成一个随机数?

<code>&gt;&gt;&gt;</code><code>import</code> <code>random</code>

<code>&gt;&gt;&gt;random.random()</code>

【评析】这样会生成一个在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&amp;BBB,而差集就是AAA|BBB。

6、反转由单词和不定个数空格组成的字符串,要求单词中的字母顺序不变。如:"I love    this      game!"反转成“game!      this    love I”。

4

<code>&gt;&gt;&gt; </code><code>import</code> <code>re</code>

<code>&gt;&gt;&gt; AAA </code><code>=</code> <code>"I love    this      game!"</code>

<code>&gt;&gt;&gt; BBB</code><code>=</code> <code>'</code><code>'.join(re.split(r'</code><code>(\s</code><code>+</code><code>)',AAA)[::</code><code>-</code><code>1</code><code>])</code>

<code>&gt;&gt;&gt; </code><code>print</code><code>(BBB)</code>

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

7、deepcopy和copy的区别?

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

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

【评析】

5

6

7

<code>&gt;&gt;&gt;</code><code>import</code> <code>copy</code>

<code>&gt;&gt;&gt;a</code><code>=</code><code>[</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>,</code><code>4</code><code>,[</code><code>"a"</code><code>,</code><code>"b"</code><code>]]</code>

<code>&gt;&gt;&gt;b</code><code>=</code><code>a    </code><code>#与a同进共退</code>

<code>&gt;&gt;&gt;c</code><code>=</code><code>copy.copy(a)    </code><code>#浅拷贝</code>

<code>&gt;&gt;&gt;d</code><code>=</code><code>copy.deepcopy(a)    </code><code>#深拷贝</code>

<code>&gt;&gt;&gt;a.append(</code><code>5</code><code>)</code>

<code>&gt;&gt;&gt;a[</code><code>4</code><code>].append(</code><code>"c"</code><code>)    </code><code># 此时分别输出一下a,b,c,d看一下结果。</code>

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 数据库名 &gt; 要备份的文件路径

mysqldump -u用户名 -p密码 -h主机名 --all-databases &gt;要备份的文件路径

mysqldump -u用户名 -p密码 -h主机名 --no-data 数据库名 &gt;要备份的文件路径

这里并不全,另写文章专门补充。

6、MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的?

InnoDB的行锁是通过加在索引上实现的,为什么这么设计,我也不知道,去问mysql的设计公司。

<a href="http://www.2cto.com/database/201312/265037.html" target="_blank">http://www.2cto.com/database/201312/265037.html</a>

http://www.myexception.cn/mysql/1712377.html

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