目錄
網搜面經
1.怎麼了解SRE
2.說說你在實習的主要工作
3.工作期間遇到問題,服務出現報錯會怎麼解決(上網查啊,看日志定位,修改)
4.Linux了解多少,項目中會用到嗎,你會負責些什麼(還不錯,比較熟練,必然用到,配置更改服務上線)
5.nginx了解多少,有什麼作用(反向代理,負載均衡)
6.怎麼做的負載均衡,有沒有用過什麼負載均衡算法(nginx做,用nginx自帶那幾個配置,目前沒有自己寫過相關負載均衡算法)
7.有沒有用過Python寫一些自動化腳本,說說過程(無,我是真的菜)
8.devops開發流程(這個能說好多,建議自己去看)
9.對于Apache Tomcat伺服器這些了解多少(就項目入手說經常用Tomcat啊,也會經常看經常改配置檔案啟動腳步什麼的)
10.說說你的日志分析方法(kafka拿資料然後給flink做正則清洗,采集端內建了位元組碼增強agent可以配合打點,具體參考google dapper論文)
11.大資料工具了解多少,都說說(Hadoop,spark,MapReduce,HBASE都有了解,搭建過很多大資料完全分布式叢集在上面跑過APM,個人做得是流計算方面是以說了一下flink)
12.資料存儲端,資料庫和緩存的可靠性設計(MySQL和Redis相關知識)
13.輸入URL的整個過程(通路www.baidu.com的過程)
14.HTTP 怎麼傳圖檔的
15.osi七層模型、tcp四層、五層模型及每層功能
16.對于交換機和路由器自己做過配置沒?
17.UDP包的結構
18.三次握手與四次揮手過程?什麼時候進入time_wait狀态
19.如何新增使用者
20.給普通使用者下放權限
21.Shell學習的情況:變量加載順序,使用者下.bashrc檔案和/etc/bashrc檔案中變量沖突是怎麼讀取變量的?
22.Shell的參數:$0 $1 $# 之類的意義,編寫腳本輸入是字元串 輸出是是否是ip;shell的正規表達式,如何進行提取ip(awk);怎麼拼接兩個字元;怎麼對兩個數相加
23.怎麼修改ip位址(永久和臨時)
24.Du –sh 和 ls –l 檢視檔案大小的差別
25.怎麼檢視檔案最後一行
26.檢視過Nginx開啟的程序沒有?nginx有哪些子產品?service子產品的作用?
27.裝過Mysql沒有?主從複制原理
28.Python:編寫簡單的裝飾器;python中使用過哪些内建的包?有哪些資料類型?命名空間與變量查找順序?
29.TCP與UDP的差別
30.get與post的差別,什麼時候get、什麼時候post
31.四次揮手的過程。什麼時候time_wait,為什麼time_wait,為什麼是2MSL。
32.python算法複雜度
履歷部分
網搜面經
1.怎麼了解SRE
網站可靠性工程師(SRE),就像解決運維和基礎設施的軟體工程師。SRE 專注于建立可擴充、高可用且可靠的軟體系統。
DevOps是為了填補開發端和運維端之間的資訊鴻溝,改善團隊之間的協作關系。不過需要澄清的一點是,從開發到運維,中間還有測試環節。DevOps其實包含了三個部分:開發、測試和運維。
DevOps = Development + Operations,簡而言之,通過研發(dev)把運維(ops)全部自動化(automation)
所涉及的範圍呢:代碼管理和部署,配置管理,監控,應急響應,故障處理,壓力測試,容災等等
Devops的核心概念就是通過腳本實作自動化 -> Automation
2.說說你在實習的主要工作
論文、專利
3.工作期間遇到問題,服務出現報錯會怎麼解決(上網查啊,看日志定位,修改)
先查日志,根據日志定位出錯原因與位置,看是不是配置檔案出的問題,若出現問題自己不知如何修改,可以上開源軟體官網檢視标準配置。
4.Linux了解多少,項目中會用到嗎,你會負責些什麼(還不錯,比較熟練,必然用到,配置更改服務上線)
5.nginx了解多少,有什麼作用(反向代理,負載均衡)
nginx是一個高性能的HTTP和反向代理伺服器,其特點是占用記憶體少,并發能力強.
反向代理
用戶端(使用者A)向反向代理的命名空間(name-space)中的内容發送普通請求,接着反向代理将判斷向何處(原始伺服器)轉交請求,并将獲得的内容傳回給用戶端。而用戶端始終認為它通路的是原始伺服器B而不是伺服器Z。由于防火牆作用,隻允許伺服器Z進出,防火牆和反向代理共同作用保護了院子資源伺服器B。

6.怎麼做的負載均衡,有沒有用過什麼負載均衡算法(nginx做,用nginx自帶那幾個配置,目前沒有自己寫過相關負載均衡算法)
7.有沒有用過Python寫一些自動化腳本,說說過程(無,我是真的菜)
參見主機資訊監控腳本
8.devops開發流程(這個能說好多,建議自己去看)
哪些公司在用?
DevOps正在增長,尤其是在大企業中:調查發現,DevOps的接受度有了顯著提高。74%的受訪者已經接受了DevOps,而去年這一比例為66%。目前,在81%的大企業開始接受DevOps,中小企業的接受度僅為70%。
那麼具體而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛歐實時全額自動清算系統)、Walmart、Sony等等。
他們怎麼實施的?
首先,大企業正在自下而上接受DevOps,其中業務機關或部門(31%)以及項目和團隊(29%)已經實施DevOps。不過,隻有21%的大企業在整個公司範圍内采用了DevOps。
其次,在工具層面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均為32%。Docker是年增長率最快的工具,用量增長一倍以上。Ansible的用量也有顯著增加,使用率從10%翻倍至20%。
9.對于Apache Tomcat伺服器這些了解多少(就項目入手說經常用Tomcat啊,也會經常看經常改配置檔案啟動腳步什麼的)
Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,屬于輕量級應用伺服器,在中小型系統和并發通路使用者不是很多的場合下被普遍使用,是開發和調試JSP 程式的首選。其主要的應用場景是解析動态程式代碼(JAVA) JSP程式可以處理Tomcat界面
tomcat+nginx的負載均衡:
安裝jdk
cd /usr/local/tomcat/webapps/ROOT vim test.jsp
sh startup.sh 開啟tomcat服務
nginx配置檔案寫入後端 加入反向代理 reload
主機curl 172.25.1.2/test.jsp測試
tomcat+nginx+memcache會話保持
購物車 目前登入狀态、最新釋出的消息及好友狀态
cookie是存儲在本地浏覽器,而session存儲在伺服器。
10.說說你的日志分析方法(kafka拿資料然後給flink做正則清洗,采集端內建了位元組碼增強agent可以配合打點,具體參考google dapper論文)
11.大資料工具了解多少,都說說(Hadoop,spark,MapReduce,HBASE都有了解,搭建過很多大資料完全分布式叢集在上面跑過APM,個人做得是流計算方面是以說了一下flink)
redis:
hadoop:用Java編寫的一個開源軟體架構,用于分布式存儲和對在計算機叢集上的超大型資料集的分布式處理。
12.資料存儲端,資料庫和緩存的可靠性設計(MySQL和Redis相關知識)
13.輸入URL的整個過程(通路www.baidu.com的過程)
(1)浏覽器擷取輸入的域名www.baidu.com
(2) 浏覽器向DNS請求解析www.baidu.com的IP位址
(3) 域名系統DNS解析出百度伺服器的IP位址 (詳細介紹DNS)-通過網關出去
(4) 浏覽器與該伺服器建立TCP連接配接(預設端口号80)
(5) 浏覽器發出HTTP請求,請求百度首頁
(6) 伺服器通過HTTP響應把首頁檔案發送給浏覽器
(7) TCP連接配接釋放
(8) 浏覽器将首頁檔案進行解析,并将Web頁顯示給使用者。
https://blog.csdn.net/wlk2064819994/article/details/79756669?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159775782619724843348062%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159775782619724843348062&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~rank_business_v1-1-79756669.ecpm_v3_rank_business_v1&utm_term=%E4%BB%8E%E8%BE%93%E5%85%A5URL%E5%88%B0%E5%8A%A0%E8%BD%BD%E5%9B%BE%E7%89%87%E7%9A%84%E8%BF%87%E7%A8%8B&spm=1018.2118.3001.4187
14.HTTP 怎麼傳圖檔的
15.osi七層模型、tcp四層、五層模型及每層功能
OSI七層模型 | 功能 | 對應的網絡協定 | TCP/IP四層概念模型 |
應用層 | 檔案傳輸,檔案管理,電子郵件的資訊處理——apdu | HTTP、TFTP, FTP, NFS, WAIS、SMTP | 應用層 |
表示層 | 確定一個系統的應用層發送的消息可以被另一個系統的應用層讀取,編碼轉換,資料解析,管理資料的解密和加密,最小機關——ppdu | Telnet, Rlogin, SNMP, Gopher | |
會話層 | 負責在網絡中的兩節點建立,維持和終止通信,在一層協定中,可以解決節點連接配接的協調和管理問題。包括通信連接配接的建立,保持會話過程通信連接配接的暢通,兩節點之間的對話,決定通信是否被終端一斤通信終端是決定從何處重新發送,最小機關——spdu | SMTP, DNS | |
傳輸層 | 定義一些傳輸資料的協定和端口。傳輸協定同時進行流量控制,或是根據接收方接收資料的快慢程度,規定适當的發送速率,解決傳輸效率及能力的問題——tpdu | TCP, UDP | 傳輸層 |
網絡層 | 控制子網的運作,如邏輯編址,分組傳輸,路由選擇最小機關——分組(包)封包 | IP, ICMP, ARP, RARP, AKP, UUCP | 網絡層 |
資料鍊路層 | 主要是對實體層傳輸的比特流包裝,檢測保證資料傳輸的可靠性,将實體層接收的資料進行MAC(媒體通路控制)位址的封裝和解封裝,也可以簡單的了解為實體尋址。交換機就處在這一層,最小的傳輸機關——幀 | FDDI, Ethernet, Arpanet, PDN, SLIP, PPP,STP。HDLC,SDLC,幀中繼 | 資料鍊路層 |
實體層 | 定義實體裝置的标準,主要對實體連接配接方式,電氣特性,機械特性等制定統一标準,傳輸比特流,是以最小的傳輸機關——位(比特流) | IEEE 802.1A, IEEE 802.2到IEEE 802. |
16.對于交換機和路由器自己做過配置沒?
沒
17.UDP包的結構
18.三次握手與四次揮手過程?什麼時候進入time_wait狀态
19.如何新增使用者
useradd
20.給普通使用者下放權限
sudo
21.Shell學習的情況:變量加載順序,使用者下.bashrc檔案和/etc/bashrc檔案中變量沖突是怎麼讀取變量的?
22.Shell的參數:$0 $1 $# 之類的意義,編寫腳本輸入是字元串 輸出是是否是ip;shell的正規表達式,如何進行提取ip(awk);怎麼拼接兩個字元;怎麼對兩個數相加
23.怎麼修改ip位址(永久和臨時)
24.Du –sh 和 ls –l 檢視檔案大小的差別
du檢視占磁盤記憶體大小(真實大小)
ls -l 檢視檔案占目錄大小
25.怎麼檢視檔案最後一行
tail -n 1
26.檢視過Nginx開啟的程序沒有?nginx有哪些子產品?service子產品的作用?
ngx_http_access_module子產品
ngx_http_auth_basic_module子產品
ngx_http_stub_status_module子產品
ngx_http_log_module子產品
ngx_http_gzip_module子產品
ngx_http_ssl_module子產品
ngx_http_rewrite_module子產品
ngx_http_referer_module子產品
ngx_http_headers_module子產品
service 子產品
name參數:此參數用于指定需要操作的服務名稱,比如 nginx。
state參數:此參數用于指定服務的狀态,比如,我們想要啟動遠端主機中的 nginx,則可以将 state 的值設定為 started;如果想要停止遠端主機中的服務,則可以将 state 的值設定為 stopped。此參數的可用值有 started、stopped、restarted、reloaded。
enabled參數:此參數用于指定是否将服務設定為開機 啟動項,設定為 yes 表示将對應服務設定為開機啟動,設定為 no 表示不會開機啟動。
arguments 給指令提供一些選項
runlevel 運作等級
sleep 如果運作看restarted 則stop and start 之間沉睡幾秒中
測試用例
# 測試mysqld
ansible test -m service -a 'name=mysqld state=restarted'
27.裝過Mysql沒有?主從複制原理
主機執行操作寫入bin_log
slave中的IO線程将binlog寫入relaylog
sql線程執行relaylog中的操作并寫入二進制日志binlog中
28.Python:編寫簡單的裝飾器;python中使用過哪些内建的包?有哪些資料類型?命名空間與變量查找順序?
29.TCP與UDP的差別
TCP與UDP差別總結:
1、TCP面向連接配接(如打電話要先撥号建立連接配接);UDP是無連接配接的,即發送資料之前不需要建立連接配接
2、TCP提供可靠的服務。也就是說,通過TCP連接配接傳送的資料,無差錯,不丢失,不重複,且按序到達;UDP盡最大努力傳遞,即不保 證可靠傳遞
3、TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP是面向封包的
UDP沒有擁塞控制,是以網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)
4、每一條TCP連接配接隻能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通信
5、TCP首部開銷20位元組;UDP的首部開銷小,隻有8個位元組
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
30.get與post的差別,什麼時候get、什麼時候post
一般的差別:
(1)post更安全(不會作為url的一部分,不會被緩存、儲存在伺服器日志、以及浏覽器浏覽記錄中)
(2)post發送的資料更大(get有url長度限制)
(3)post能發送更多的資料類型(get隻能發送ASCII字元)
(4)post比get慢
(5)post用于修改和寫入資料,get一般用于搜尋排序和篩選之類的操作(淘寶,支付寶的搜尋查詢都是get送出),目的是資源的擷取,讀取資料
若符合下列任一情況,則用POST方法:
* 請求的結果有持續性的副作用,例如,資料庫内添加新的資料行。
* 若使用GET方法,則表單上收集的資料可能讓URL過長。
* 要傳送的資料不是采用7位的ASCII編碼。
若符合下列任一情況,則用GET方法:
* 請求是為了查找資源,HTML表單資料僅用來幫助搜尋。
* 請求結果無持續性的副作用。
* 收集的資料及HTML表單内的輸入字段名稱的總長不超過1024個字元。
31.四次揮手的過程。什麼時候time_wait,為什麼time_wait,為什麼是2MSL。
TCP 連接配接的拆除需要發送四個包,是以稱為四次揮手(Four-way handshake),用戶端或服務端均可主動發起揮手動作。
剛開始雙方都處于
ESTABLISHED
狀态,假如是用戶端先發起關閉請求。四次揮手的過程如下:
- 第一次揮手:用戶端發送一個 FIN 封包,封包中會指定一個序列号。此時用戶端處于
FIN_WAIT1
狀态。
即發出連接配接釋放封包段(FIN=1,序号seq=u),并停止再發送資料,主動關閉TCP連接配接,進入FIN_WAIT1(終止等待1)狀态,等待服務端的确認。
- 第二次揮手:服務端收到 FIN 之後,會發送 ACK 封包,且把用戶端的序列号值 +1 作為 ACK 封包的序列号值,表明已經收到用戶端的封包了,此時服務端處于
CLOSE_WAIT
狀态。
即服務端收到連接配接釋放封包段後即發出确認封包段(ACK=1,确認号ack=u+1,序号seq=v),服務端進入CLOSE_WAIT(關閉等待)狀态,此時的TCP處于半關閉狀态,用戶端到服務端的連接配接釋放。用戶端收到服務端的确認後,進入FIN_WAIT2(終止等待2)狀态,等待服務端發出的連接配接釋放封包段。
- 第三次揮手:如果服務端也想斷開連接配接了,和用戶端的第一次揮手一樣,發給 FIN 封包,且指定一個序列号。此時服務端處于
LAST_ACK
的狀态。
即服務端沒有要向用戶端發出的資料,服務端發出連接配接釋放封包段(FIN=1,ACK=1,序号seq=w,确認号ack=u+1),服務端進入LAST_ACK(最後确認)狀态,等待用戶端的确認。
- 第四次揮手:用戶端收到 FIN 之後,一樣發送一個 ACK 封包作為應答,且把服務端的序列号值 +1 作為自己 ACK 封包的序列号值,此時用戶端處于
狀态。需要過一陣子以確定服務端收到自己的 ACK 封包之後才會進入 CLOSED 狀态,服務端收到 ACK 封包之後,就處于關閉連接配接了,處于TIME_WAIT
CLOSED
狀态。
即用戶端收到服務端的連接配接釋放封包段後,對此發出确認封包段(ACK=1,seq=u+1,ack=w+1),用戶端進入TIME_WAIT(時間等待)狀态。此時TCP未釋放掉,需要經過時間等待計時器設定的時間2MSL後,用戶端才進入CLOSED狀态。
收到一個FIN隻意味着在這一方向上沒有資料流動。用戶端執行主動關閉并進入TIME_WAIT是正常的,服務端通常執行被動關閉,不會進入TIME_WAIT狀态。
在socket程式設計中,任何一方執行close()操作即可産生揮手操作。
為什麼time_wait:
1.保證用戶端發送的最後一個ACK封包段能夠到達服務端。
2.防止“已失效的連接配接請求封包段”出現在本連接配接中。
為什麼2MSL
用戶端發送的ACK segment存活期1MSL,服務端重發FIN segment存活期1MSL,加一起2MSL。2MSL是一個臨界值,利用盡量大的等待時間來確定TCP連接配接斷開的可靠性。
32.python算法複雜度
履歷部分
熟悉 Linux 基礎知識,并熟練掌握 mkdir、tar、ls、ps、tail、head 等指令 熟練部署并維護 DNS、DHCP、NFS、FTP 等網絡基礎服務 熟悉 osi 七層與 TCP/IP 四層體系結構,熟悉 TCP 的三次握手與四次揮手過程及狀态,熟悉 web 網頁通路 過程 熟悉 shell 腳本的編寫,并熟練掌握 grep、uniq、cut、diff 等指令 熟悉 python 基礎知識,并用 python 實作過簡單的冒泡排序、插入排序等 熟悉 python 中的 Django 架構,并用 Django 搭建過簡單的圖書管理系統、檔案對比系統等 熟悉 ansible 與 saltstack 自動化運維工具 ,并自動化部署過 Apache、Nginx 等網絡服務 熟悉 Zabbix 監控軟體,實作自定義監控項,并結合雲告警平台實作微信告警 熟悉主流的 web 伺服器如 Apache、Nginx 的配置,例如虛拟主機設定、網頁重定向、端口轉發、黑白名 單等,熟悉 Nginx、Squid、Varnish 等代理軟體的工作原理及配置,實作反向代理 熟悉主流的高可用架構(Nginx、Haproxy、LVS 負載均衡+keepalived)的部署,了解多層高可用架構部 署 熟悉 MySQL 基礎操作與主從複制原理,熟悉 ProxySQL 資料庫讀寫分離熟悉應用分布式 Redis 緩存資料 庫(持久化方案、主從同步、高可用等),部署過基于 redis 緩存資料庫的 lAMP 架構