国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式招聘 > 嵌入式面試題 > 九道常見(jiàn)嵌入式工程師面試題(第二彈)

九道常見(jiàn)嵌入式工程師面試題(第二彈) 時(shí)間:2021-06-11      來(lái)源:華清遠(yuǎn)見(jiàn)

我們根據(jù)以往的學(xué)員的面試經(jīng)歷,為大家整理了一些面試經(jīng)常會(huì)遇到的題目,希望這些干貨對(duì)大家面試有所幫助。話不多數(shù)直接看題:

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

答:能,局部會(huì)屏蔽全局。

局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個(gè)變量時(shí),會(huì)用到同名的局部變量,而不會(huì)用到全局變量。

對(duì)于有些編譯器而言,在同一個(gè)函數(shù)內(nèi)可以定義多個(gè)同名的局部變量,比如在兩個(gè)循環(huán)體內(nèi)都定義一個(gè)同名的局部變量,而那個(gè)局部變量的作用域就在那個(gè)循環(huán)體內(nèi)。

二.嵌入式系統(tǒng)中經(jīng)常要用到無(wú)限循環(huán),如何用C編寫(xiě)死循環(huán)

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

三.關(guān)鍵字static的作用是什么?

答:在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:

1) 在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變。

2) 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn)。它是一個(gè)本地的全局變量。

3) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。

四.static全局變量與普通的全局變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?

答:全局變量(外部變量)的說(shuō)明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。

全局變量本身就是靜態(tài)存儲(chǔ)方式,靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。這兩者在存儲(chǔ)方式上并無(wú)不同。

這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個(gè)源程序, 當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),非靜態(tài)的全局變量在各個(gè)源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。

由于靜態(tài)全局變量的作用域局限于一個(gè)源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯(cuò)誤。

從以上分析可以看出,把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。

static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說(shuō)明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說(shuō)明和定義。

對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中說(shuō)明,要使用這些函數(shù)的源文件要包含這個(gè)頭文件。

五.進(jìn)程之間通信的途徑有哪些?

答:進(jìn)程間通信主要通過(guò)管道、消息、信號(hào)等途徑進(jìn)行。

1、無(wú)名管道( pipe ):管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系。

2、高級(jí)管道(popen):將另一個(gè)程序當(dāng)做一個(gè)新的進(jìn)程在當(dāng)前程序進(jìn)程中啟動(dòng),則它算是當(dāng)前程序的子進(jìn)程,這種方式我們成為高級(jí)管道方式。

3、有名管道 (named pipe) :有名管道也是半雙工的通信方式,但是它允許無(wú)親緣關(guān)系進(jìn)程間的通信。

4、消息隊(duì)列( message queue ) :消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。

5、信號(hào)量( semophore ) :信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)。它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪問(wèn)共享資源時(shí),其他進(jìn)程也訪問(wèn)該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段。

6、信號(hào) ( sinal ) :信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。

7、共享內(nèi)存( shared memory ) :共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問(wèn)。共享內(nèi)存是最快的 IPC 方式,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門(mén)設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)兩,配合使用,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信。

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

六.死鎖的4個(gè)必要條件

答:

1、互斥:某種資源一次只允許一個(gè)進(jìn)程訪問(wèn),即該資源一旦分配給某個(gè)進(jìn)程,其他進(jìn)程就不能再訪問(wèn),直到該進(jìn)程訪問(wèn)結(jié)束。

2、占有且等待:一個(gè)進(jìn)程本身占有資源(一種或多種),同時(shí)還有資源未得到滿足,正在等待其他進(jìn)程釋放該資源。

3、不可搶占:別人已經(jīng)占有了某項(xiàng)資源,你不能因?yàn)樽约阂残枰撡Y源,就去把別人的資源搶過(guò)來(lái)。

4、循環(huán)等待:存在一個(gè)進(jìn)程鏈,使得每個(gè)進(jìn)程都占有下一個(gè)進(jìn)程所需的至少一種資源。

當(dāng)以上四個(gè)條件均滿足,必然會(huì)造成死鎖,發(fā)生死鎖的進(jìn)程無(wú)法進(jìn)行下去,它們所持有的資源也無(wú)法釋放。這樣會(huì)導(dǎo)致CPU的吞吐量下降。所以死鎖情況是會(huì)浪費(fèi)系統(tǒng)資源和影響計(jì)算機(jī)的使用性能的。那么,解決死鎖問(wèn)題就是相當(dāng)有必要的了。

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

答:死鎖的處理方式主要從預(yù)防死鎖、避免死鎖、檢測(cè)與解除死鎖這四個(gè)方面來(lái)進(jìn)行處理。

預(yù)防死鎖:

1、資源一次性分配:(破壞請(qǐng)求和保持條件)

2、可剝奪資源:即當(dāng)某進(jìn)程新的資源未滿足時(shí),釋放已占有的資源(破壞不可剝奪條件)

3、資源有序分配法:系統(tǒng)給每類資源賦予一個(gè)編號(hào),每一個(gè)進(jìn)程按編號(hào)遞增的順序請(qǐng)求資源,釋放則相反(破壞環(huán)路等待條件)

避免死鎖:

預(yù)防死鎖的幾種策略,會(huì)嚴(yán)重地?fù)p害系統(tǒng)性能。因此在避免死鎖時(shí),要施加較弱的限制,從而獲得 較滿意的系統(tǒng)性能。由于在避免死鎖的策略中,允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源。因而,系統(tǒng)在進(jìn)行資源分配之前預(yù)先計(jì)算資源分配的安全性。若此次分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則將資源分配給進(jìn)程;否則,進(jìn)程等待。其中最具有代表性的避免死鎖算法是銀行家算法。

檢測(cè)死鎖:

首先為每個(gè)進(jìn)程和每個(gè)資源指定一個(gè)唯一的號(hào)碼;

然后建立資源分配表和進(jìn)程等待表

解除死鎖:

當(dāng)發(fā)現(xiàn)有進(jìn)程死鎖后,便應(yīng)立即把它從死鎖狀態(tài)中解脫出來(lái),常采用的方法有:

1、剝奪資源:從其它進(jìn)程剝奪足夠數(shù)量的資源給死鎖進(jìn)程,以解除死鎖狀態(tài);

2、撤消進(jìn)程:可以直接撤消死鎖進(jìn)程或撤消代價(jià)最小的進(jìn)程,直至有足夠的資源可用,死鎖狀態(tài).消除為止;所謂代價(jià)是指優(yōu)先級(jí)、運(yùn)行代價(jià)、進(jìn)程的重要性和價(jià)值等。

八.進(jìn)程和線程有什么區(qū)別?

答:進(jìn)程是并發(fā)執(zhí)行的程序在執(zhí)行過(guò)程中分配和管理資源的基本單位。線程是進(jìn)程的一個(gè)執(zhí)行單元,是比進(jìn)程還要小的獨(dú)立運(yùn)行的基本單位。一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。兩者的區(qū)別主要有以下幾個(gè)方面:

1. 進(jìn)程是資源分配的最小單位。

2. 線程是程序執(zhí)行的最小單位,也是處理器調(diào)度的基本單位,但進(jìn)程不是,兩者均可并發(fā)執(zhí)行。

3. 進(jìn)程有自己的獨(dú)立地址空間,每啟動(dòng)一個(gè)進(jìn)程,系統(tǒng)就會(huì)為它分配地址空間,建立數(shù)據(jù)表來(lái)維護(hù)代碼段、堆棧段和數(shù)據(jù)段,這種操作非常昂貴。而線程是共享進(jìn)程中的數(shù)據(jù),使用相同的地址空間,因此,CPU切換一個(gè)線程的花費(fèi)遠(yuǎn)比進(jìn)程小很多,同時(shí)創(chuàng)建一個(gè)線程的開(kāi)銷(xiāo)也比進(jìn)程小很多。

4. 線程之間的通信更方便,同一進(jìn)程下的線程共享全局變量、靜態(tài)變量等數(shù)據(jù),而進(jìn)程之間的通信需要以通信的方式(IPC)進(jìn)行。不過(guò)如何處理好同步與互斥是編寫(xiě)多線程程序的難點(diǎn)。但是多進(jìn)程程序更健壯,多線程程序只要有一個(gè)線程死掉,整個(gè)進(jìn)程也跟著死掉了,而一個(gè)進(jìn)程死掉并不會(huì)對(duì)另外一個(gè)進(jìn)程造成影響,因?yàn)檫M(jìn)程有自己獨(dú)立的地址空間。

5. 進(jìn)程切換時(shí),消耗的資源大,效率低。所以涉及到頻繁的切換時(shí),使用線程要好于進(jìn)程。同樣如果要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程不能用進(jìn)程。

6. 執(zhí)行過(guò)程:每個(gè)獨(dú)立的進(jìn)程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序入口。但是線程不能獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。

優(yōu)缺點(diǎn)

線程執(zhí)行開(kāi)銷(xiāo)小,但是不利于資源的管理和保護(hù)。線程適合在SMP機(jī)器(雙CPU系統(tǒng))上運(yùn)行。

進(jìn)程執(zhí)行開(kāi)銷(xiāo)大,但是能夠很好的進(jìn)行資源管理和保護(hù),可以跨機(jī)器遷移。

何時(shí)使用多進(jìn)程,何時(shí)使用多線程?

對(duì)資源的管理和保護(hù)要求高,不限制開(kāi)銷(xiāo)和效率時(shí),使用多進(jìn)程。

要求效率高,頻繁切換時(shí),資源的保護(hù)管理要求不是很高時(shí),使用多線程。

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

答:真正的程序執(zhí)行都是線程來(lái)完成的,程序啟動(dòng)的時(shí)候操作系統(tǒng)就幫你創(chuàng)建了一個(gè)主線程。

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

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

下一篇:沒(méi)有了

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部