C 開發系統架構面試題(持續更新)

2021-10-07 01:43:10 字數 1860 閱讀 5229

集中式/非集中式/分布式

2.多台伺服器要執行計畫任務,但只有拿到鎖的任務才能執行,有乙個中心伺服器來負責分配鎖,但要保證服務的高可靠性。

3.如何有效的判斷伺服器是否存活?伺服器是否踢出集群的決策如何產生?

可以採用佇列進行處理,寫乙個佇列介面保證同一時間只有乙個程序能夠訪問到資料,或者對於訪問資料庫的來說,資料庫也是可以加鎖處理的

效能對伺服器程式來說是至關重要的了,畢竟每個客戶都期望自己的請求能夠快速的得到響應並處理。那麼影響伺服器效能的首要因素應該是:

(1)系統的硬體資源,比如說cpu個數,速度,記憶體大小等。不過由於硬體技術的飛速發展,現代伺服器都不缺乏硬體資源。因此,需要考慮的主要問題是如何從「軟環境」來提公升伺服器的效能。

(2)伺服器的」軟環境「

一方面是指系統的軟體資源,比如作業系統允許使用者開啟的最大檔案描述符數量

另一方面指的就是伺服器程式本身,即如何從程式設計的角度來確保伺服器的效能。

主要就要考慮大量併發的處理這涉及到使用程序池或執行緒池實現高效的併發模式(半同步/半非同步和領導者/追隨者模式),以及高效的邏輯處理方式–有限狀態機記憶體的規劃使用比如使用記憶體池,以空間換時間,被事先建立好,避免動態分配,減少了伺服器對核心的訪問頻率,資料的複製,伺服器程式還應該避免不必要的資料複製,尤其是當資料複製發生在使用者空間和核心空間之間時。如果核心可以直接處理從socket或者檔案讀入的資料,則應用程式就沒必要將這些資料從核心緩衝區拷貝到應用程式緩衝區中。這裡所謂的「直接處理」,是指應用程式不關心這些資料的具體內容是什麼,不需要對它們作任何分析。比如說ftp伺服器,當客戶請求乙個檔案時,伺服器只需要檢測目標檔案是否存在,以及是否有許可權讀取就可以了,不需要知道這個檔案的具體內容,這樣的話ftp伺服器就不需要把目標檔案讀入應用程式緩衝區然後呼叫send函式來傳送,而是直接使用「零拷貝」函式sendfile直接將其傳送給客戶端。另外,使用者**空間的資料賦值也應該盡可能的避免複製。當兩個工作程序之間需要傳遞大量的資料時,我們就應該考慮使用共享記憶體來在他們直接直接共享這些資料,而不是使用管道或者訊息佇列來傳遞。上下文切換和鎖:併發程式必須考慮上下文的切換問題,即程序切換或執行緒切換所導致的系統開銷。即時i/o密集型伺服器也不應該使用過多的工作執行緒(或工作程序),否則程序間切換將占用大量的cpu時間,伺服器真正處理業務邏輯的cpu時間比重就下降了。因此為每個客戶連線都建立乙個工作執行緒是不可取的。應該使用某種高效的併發模式。(半同步半非同步或者說領導者追隨者模式)另乙個問題就是共享資源的加鎖保護。鎖通常被認為是導致伺服器效率低下的乙個因素,因為由他引入的**不僅不處理業務邏輯,而且需要訪問核心資源,因此如果伺服器有更好的解決方案,應該盡量避免使用鎖。或者說伺服器一定非要使用鎖的話,盡量使用細粒度的鎖,比如讀寫鎖,當工作執行緒都唯讀一塊記憶體區域時,讀寫鎖不會增加系統開銷,而只有當需要寫時才真正需要鎖住這塊記憶體區域。對於高峰和低峰的伸縮處理,適度的快取。

可以試下先將使用者名稱通過編碼方式轉換,如轉換64位整型。然後設定n個區間,每個區間為2^64/n的大小。對於新的使用者名稱,先通過2分尋找該使用者名稱屬於哪個區間,然後在在這個區間,做乙個hash。對於不同的時間複雜度和記憶體要求可以設定不同n的大小~

加一些基礎的技術面試之外的職業素養的面試問題

1.你在工作中犯了個錯誤,有同事打你小報告,你如何處理?

a.同事之間應該培養和形成良好的同事關係,就是要互相支援而不是互相拆台,互相學習,互相幫助,共同進步。

b.如果小報告裡邊的事情都是事實也就是說確實是本人做的不好不對的方面,那麼自己應該有則改之,提高自己。如果小報告裡邊的事

情全部不是事實,就是說確實誣陷,那麼應該首先堅持日久見人心的態度,持之以恆的把本職工作做好,然後在必要的時候通過適當的

方式和領導溝通,相信領導會知道的。

2.你和同事合作完成乙個任務,結果任務錯過了截止日期,你如何處理?

3.專案中遇到的難題,你是如何解決的?

a.時間 b要求 c.方法

c 面試面試題 持續更新中。。。

1 下面輸出什麼?public class a public class b a class program 解答 首先4.0 是編譯不過,缺少隱式轉換,這種操作本來就是錯誤的 執行時5.0丟擲異常,無法將a轉換成b 1.0 print a 2.0 print b,3.0 print b 2 將乙個...

C 面試題整理 持續更新

1.自己實現memcpy void mymemcopy void dest,const void src,size t count 2.兩個有序鍊錶合成乙個有序鍊錶 遞迴演算法 nodeptr merge lists nodeptr one head,nodeptr two head else re...

C 面試題彙總 持續更新

1.c與c 的區別?c是面向過程,c 物件導向,c是c 的乙個子集,c 還有繼承多型分裝等特性 2.c 11的新特性?c 14?c 17 c 11 auto關鍵字,nullptr,for新用法 for auto a b 智慧型指標,匿名函式 lambda 等 c 14 auto關鍵字擴充套件,泛型l...