天天看点

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

本次全部都是mysql的题,非常的基础,enjoy it~

1、SELECT id,name FROM test1; 和 SELECT id name FROM test1;这两个语句有什么区别?

第一个语句会出现两个列,第二个只有一个列,列的内容是id的内容,但是列的名称是name,也就是说第二句话其实就是"SELECT id AS name FROM test1"。

2、如果想把test1表格里满足age大于等于30的username都迁移到test2表格里的username列,需要什么命令?

INSERT test2(username) SELECT username FROM test1 WHERE age >=30;

【评析】这种方法注意,新表/旧表有更新的时候,旧表/新表不随之更新。因为没有链接,仅仅是一个一次性的复制而已。

3、列举出A表里满足价格(price)大于A表里所有货品平均价格的id,name,age。

SELECT id,name,age FROM A WHERE > (SELECT AVG(price) FROM A)

【评析】 其实可以先求出来AVG(price),然后直接大于那么值就好,但是要注意SELECT ,SELECT的结果才是一个数。

如果需要把平均值四舍五入,并且保留小数点后两位,那就ROUND(AVG(price),2)

4、test1表里有一个叫"country"的列,现在需要做一个test2,专门放这些"country",并且实现这两个表的多表连接。

1)CREATE一个TABLE叫test2,里面有一列叫id,另一列叫country。

2)INSERT test2(country) SELECT country FROM test1 GROUP BY country;

3)UPDATE test1 AS OLD INNER JOIN test2 AS NEW ON test1.country = test2.country

->SET old.country = new.id 

【评析】“增删改查”,mysql难就难在这个“查”上。

5、Mysql自增长的关键字

AUTO_INCREMENT

6、mysql备份实例,自动备份mysql,并删除30天前的备份文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>#!/bin/bash</code>

<code>#Description:Auto backup mysql</code>

<code>MYSQLDB=Test1</code>

<code>MYSQLUSR=Username</code>

<code>MYSQLPASSWORD=PASSWORD    </code><code>#定义账号、密码和需要备份的数据库名</code>

<code>BACKUPDIR=backupDIR=</code><code>/data/backup/mysql/</code><code>$(</code><code>date</code> <code>+%Y-%m-%d)   </code>

<code>if</code><code>[ $UID -</code><code>ne</code> <code>0 ];</code><code>then</code>    <code>#UID是USERID的意思,0是ROOT的ID号</code>

<code>    </code><code>echo</code> <code>This script must use administrator or root user ,please </code><code>exit</code><code>!    </code>

<code>#提示当前账户不是ROOT,需要切换成ROOT用户</code>

<code>    </code><code>sleep</code> <code>2  </code>

<code>exit</code> <code>0  </code>

<code>fi</code>  

<code>  </code> 

<code>if</code><code>[ ! -d $BAKDIR ];</code><code>then</code>  

<code>mkdir</code> <code>-p $BAKDIR  </code>

<code>else</code>  

<code>echo</code> <code>This is $BAKDIR exists ,please </code><code>exit</code> <code>….  </code>

<code>sleep</code> <code>2  </code>

<code>exit</code>  

<code>fi</code>

/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -d $MYSQLDB &gt;/data/backup/mysql/`date +%Y-%m-%d`/www_db.sql  

cd $BAKDIR ; tar -czf  www_mysql_db.tar.gz *.sql  

cd $BAKDIR ;find  . -name “*.sql” |xargs rm -rf[ $? -eq 0 ]&amp;&amp;echo “This `date +%Y-%m-%d` RESIN BACKUP is SUCCESS”  

cd /data/backup/mysql/ ;find . -mtime +30 |xargs rm -rf  

7、讲述一下cookie和session的区别。

cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

【评析】cookie如果没有设置生存时间,那么关闭浏览器的瞬间,cookie就会消失,下一次登陆依旧要输入账号密码,cookie默认是存储在硬盘里而不是内存里,如果是设置了生存时间,那么就会保存在内存里,下一次继续使用。

session有一个session id,要是服务器能查询的到id,就会按这个id号的内容体现数据,如果查询不到就会新建一个id,session id是可以用cookie的形式保存的。

8、讲述一下服务器缓存的原理。

9、如何查看系统资源占用状态。

top      uptime    vmstat    free   很多命令都可以

10、如果一个网站平时业务不是很多,但是有时候业务会急剧增长,例如淘宝之类电商网站,遇到特价的时候,流量会特别大,遇到这种情况,在尽量低的成本下,应该如何做。

rsync命令去同步数据,然后dns轮询。

【评析】sync的远距离版本就是rsync,r在这里是remote的缩写。

它可以当cp这个功能用,rsync -a /A /B   将B的内容拷贝到A文件夹下。或者rsync main.c machineB:/home/userB,把main.c拷贝到B机器的userB里,他拷贝速度很快,因为他发现有不同的内容就会拷贝,相同的就跳过。

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

继续阅读