企业运维面试典型笔试题大汇总

 问题70:编写一个程序,接收两个参数ID和content

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。
(2)如果ID没有那么把ID和content写入文件result.txt中。
(来自《北京拓明科技有限公司》一灯同学提供2011-1-7)
老男孩解答参考:
分析:误区,此题看似简单,其实并不容易,好多学生,在文件没有比对完 就做实际判断并操作,得到的结果是不对的。此题能够自己不去g,可以清晰的完成下来,在写脚本,编程方面基本就过关了。
 
1、假设IDlist.txt为如下内容
[root@oldboy ~]# cat IDlist.txt
01 ydds
02 jeacen
03 kuqi
04 maidong
05 yazhe
06 maliao
07 xiaofan
2.使用编写好的ett.sh脚本实施测试
[root@oldboy ~]# sh ett.sh 03 'linux' IDlist.txt
[root@oldboy ~]# mysql -S /data/3306/mysql.sock -e "select * from oldboy.oldboy "
+------+---------+
| id   | content |
+------+---------+
|    3 | linux   |
+------+---------+
[root@oldboy ~]# sh ett.sh 06 'oldboy' IDlist.txt
[root@oldboy ~]# mysql -S /data/3306/mysql.sock -e "select * from oldboy.oldboy "
+------+---------+
| id   | content |
+------+---------+
|    6 | oldboy |
+------+---------+
[root@oldboy ~]# sh ett.sh 08 'oldboy' IDlist.txt
[root@oldboy ~]# cat result.txt
08 oldboy IDlist.txt
提示:我的上文测试的mysql没有密码。
3、实际脚本内容
[root@oldboy ~]# cat ett.sh
#!/bin/sh
############################################################
# Purpose: script
# USER          YYYY-MM-DD – ACTION
# Oldboy        2011-01-07 – Created
# QQ:49000448   老男孩       mail:[email protected]
############################################################
status=0
IdArray=($(cat $3|awk '{print $1}'))
for ((i=0; i<`echo ${#IdArray[*]}`; i++))
do
 if [ $1 -eq ${IdArray[$i]} ] ;then
         mysql -S /data/3306/mysql.sock -e "DROP DATABASE IF EXISTS oldboy;"
         mysql -S /data/3306/mysql.sock -e "create database oldboy;create table oldboy.oldboy(id int,content varchar(100))"
         mysql -S /data/3306/mysql.sock -e "insert into oldboy.oldboy values($1,'$2')"
        let status+=99;
         exit
 fi
done
 
if [ $status -ne 99 ];then
 echo "$1 $2 $3" >./result.txt
fi
问题71 如何查看apache进程数(百度和sohu面试题)
 
老男孩解答参考:
 
分两个情况
 
perfork模式:
 
ps -ef|grep http|grep -v grep|wc -l
 
worker模式
 
pstree -a|grep httpd|wc -l
 
前者进程模式  后者线程模式 故查看方法也有区别
 
说明:如果学生答题时,能一分为二的解答 会比一个答案好很多的。每次我考学生时经常得到的答案:ps -ef|grep http|wc -l 这也不能说你错,但是显然没有我给出的更吸引面试官的眼球。
 
问题72.处理以下文件内容,将域名取出并进行计数排序,如处理:(百度和sohu面试题)
 
oldboy.log
 http://www.etiantian.org/index.html
 http://www.etiantian.org/1.html
 http://post.etiantian.org/index.html
 http://mp3.etiantian.org/index.html
 http://www.etiantian.org/3.html
 http://post.etiantian.org/2.html
老男孩解答参考:
 
分析:此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等等
 
第一类 过滤域名方法
 
方法很多 老男孩这里给出六种 为例。还可以写出几种 留给大家了。哈哈
 
法一:
 
[root@oldboy ~]# cut -d "/" -f 3 oldboy.log |sort|uniq -c
 
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
法二:
 
[root@oldboy ~]# awk -F "/" '{print $3}' oldboy.log |sort|uniq -c
 
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
法三:
 
[root@oldboy ~]# sed 's/^ htt.*\/\///g' oldboy.log |sed 's/\/.*html$//g'|sort|uniq -c
 
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
法四:
 
[root@oldboy ~]# cat oldboy.log |tr "\/" "\n"|grep etiantian|sort|uniq -c
 
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org
第二类:
 
法五:
 
[root@oldboy ~]#  cut -d "/" -f 3 test.log|awk '{++S[$1]} END {for(key in S) print key,S[key]}'|sort -k2
 
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3
 
 
法六:
 
一个利用AWK数组综合解决方法
 
[root@oldboy ~]# awk -F "/" '{++S[$3]} END {for(key in S) print key,S[key]}' oldboy.log|sort -k2
 
mp3.etiantian.org 1
post.etiantian.org 2
www.etiantian.org 3
以上答案 不同组合 已可以达到10多种答案
 
提示:有关shell及以上用到的命令的学习请参考老男孩的shell系列笔记或单独视频讲解.
 
问题73. 在Shell环境下,如何查看远程Linux系统运行了多少时间?( sohu面试题)
 
解答:
 
1.uptime
16:07:56 up 276 days, 21:57,  1 user,  load average: 0.40, 0.65, 0.77
2. last|grep "system boot"|head -n 1
reboot   system boot  2.6.18-92.el5xen Tue Mar 16 18:11         (276+21:58)
#有些学生竟然给我这个答案,我很无奈。
3. top
 
 
问题74. linux下如何添加路由(百度面试题)
 
解答:
 
route 命令方法:
 
主机路由:
 
/sbin/route add -host 192.168.2.13 dev eth2
 
/sbin/route add -host 202.81.11.91 dev lo
 
缺省网关路由
 
/sbin/route add default gw 192.168.1.254
 
/sbin/route add default gw 202.11.11.1
 
网络路由 去往某一网络
 
/sbin/route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0 //通过eth0设备去连接
 
/sbin/route add -net 10.8.0.0  netmask 255.255.255.0 gw 192.168.1.90
 
/sbin/route add -net 0.0.0.0  netmask 0.0.0.0 gw 203.84.12.1
 
查看:
 
route -n
 
删除:
 
route del
 
 
 
ip route 命令方法:
 
增加路由,主要是本机可以沟通的网段
 
ip route add 192.168.5.0 dev eth0
 
增加可以通往外部的路由,需通过router
 
ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
 
增加默认路由
 
ip route add default via 192.168.1.2 dev eth0
 
查看:
 
ip route show
 
删除:
 
ip route del 192.168.10.0/24
 
本文出自 “老男孩的linux博客” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/485223

你可能感兴趣的:(面试题)