久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 九道常見(jian)嵌(qian)入(ru)式工程師面試題(第二(er)彈)

九道常見嵌(qian)入式工程(cheng)師面試(shi)題(ti)(第二彈(dan)) 時間:2021-06-11      來(lai)源(yuan):華清遠見(jian)

我們根據(ju)以往的學員(yuan)的面(mian)(mian)試(shi)經歷,為大(da)家整理了一些面(mian)(mian)試(shi)經常會遇到的題目,希望這些干貨對大(da)家面(mian)(mian)試(shi)有(you)所幫(bang)助。話不(bu)多數直接看(kan)題:

一.局部變量能否和全局變量重名?

答:能(neng),局部會屏(ping)蔽全局。

局(ju)部變(bian)量(liang)可以與全(quan)(quan)局(ju)變(bian)量(liang)同名,在(zai)函數(shu)內引用(yong)(yong)這(zhe)個變(bian)量(liang)時,會用(yong)(yong)到(dao)同名的(de)局(ju)部變(bian)量(liang),而不會用(yong)(yong)到(dao)全(quan)(quan)局(ju)變(bian)量(liang)。

對(dui)于有些(xie)編(bian)譯器而言(yan),在(zai)同一個(ge)函(han)數內(nei)可(ke)以(yi)定義多個(ge)同名(ming)的(de)局部變(bian)(bian)量,比(bi)如在(zai)兩個(ge)循環體內(nei)都定義一個(ge)同名(ming)的(de)局部變(bian)(bian)量,而那個(ge)局部變(bian)(bian)量的(de)作用(yong)域(yu)就在(zai)那個(ge)循環體內(nei)。

二.嵌入式系統中經常要用到無限循環,如何用C編寫死循環

答:while(1){}或者for(;;)

三.關鍵字static的作用是什么?

答:在C語(yu)言中,關鍵(jian)字static有三個明顯的作用:

1) 在函數(shu)體,一(yi)個被(bei)聲明為靜態的變量在這一(yi)函數(shu)被(bei)調用過程(cheng)中維持(chi)其值(zhi)不變。

2) 在(zai)(zai)模(mo)(mo)塊(kuai)內(但在(zai)(zai)函數(shu)體外),一個被(bei)聲明為靜態的變量(liang)可以被(bei)模(mo)(mo)塊(kuai)內所(suo)用函數(shu)訪問(wen),但不能被(bei)模(mo)(mo)塊(kuai)外其它(ta)函數(shu)訪問(wen)。它(ta)是一個本地的全局(ju)變量(liang)。

3) 在(zai)模(mo)塊內,一(yi)個被(bei)聲明為(wei)靜(jing)態的(de)(de)函(han)(han)數(shu)只可被(bei)這一(yi)模(mo)塊內的(de)(de)其它(ta)函(han)(han)數(shu)調(diao)用。那就是,這個函(han)(han)數(shu)被(bei)限制在(zai)聲明它(ta)的(de)(de)模(mo)塊的(de)(de)本地范圍內使用。

四.static全局變量與普通的全局變量有什么區別?static函數與普通函數有什么區別?

答:全(quan)局變(bian)(bian)量(外部變(bian)(bian)量)的說明之前再冠以static 就構成了(le)靜態的全(quan)局變(bian)(bian)量。

全局變量本身(shen)就是(shi)靜態存儲方(fang)式,靜態全局變量當然(ran)也是(shi)靜態存儲方(fang)式。這兩者(zhe)在存儲方(fang)式上并無不同(tong)。

這兩(liang)者(zhe)的區別(bie)雖在于非靜態(tai)全局(ju)(ju)變(bian)(bian)量(liang)的作(zuo)(zuo)用域(yu)是整個源(yuan)程(cheng)序, 當一(yi)個源(yuan)程(cheng)序由多個源(yuan)文(wen)件(jian)組成(cheng)時,非靜態(tai)的全局(ju)(ju)變(bian)(bian)量(liang)在各個源(yuan)文(wen)件(jian)中(zhong)都是有效的。而(er)靜態(tai)全局(ju)(ju)變(bian)(bian)量(liang)則限制了(le)其作(zuo)(zuo)用域(yu),即只在定義該變(bian)(bian)量(liang)的源(yuan)文(wen)件(jian)內有效, 在同一(yi)源(yuan)程(cheng)序的其它源(yuan)文(wen)件(jian)中(zhong)不能使(shi)用它。

由(you)于靜態(tai)全(quan)局變量的(de)作(zuo)用域局限于一個源(yuan)文(wen)件(jian)內,只能為該源(yuan)文(wen)件(jian)內的(de)函數公用,因(yin)此可(ke)以(yi)避免在其它源(yuan)文(wen)件(jian)中引起錯誤。

從(cong)以(yi)上分析可以(yi)看(kan)出,把(ba)局(ju)部(bu)變量(liang)(liang)改(gai)(gai)(gai)變為靜態變量(liang)(liang)后是改(gai)(gai)(gai)變了它(ta)的(de)存(cun)儲方(fang)式即(ji)改(gai)(gai)(gai)變了它(ta)的(de)生存(cun)期。把(ba)全局(ju)變量(liang)(liang)改(gai)(gai)(gai)變為靜態變量(liang)(liang)后是改(gai)(gai)(gai)變了它(ta)的(de)作用(yong)域,限制了它(ta)的(de)使用(yong)范圍。

static函(han)數(shu)與普通函(han)數(shu)作用域不(bu)同。僅在(zai)(zai)本文件。只在(zai)(zai)當前(qian)源文件中(zhong)使用的函(han)數(shu)應(ying)該說明為(wei)內部函(han)數(shu)(static),內部函(han)數(shu)應(ying)該在(zai)(zai)當前(qian)源文件中(zhong)說明和定義。

對于可在當前源(yuan)文(wen)(wen)件(jian)以外使(shi)用的函(han)(han)數,應(ying)該(gai)在一個(ge)頭文(wen)(wen)件(jian)中(zhong)說(shuo)明,要使(shi)用這些函(han)(han)數的源(yuan)文(wen)(wen)件(jian)要包含這個(ge)頭文(wen)(wen)件(jian)。

五.進程之間通信的途徑有哪些?

答:進程間通信主要(yao)通過管道、消息、信號等途徑(jing)進行。

1、無名管道( pipe ):管道是一種半(ban)雙工的通信方式(shi),數據只(zhi)能單(dan)向(xiang)流動,而且只(zhi)能在具有親(qin)緣關(guan)系(xi)的進(jin)程(cheng)間使用(yong)。進(jin)程(cheng)的親(qin)緣關(guan)系(xi)通常是指父子進(jin)程(cheng)關(guan)系(xi)。

2、高級(ji)管(guan)道(popen):將(jiang)另一個程序當做一個新的(de)進(jin)程在(zai)當前程序進(jin)程中(zhong)啟動,則它算是當前程序的(de)子進(jin)程,這種方式我們成為高級(ji)管(guan)道方式。

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

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

5、信號量( semophore ) :信號量是一(yi)個計數器(qi),可以用來控制多(duo)個進程(cheng)對共享(xiang)資(zi)(zi)源的訪問。它(ta)常作(zuo)為一(yi)種鎖機制,防止某(mou)進程(cheng)正在訪問共享(xiang)資(zi)(zi)源時,其他進程(cheng)也(ye)訪問該資(zi)(zi)源。因(yin)此,主要作(zuo)為進程(cheng)間(jian)以及(ji)同一(yi)進程(cheng)內不(bu)同線(xian)程(cheng)之間(jian)的同步手段。

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

 7、共(gong)(gong)享內存( shared memory ) :共(gong)(gong)享內存就是映射一段(duan)(duan)能(neng)被其他進(jin)(jin)(jin)程(cheng)所訪(fang)問的(de)(de)內存,這段(duan)(duan)共(gong)(gong)享內存由一個進(jin)(jin)(jin)程(cheng)創建,但(dan)多個進(jin)(jin)(jin)程(cheng)都(dou)可以訪(fang)問。共(gong)(gong)享內存是最快的(de)(de) IPC 方式(shi),它是針對其他進(jin)(jin)(jin)程(cheng)間通(tong)信方式(shi)運行(xing)效率低(di)而專門(men)設(she)計的(de)(de)。它往往與其他通(tong)信機制,如信號(hao)兩,配合使用,來實(shi)現進(jin)(jin)(jin)程(cheng)間的(de)(de)同步和通(tong)信。

8、套接字(zi)( socket ) :套解口也是一種進程間通信(xin)機制,與其他通信(xin)機制不同的是,它可(ke)用于(yu)不同機器間的進程通信(xin)。

六.死鎖的4個必要條件

答:

1、互斥(chi):某種資源一(yi)次只(zhi)允許一(yi)個(ge)進程(cheng)訪問(wen),即(ji)該資源一(yi)旦分配給某個(ge)進程(cheng),其他進程(cheng)就不能(neng)再訪問(wen),直到該進程(cheng)訪問(wen)結束。

 2、占有(you)且等待:一(yi)(yi)個進程(cheng)本(ben)身占有(you)資源(一(yi)(yi)種或多種),同時還有(you)資源未(wei)得到滿足,正在等待其(qi)他進程(cheng)釋放該資源。

3、不可搶(qiang)占(zhan):別(bie)(bie)人已經占(zhan)有了某項資源(yuan),你不能因為自己也需(xu)要該資源(yuan),就(jiu)去(qu)把別(bie)(bie)人的資源(yuan)搶(qiang)過來。

4、循環等待:存在一(yi)個進(jin)程(cheng)(cheng)鏈,使得每(mei)個進(jin)程(cheng)(cheng)都占有下(xia)一(yi)個進(jin)程(cheng)(cheng)所需的至少(shao)一(yi)種(zhong)資源。

 當(dang)以上四個條件均滿足,必(bi)然會造成死(si)鎖(suo),發生死(si)鎖(suo)的進程(cheng)無法(fa)進行(xing)下去,它們所(suo)持(chi)有(you)的資源也(ye)無法(fa)釋放(fang)。這樣會導(dao)致CPU的吞(tun)吐量下降。所(suo)以死(si)鎖(suo)情況是會浪費系(xi)統(tong)資源和影(ying)響計算機的使用性(xing)能(neng)的。那么,解決(jue)死(si)鎖(suo)問題就是相(xiang)當(dang)有(you)必(bi)要的了(le)。

七.死鎖的處理方式有哪些?

答(da):死鎖的(de)處理方(fang)式主要從預防(fang)死鎖、避免死鎖、檢(jian)測(ce)與(yu)解除(chu)死鎖這四(si)個方(fang)面來進行處理。

預防死鎖:

1、資源一次性分(fen)配:(破(po)壞請(qing)求和保(bao)持條件)

2、可剝奪資(zi)(zi)源:即(ji)當某進程(cheng)新的資(zi)(zi)源未滿(man)足時,釋放(fang)已占有的資(zi)(zi)源(破壞不可剝奪條件)

3、資(zi)源有(you)序分配法:系統給每類資(zi)源賦予一個(ge)編號,每一個(ge)進程(cheng)按編號遞增的順(shun)序請求資(zi)源,釋放(fang)則(ze)相反(破壞(huai)環路等待條件)

避免死鎖:

預防死(si)(si)(si)鎖(suo)的幾種策略(lve),會嚴重地損害(hai)系統(tong)(tong)性(xing)能。因(yin)(yin)此(ci)在避免(mian)死(si)(si)(si)鎖(suo)時,要(yao)施(shi)加較弱的限制,從而獲(huo)得 較滿意的系統(tong)(tong)性(xing)能。由于(yu)在避免(mian)死(si)(si)(si)鎖(suo)的策略(lve)中,允許進(jin)程動態地申(shen)請(qing)資(zi)源(yuan)(yuan)(yuan)。因(yin)(yin)而,系統(tong)(tong)在進(jin)行(xing)資(zi)源(yuan)(yuan)(yuan)分(fen)配(pei)(pei)之前預先計(ji)算(suan)資(zi)源(yuan)(yuan)(yuan)分(fen)配(pei)(pei)的安全性(xing)。若(ruo)此(ci)次(ci)分(fen)配(pei)(pei)不(bu)會導致(zhi)系統(tong)(tong)進(jin)入不(bu)安全狀態,則將資(zi)源(yuan)(yuan)(yuan)分(fen)配(pei)(pei)給進(jin)程;否(fou)則,進(jin)程等待(dai)。其中最具有代表性(xing)的避免(mian)死(si)(si)(si)鎖(suo)算(suan)法是銀行(xing)家算(suan)法。

檢測死鎖:

首(shou)先(xian)為每個進程和每個資源指定(ding)一(yi)個唯一(yi)的號(hao)碼;

然后(hou)建(jian)立資(zi)源分配表和(he)進程等(deng)待表

解除死鎖:

當發現(xian)有(you)進程死(si)鎖后,便應(ying)立即把它從(cong)死(si)鎖狀(zhuang)態(tai)中解脫出來,常采用(yong)的方法有(you):

1、剝(bo)(bo)奪(duo)資源(yuan):從其(qi)它進(jin)程剝(bo)(bo)奪(duo)足夠數量(liang)的資源(yuan)給死鎖進(jin)程,以解除(chu)死鎖狀態;

2、撤(che)消進(jin)程(cheng):可(ke)以(yi)直接撤(che)消死(si)鎖(suo)進(jin)程(cheng)或撤(che)消代價(jia)最小的(de)(de)進(jin)程(cheng),直至有足夠的(de)(de)資源可(ke)用(yong),死(si)鎖(suo)狀態.消除為止;所(suo)謂代價(jia)是(shi)指優先級、運行(xing)代價(jia)、進(jin)程(cheng)的(de)(de)重要性和價(jia)值等(deng)。

八.進程和線程有什么區別?

答:進(jin)程(cheng)(cheng)(cheng)(cheng)是并(bing)發執行的(de)程(cheng)(cheng)(cheng)(cheng)序在執行過程(cheng)(cheng)(cheng)(cheng)中分配和管理資源的(de)基(ji)本單(dan)位(wei)。線程(cheng)(cheng)(cheng)(cheng)是進(jin)程(cheng)(cheng)(cheng)(cheng)的(de)一個(ge)執行單(dan)元,是比進(jin)程(cheng)(cheng)(cheng)(cheng)還要小(xiao)的(de)獨(du)立運行的(de)基(ji)本單(dan)位(wei)。一個(ge)程(cheng)(cheng)(cheng)(cheng)序至少(shao)有(you)一個(ge)進(jin)程(cheng)(cheng)(cheng)(cheng),一個(ge)進(jin)程(cheng)(cheng)(cheng)(cheng)至少(shao)有(you)一個(ge)線程(cheng)(cheng)(cheng)(cheng)。兩者的(de)區別(bie)主要有(you)以下幾個(ge)方面:

1. 進(jin)程是資源分配的最小單位(wei)。

2. 線程(cheng)是(shi)程(cheng)序(xu)執行的(de)最(zui)小單位,也是(shi)處(chu)理器(qi)調度的(de)基(ji)本(ben)單位,但進程(cheng)不是(shi),兩者(zhe)均可(ke)并發執行。

3. 進程(cheng)(cheng)有自己(ji)的(de)(de)獨立地(di)址(zhi)空間,每啟動一(yi)個(ge)進程(cheng)(cheng),系統就會為它分(fen)配地(di)址(zhi)空間,建(jian)立數(shu)(shu)據(ju)表來維護代碼段、堆棧段和數(shu)(shu)據(ju)段,這種(zhong)操作非常昂貴。而線程(cheng)(cheng)是共享進程(cheng)(cheng)中的(de)(de)數(shu)(shu)據(ju),使用相同的(de)(de)地(di)址(zhi)空間,因此(ci),CPU切換一(yi)個(ge)線程(cheng)(cheng)的(de)(de)花費遠比進程(cheng)(cheng)小很多,同時(shi)創建(jian)一(yi)個(ge)線程(cheng)(cheng)的(de)(de)開銷也比進程(cheng)(cheng)小很多。

4. 線(xian)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)之(zhi)間的(de)通(tong)(tong)信(xin)更方便,同(tong)一(yi)進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)下的(de)線(xian)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)共享全局(ju)變量(liang)、靜態變量(liang)等數(shu)據(ju),而進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)之(zhi)間的(de)通(tong)(tong)信(xin)需(xu)要以(yi)通(tong)(tong)信(xin)的(de)方式(IPC)進行。不(bu)過(guo)如何處理好(hao)同(tong)步與互斥是編寫多(duo)(duo)線(xian)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)序(xu)的(de)難點(dian)。但是多(duo)(duo)進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)序(xu)更健(jian)壯,多(duo)(duo)線(xian)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)序(xu)只要有(you)(you)一(yi)個線(xian)程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)死掉,整個進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)也跟著死掉了,而一(yi)個進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)死掉并不(bu)會對另外一(yi)個進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)造成影響,因(yin)為進程(cheng)(cheng)(cheng)(cheng)(cheng)(cheng)有(you)(you)自己獨立的(de)地址空間。

5. 進(jin)程切(qie)換時,消耗(hao)的資源大,效率低(di)。所以涉及(ji)到(dao)頻繁的切(qie)換時,使用(yong)線(xian)程要好于進(jin)程。同樣如(ru)果要求(qiu)同時進(jin)行(xing)并(bing)且(qie)又要共享某些(xie)變(bian)量(liang)的并(bing)發操(cao)作,只能(neng)用(yong)線(xian)程不(bu)能(neng)用(yong)進(jin)程。

6. 執(zhi)行(xing)(xing)(xing)過程:每個(ge)獨(du)(du)立(li)的(de)進程有(you)一(yi)個(ge)程序(xu)運行(xing)(xing)(xing)的(de)入口(kou)、順序(xu)執(zhi)行(xing)(xing)(xing)序(xu)列和(he)程序(xu)入口(kou)。但是線(xian)(xian)程不能獨(du)(du)立(li)執(zhi)行(xing)(xing)(xing),必須(xu)依存在應用程序(xu)中,由應用程序(xu)提供多個(ge)線(xian)(xian)程執(zhi)行(xing)(xing)(xing)控制。

優缺點

線(xian)程執行開(kai)銷小,但(dan)是(shi)不利(li)于資源的(de)管理和(he)保護。線(xian)程適合在SMP機器(雙CPU系統)上運(yun)行。

進程執行開銷大,但是(shi)能夠(gou)很好的(de)進行資(zi)源管理和保護(hu),可(ke)以(yi)跨機器遷(qian)移(yi)。

何(he)時使(shi)用多(duo)(duo)進程,何(he)時使(shi)用多(duo)(duo)線程?

對資源(yuan)的管理和(he)保護要求高,不限制開(kai)銷和(he)效率時,使用多進程。

要(yao)求效率高(gao),頻繁切換時(shi),資源的保護(hu)管理(li)要(yao)求不是很高(gao)時(shi),使用多線程(cheng)。

九. 線程是否具有相同的堆棧?

答:真正的程(cheng)序執行都是線(xian)程(cheng)來完成的,程(cheng)序啟動的時候操作系(xi)統(tong)就幫(bang)你創建了一(yi)個主線(xian)程(cheng)。

每個線程有自(zi)己的堆棧。

上一篇:10道嵌入式工程師面試題(第一彈)

下一篇:沒有了

熱點文章推薦
華(hua)清(qing)學員就業榜單
高薪學(xue)員經驗(yan)分(fen)享
熱點新聞推薦(jian)
前臺專線:010-82525158 企業培訓洽談專線(xian):010-82525379 院(yuan)校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部