運維開發面試

2021-09-29 10:58:49 字數 2677 閱讀 6788

首先問的是簡歷的專案,用到哪些技能。後面問的是程式語言的相關知識,1、裝飾器是什麼,2、迭代器是什麼,區別是什麼;3、用過哪些python框架、4、對多執行緒、協程的理解;5、什麼是物件導向;6、什麼是容器、隔離原理是什麼、隔離用到哪些技術、cgroup、命名空間、同一物理機上不同容器通訊方式、不同物理機的容器通訊方式、會不會虛擬化;7、ps程序中狀態碼 d 是什麼意思?殭屍程序是如何產生的?8、磁碟df看的話剩餘20%可用空間,但是寫不進去資料的原因是什麼?

除此之外你還懂得哪些知識,包括自學,學校學的,專案做的。

下面一一作答:

1、裝飾器是什麼

2、迭代器是什麼,區別是什麼

3、用過哪些python框架

4、對多執行緒、協程的理解

python 多程序/多執行緒/協程 同步非同步

python併發程式設計之多程序、多執行緒、非同步、協程、通訊佇列queue和池pool的實現和應用

python多執行緒協程並行併發概念解惑

5、什麼是物件導向;

6、什麼是容器、隔離原理是什麼、隔離用到哪些技術、cgroup、命名空間、同一物理機上不同容器通訊方式、不同物理機的容器通訊方式、會不會虛擬化

7、ps程序中狀態碼 d 是什麼意思?殭屍程序是如何產生的?

如何殺死殭屍程序呢?

一般殭屍程序很難直接kill掉,不過您可以kill殭屍爸爸。父程序死後,殭屍程序成為」孤兒程序」,過繼給1號程序init,init始終會負責清理殭屍程序.它產生的所有殭屍程序也跟著消失。

ps -e -o ppid,stat | grep z | cut -d」 」 -f2 | xargs kill -9

或kill -hup `ps -a -ostat,ppid | grep -e』^[zz]『 | awk 』』`

我將nova-novncproxy stop後再start,殭屍程序即消失,問題解決。

另外子程序死後,會傳送sigchld訊號給父程序,父程序收到此訊號後,執行waitpid()函式為子程序收屍。就是基於這樣的原理:就算父程序沒有呼叫wait,核心也會向它傳送sigchld訊息,而此時,儘管對它的預設處理是忽略,如果想響應這個訊息,可以設定乙個處理函式。

如何避免殭屍程序呢?

處理sigchld訊號並不是必須的。但對於某些程序,特別是伺服器程序往往在請求到來時生成子程序處理請求。如果父程序不等待子程序結束,子程序將成為殭屍程序(zombie)從而占用系統資源。如果父程序等待子程序結束,將增加父程序的負擔,影響伺服器程序的併發效能。在linux下 可以簡單地將 sigchld訊號的操作設為sig_ign。

signal(sigchld,sig_ign);

這樣,核心在子程序結束時不會產生殭屍程序。這一點與bsd4不同,bsd4下必須顯式等待子程序結束才能釋放殭屍程序

或者用兩次fork(),而且使緊跟的子程序直接退出,是的孫子程序成為孤兒程序,從而init程序將負責清除這個孤兒程序。

8、磁碟df看的話剩餘20%可用空間,但是寫不進去資料的原因是什麼?

在磁碟上建立檔案的時候需要兩個條件:

1.磁碟空間,

2.需要有inode 任何乙個滿了都回提示裝置沒有空間。

此處具體原因是由於磁碟的inode分配完了,導致提示磁碟滿。

可以使用df -ia檢視磁碟詳細資訊。

解決:/data/cache目錄中存在數量非常多的小位元組快取檔案,占用的block不多,但是占用了大量的inode。刪除一些無用的檔案或者資料夾,釋放inode。

inode譯成中文就是索引節點,每個儲存裝置(例如硬碟)或儲存裝置的分割槽被格式化為檔案系統後,應該有兩部份,

一部份是inode,而inode呢,就是用來儲存這些資料的資訊,這些資訊包括檔案大小、屬主、歸屬的使用者組、讀寫許可權等。

另一部份是block,block是用來儲存資料用的。inode為每個檔案進行資訊索引,所以就有了inode的數值。作業系統根據指令,能通過inode值最快的找到相對應的檔案。

正確解決方法:

關於磁碟的inode滿100%--i節點大爆發

原因:通常是發現磁碟沒有滿但是無法寫入檔案。提示「no space left on device」

用df -i 檢視,應該會發現相應的分割槽是100%

一般都是crontab的job有問題,造成/var/spool/clientmqueue中產生許多的零碎檔案。

處理方法:

*用rm -rf 會不能刪除,並會有相應的提示,大意是引數太多。

可以用多種方法,這裡提及乙個我隨便寫的,在/var/spool/clientmqueue/下執行命令:「lsattr ./|awk -f"/" 『』|xargs -i rm -rf {}」用lsattr列出./下面的檔名的屬性,用awk取出名字,然後rm -rf

還有乙個方法比較普遍的使用:「find /var/spool/clientmqueue/ -type f -exec rm {} ;」或者在/var/spool/clientmqueue/目錄下「find ./ -exec rm {} ;」

將crontab中沒有定向輸出的行都在最後加上「> /dev/null 2>&1」,在刪除的過程中操作。或者先停止crontab,加上重定向。

c開發面試

1.程式設計驗證大端還是小端 方法一 void isbigendian else 方法二 void isbigendian temp temp.a 0x1234 if temp.b 0x12 低位元組存的是資料的高位元組資料 else 2.int a 10 int a 10 區別,sizeof a ...

iOS開發 面試

今天一大清早去面試,公司距離我家還挺近的,花了乙個小時走著去,也順路印下簡歷,理理思路,到了公司面試官什麼的都不錯,還給我講了很多知識,收穫也是滿滿的,總結下今天都遇到了哪些問題,調整調整狀態.1,當需要自定義tabbar的item的數量可變時怎麼做的 這裡原本是想說自定義tabbar的,不過估計考...

位元組跳動運維研發面經

工作內容 所做專案的難點 寫乙個單例,在寫乙個靜態內部類的單例 jvm記憶體模型 程式計數器是幹嘛的 jvm引數都有哪些 從寫入url到返回頁面的過程 dns是在哪維護的?維護的什麼?怎麼找到具體的ip的 整個http的請求流程 springmvc從收到請求到返回響應的流程 常見的http狀態碼?5...