【就業福利-252期】百度linux運維開發工程師面試真題經歷+試題
看大企業的面試題,是非常重要的一件事,這樣你能看到大神運維的一個情況,今天小編收集的第二個是百度,這個企業有非常多的人想進去,但是不容易進去,以下為百度面試題實錄,內容從網絡收集整理的,僅供大家學習參考,下面是面試者個人面試心得實錄:
首先我們公布一下目前百度對Linux運維人員的要求:
百度面了好久了,兩個月了,估計都快成餿面了,一跟面條在走邊邊一不小心掉進了大海,于是就有了湯面^_^經歷非技術總結就兩句話,幸運的是在朋友的幫助下順利通過筆試,還認識了一幫super牛B的人,不幸的是最終還是由于主觀客觀擦肩而過~~
我投的是Linux運維,那個時候sed,awk根本不會(不會這兩個就知道我腳本水平),就知道一些basic command! samba,dns,svn也是半解,telnet,vnc還好點.再次鄙視下自己.還好暑假狂補了補.廢話了那么多,進正題吧~~,估計沒人愿意聽我在這里家常!
上面的各種服務,blog里都有^_^,下面的題目匯總了我自己的和一些朋友的^_^
1.基礎常見內容
a.apache虛擬主機設定
這個我以前的日志已寫了,這里就不say了~~~其實也easy現在覺得
b.假設Apache產生的日志文件名為access_log,在apache正在運行時,執行命令mv access_log access_log.bak,執行完后,請問新的apache的日志會打印到哪里?
新的日志會在access_log.bak中,因為apache啟動時會找access_log文件,隨時準備向文件中加入日志信息,雖然此時文件被改名,但是由于服務正在運行,因為它的inode節點的位置沒有變,程序打開的fd仍然會指向原來那個inode
不會因為文件名的改變而改變.apache會繼續向已改名的文件中追加日志,但是若重啟apache服務,系統會檢查access_log文件是否存在,若不存在則創建.
2.在Shell環境下,如何查看遠程Linux系統運行了多少時間?
uptime | awk '{print $3}'
3.處理以下文件內容,將域名取出并進行計數排序,如處理:?http://www.baidu.com/more/
http://www.baidu.com/guding/more.html
http://www.baidu.com/events/20060105/photomore.html
http://www.sina.com.cn/head/www20021123am.shtml
http://www.sina.com.cn/head/www20041223am.shtml
得到如下結果:
域名的出現的次數 域名
3?www.baidu.com
2?www.sina.com.cn
1?hi.baidu.co?百度總喜歡這種題目,我上篇日志的site inurl也是,這個是統計域名的,還有一個說是統計文件名的,就是后面的index沒有的就直接為空,這個用shell怎么實現還在思考中,想出來了再寫
cat file | sed -e ' s/http:\/\///' -e ' s/\/.*//' | uniq -c | sort -rn
awk -F/ '{print $3}' file |uniq -c | sort -r |awk '{print $1"\t",$2}'
4.如果得到隨機的字串,長度和字串中出現的字符表可定義,并將字串倒序顯示,如
把0123456789作為基準的字串字符表,產生一個6位的字串642031,打印出的字串為 130246,可使用bash/perl/php/c任意一種.
awk -v count=6 'BEGIN {srand();str="0123456789";len=length(str);for(i=count;i>0;i--) marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--) printf("%c",marry[i]);printf("\n");for(i=0;i<=count;i++) printf("%c",marry[i]);printf("\n")}'
5.如何查看當前Linux系統的狀態,如CPU使用,內存使用,負載情況等.
當時問到這個的時候我超級自信,可是你知道/proc目錄下的那些數字目錄代表什么嗎??教訓阿!!!(ps:不懂的自己google^_^)個人的小教訓
Linux系統中/proc是個偽文件目錄,不占用系統空間,及時的反應出內存現在使用的進程情況.其中許多文件都保存系統運行狀態和相關信息對于/proc中文件可使用文件查看命令瀏覽其內容,文件中包含系統特定信息:
cpuinfo 主機CPU信息
filesystems 文件系統信息
meninfo 主機內存信息
version Linux內存版本信息
diskstatus 磁盤負載情況
另外top命令可以動態的顯示當前系統進程用戶的使用情況,而且是動態的顯示出來,尤其是在該命令顯示出來的對上方對系統的情況進行匯總.
free命令呢可以查看真實使用的內存 一般用free -m
使用ps aux 可以查看詳細的每個進程的使用狀況
dmesg 也是常用來查看系統性能的命令
告訴我那些是進程后又問如何查看一個進程所使用的文件句柄?
/proc/進程號/fd/的個數就行了
6.查看apache進程數
個人在ubuntu下測試成功的是
ps aux | grep "apache2" | grep -v "apache2" | wc -l
個別的command,與OS有關!!!
下面的是別人滴^_^
##########################
1、/proc/sys 子目錄的作用
該子目錄的作用是報告各種不同的內核參數,并讓您能交互地更改其中的某些。與 /proc 中所有其他文件不同,該目錄中的某些文件可以寫入,不過這僅針對 root,這個google下多的是 oh no,please baidu,baidu更懂中文~~
2、將一個文本的奇數行和偶數行合并,第2行和第3行合并
a.將所有奇數行和偶數行合并,就是去奇數行的換行符了哦
sed '$!N;s/\n/ /g' test
b.就是去第二行的了哦
sed -n -e 2p -e 3p test | sed '$!N;s/\n/ /g' test
3、read 命令2秒后自動退出
read -t 2
4.下面的這兩個我沒有DIY過,沒環境阿,就自己一臺筆記本
自動ftp上傳
#!/bin/sh
ftp -n<<END_FTP
open 192.168.1.4
user codfei duibuqi //用戶名codfei 密碼duibuqi
binary
prompt off //關閉提示
mput test //上傳test
close
bye
END_FTP
自動ssh登陸 從A到B然后再到c
#!/usr/bin/expect -f
set timeout 30
spawn ssh?codfei@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh?codfei@C\r"
expect "password:"
send "pppppp\r"
interact
5、sed awk grep哪個最好
我答的是 哪個掌握的精通,都很好,但是還是問我哪個最好,我只能說awk了,對于行操作和列操作都可以操作的很好。
8、grep -E -P 是什么意思
我說的是-E, --extended-regexp 采用規則表示式去解釋樣式。 -P perl的
9、還問了我對運維這個工作的理解,和應該具備的素質。
…………
內容提供為公眾號:馬哥Linux運維 的用戶投稿
——————————
為了方便大家交流學習,我們特地組建了Linux運維學習的交流群,方便大家交流學習,目前已經有300個小伙伴在里面學習了,QQ群號碼:576095618