<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    3月找C++工作的小伙伴看過來:C++面試題

    • 發布:C++培訓
    • 來源:北京達內教育
    • 時間:2019-03-01 18:01

    今天為大家分享的是一份C++面試題,助力你3月份面試成功,順利摘得C++工程師offer!

    一、進程與線程的區別

    (1)粒度性分析:線程的粒度小于進程。

    (2)調度性分析:進程是資源擁有的基本單位,線程是獨立調度與獨立運行的基本單位,出了寄存器,程序計數器等必要的資源外基本不擁有其他資源。

    (3)系統開銷分析:由于線程基本不擁有系統資源,所以在進行切換時,線程切換的開銷遠遠小于進程。

    二、進程的狀態及其轉換

    進程的狀態及其轉換

    三、進程同步與互斥的區別

    互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。

    同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。

    簡單地說:同步體現的是一種協作性,互斥體現的是一種排他性。

    四、進程間的通信方式有哪些?

    (1) 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。

    (2)有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信。

    (3)信號量( semophore ) : 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。

    (4) 消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大小受限等缺點。

    (5)信號 ( sinal ) : 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生。

    (6)共享內存( shared memory ) :共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號兩,配合使用,來實現進程間的同步和通信。

    (7)套接字( socket ) : 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信。

    五、作業(或進程)的調度算法有哪些?

    (1)先來先服務(FCFS,First-Come-First-Served): 此算法的原則是按照作業到達后備作業隊列(或進程進入就緒隊列)的先后次序來選擇作業(或進程)。

    (2)短作業優先(SJF,Shortest Process Next):這種調度算法主要用于作業調度,它從作業后備隊列中挑選所需運行時間(估計值)最短的作業進入主存運行。

    (3)時間片輪轉調度算法(RR,Round-Robin):當某個進程執行的時間片用完時,調度程序便停止該進程的執行,并將它送就緒隊列的末尾,等待分配下一時間片再執行。然后把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程,在一給定的時間內,均能獲得一時間片處理機執行時間。

    (4)高響應比優先(HRRN,Highest Response Ratio Next): 按照高響應比((已等待時間+要求運行時間)/ 要求運行時間)優先的原則,在每次選擇作業投入運行時,先計算此時后備作業隊列中每個作業的響應比RP然后選擇其值最大的作業投入運行。

    (5) 優先權(Priority)調度算法: 按照進程的優先權大小來調度,使高優先權進程得到優先處理的調度策略稱為優先權調度算法。注意:優先數越多,優先權越小。

    (6)多級隊列調度算法:多隊列調度是根據作業的性質和類型的不同,將就緒隊列再分為若干個子隊列,所有的作業(或進程)按其性質排入相應的隊列中,而不同的就緒隊列采用不同的調度算法。

    六、死鎖產生的原因,死鎖產生的必要條件是什么,如何預防死鎖,如何避免死鎖,死鎖定理?

    死鎖產生的原因:(1)競爭資源;(2)進程推進順序不當。

    死鎖產生的必要條件:

    (1)互斥條件:一個資源一次只能被一個進程所使用,即是排它性使用。

    (2)不剝奪條件:一個資源僅能被占有它的進程所釋放,而不能被別的進程強占。

    (3)請求與保持條件:進程已經保持了至少一個資源,但又提出了新的資源要求,而該資源又已被其它進程占有,此時請求進程阻塞,但又對已經獲得的其它資源保持不放。

    (4)環路等待條件:當每類資源只有一個時,在發生死鎖時,必然存在一個進程-資源的環形鏈。

    預防死鎖:破壞四個必要條件之一。

    死鎖的避免:銀行家算法,該方法允許進程動態地申請資源,系統在進行資源分配之前,先計算資源分配的安全性。若此次分配不會導致系統從安全狀態向不安全狀態轉換,便可將資源分配給進程;否則不分配資源,進程必須阻塞等待。從而避免發生死鎖。

    死鎖定理:S為死鎖狀態的充分條件是:尚且僅當S狀態的資源分配圖是不可完全簡化的,該充分條件稱為死鎖定理。

    死鎖的解除:

    (1)方法1:強制性地從系統中撤消一個或多個死鎖的進程以斷開循環等待鏈,并收回分配給終止進程的全部資源供剩下的進程使用。

    (2)方法2:使用一個有效的掛起和解除機構來掛起一些死鎖的進程,其實質是從被掛起的進程那里搶占資源以解除死鎖。

    七、分段式存儲管理、分頁式存儲管理,兩個的區別?

    分段式存儲管理:分頁存儲管理是將一個進程的地址(邏輯地址空間)空間劃分成若干個大小相等的區域,稱為頁,相應地,將內存空間劃分成與頁相同大小(為了保證頁內偏移一致)的若干個物理塊,稱為塊或頁框(頁架)。在為進程分配內存時,將進程中的若干頁分別裝入多個不相鄰接的塊中。

    分頁式存儲管理:在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段是一組完整的邏輯信息,如有主程序段、子程序段、數據段及堆棧段等,每個段都有自己的名字,都是從零開始編址的一段連續的地址空間,各段長度是不等的。

    兩者的區別:

    1、頁是信息的物理單位,分頁是為了實現非連續的分配,以便解決內存的碎片問題,或者說分頁是為了由于系統管理的需要。

    2、頁的大小固定是由系統確定的,將邏輯地址劃分為頁號和頁內地址是由機器硬件實現的。而段的長度是不固定的,決定與用戶的程序長度,通常由編譯程序進行編譯時根據信息的性質來劃分。

    3、分頁式存儲管理的作業地址空間是一維的,分段式的存儲管理的作業管理地址空間是二維的。

    八、頁面置換算法有哪些?

    (1)最佳置換算法(Optimal):即選擇那些永不使用的,或者是在最長時間內不再被訪問的頁面置換出去。(它是一種理想化的算法,性能最好,但在實際上難于實現)。

    (2)先進先出置換算法FIFO:該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。

    (3)最近最久未使用置換算法LRU(Least Recently Used):該算法是選擇最近最久未使用的頁面予以淘汰,系統在每個頁面設置一個訪問字段,用以記錄這個頁面自上次被訪問以來所經歷的時間T,當要淘汰一個頁面時,選擇T最大的頁面。

    (4)Clock置換算法:也叫最近未用算法NRU(Not RecentlyUsed)。該算法為每個頁面設置一位訪問位,將內存中的所有頁面都通過鏈接指針鏈成一個循環隊列。當某頁被訪問時,其訪問位置“1”。在選擇一頁淘汰時,就檢查其訪問位,如果是“0”,就選擇該頁換出;若為“1”,則重新置為“0”,暫不換出該頁,在循環隊列中檢查下一個頁面,直到訪問位為“0”的頁面為止。由于該算法只有一位訪問位,只能用它表示該頁是否已經使用過,而置換時是將未使用過的頁面換出去,所以把該算法稱為最近未用算法。

    (5)最少使用置換算法LFU:該算法選擇最近時期使用最少的頁面作為淘汰頁。

    這八道C++面試題你做對了嗎?不會的趕緊查找資料,搞懂了,不要等到面試的時候露怯冷場哦!

    免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:10道C/C++常見面試題
    下一篇:金三銀四,達內C++培訓送你C++面試題助力通關!

    幾個C語言經典基礎算法(含代碼)

    不得不知道的八個C語言面試題

    C/C++后臺開發面試難不難,京東二面

    C/C++后臺開發面試難不難,來看看京東

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>