IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育

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

九道常見嵌入式工程師面試題(第二彈) 時間:2021-06-11      來源:華清遠見

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

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

答:能,局部會屏蔽全局。

局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。

對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。

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

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

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

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

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

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

3) 在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。

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

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

全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上并無不同。

這兩者的區別雖在于非靜態全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。

由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。

從以上分析可以看出,把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍。

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

對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件。

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

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

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

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

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

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

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

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

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

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

六.死鎖的4個必要條件

答:

1、互斥:某種資源一次只允許一個進程訪問,即該資源一旦分配給某個進程,其他進程就不能再訪問,直到該進程訪問結束。

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

3、不可搶占:別人已經占有了某項資源,你不能因為自己也需要該資源,就去把別人的資源搶過來。

4、循環等待:存在一個進程鏈,使得每個進程都占有下一個進程所需的至少一種資源。

當以上四個條件均滿足,必然會造成死鎖,發生死鎖的進程無法進行下去,它們所持有的資源也無法釋放。這樣會導致CPU的吞吐量下降。所以死鎖情況是會浪費系統資源和影響計算機的使用性能的。那么,解決死鎖問題就是相當有必要的了。

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

答:死鎖的處理方式主要從預防死鎖、避免死鎖、檢測與解除死鎖這四個方面來進行處理。

預防死鎖:

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

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

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

避免死鎖:

預防死鎖的幾種策略,會嚴重地損害系統性能。因此在避免死鎖時,要施加較弱的限制,從而獲得 較滿意的系統性能。由于在避免死鎖的策略中,允許進程動態地申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給進程;否則,進程等待。其中最具有代表性的避免死鎖算法是銀行家算法。

檢測死鎖:

首先為每個進程和每個資源指定一個唯一的號碼;

然后建立資源分配表和進程等待表

解除死鎖:

當發現有進程死鎖后,便應立即把它從死鎖狀態中解脫出來,常采用的方法有:

1、剝奪資源:從其它進程剝奪足夠數量的資源給死鎖進程,以解除死鎖狀態;

2、撤消進程:可以直接撤消死鎖進程或撤消代價最小的進程,直至有足夠的資源可用,死鎖狀態.消除為止;所謂代價是指優先級、運行代價、進程的重要性和價值等。

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

答:進程是并發執行的程序在執行過程中分配和管理資源的基本單位。線程是進程的一個執行單元,是比進程還要小的獨立運行的基本單位。一個程序至少有一個進程,一個進程至少有一個線程。兩者的區別主要有以下幾個方面:

1. 進程是資源分配的最小單位。

2. 線程是程序執行的最小單位,也是處理器調度的基本單位,但進程不是,兩者均可并發執行。

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

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

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

6. 執行過程:每個獨立的進程有一個程序運行的入口、順序執行序列和程序入口。但是線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。

優缺點

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

進程執行開銷大,但是能夠很好的進行資源管理和保護,可以跨機器遷移。

何時使用多進程,何時使用多線程?

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

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

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

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

每個線程有自己的堆棧。

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

下一篇:沒有了

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

回到頂部

主站蜘蛛池模板: 景德镇晶达新材料有限公司 | 欧氏运动木地板,体育木地板厂家,篮球木地板价格_欧氏体育木地板 欧派板材官网 | 全屋定制板材 专业供应商 | 十堰急开锁0719-8888139|十堰开锁公司|十堰开锁电话|十堰换锁价格-同福锁城-十堰同福锁城 | 湖南一体化污水处理设备_二氧化氯发生器_一体化净水处理设备_消毒设备厂家-湖南东环环保科技有限公司 | 热水工程|空气能热水工程|超低温采暖工程|太阳能热水工程|空气源热泵厂家|炬邦热能设备有限公司 热熔钻孔机【优质厂家】_多年热熔钻设备研发制造经验 | 排污管道疏通_长沙消防管道/暗管网漏水检测维修_长沙雨水管道疏通就找湖南鸿磊环保工程有限公司 排水PVC管-PVC排污管-给水PVC管-电线PVC管-米阳建材pvc管厂 | 昆明纸箱厂-礼盒定制-包装盒定做-纸箱厂-云南包掌柜包装有限公司 | 泥沙泵_脱硫泵_潜水泵_离心泵_渣浆泵厂家|诚信为先-泰安华泰泵业制造有限公司 | 酒博会丨京酒展丨北京国际酒业博览会 | 模具配件加工厂|东莞模具配件加工|模具配件加工厂|精密塑胶模具配件|东莞市优迪精密模具制品有限公司 | 铸造工具|芯撑|铸造毛刷|枣强县永盛五金工具厂 | 捷胜通运|超大件双清专线|欧美专线|订舱|订柜|订船|双清包税|纯电池运输|液体粉末专线| | 上饶市新达新包装材料有限公司 | 泡沫混凝土垫层填充厂家,发泡混凝土垫层填充,轻质混凝土垫层填充厂家,深圳市鸿奥建材发展有限公司 | 江寒必恋术在线阅读_江寒必恋术免费下载 - 江寒必恋术电子书 | 昆山开曼流体系统科技有限公司| 机械智能停车设备_智能机械式立体停车库_立体车库停车设备租赁_山东科博机械车库 | 微型电磁阀_隔膜泵_活塞泵_微型水泵_微型真空泵_微型气泵【东莞市宗旨电子科技有限公司】 | 潍坊志扬机械有限公司_扫地机-抓蔗机-履带运输机-自上料搅拌车 | 拉布机_全自动拉布机_全自动拉布机厂家-江苏拉布机械科技有限公司 | 丝杆升降机-蜗轮-滚珠-螺旋-swl丝杠升降机-德州润驰减速机有限公司 | 聚丙烯酰胺,聚合氯化铝,重金属捕捉剂,污泥调理剂,活性氧化铝,生石灰,反渗透阻垢剂,工业葡萄糖,硫酸铝,果壳活性炭,柱状活性炭,蜂窝活性炭,石英砂,锰砂-北京雁归来环保科技有限公司-以真诚为立足之本,以质量为生存之本,愿与海内外同仁共创双赢。雁归来人一路走来,气贯长虹,勇锐盖过怯弱,进取压倒苟安!我们紧扣时代脉搏,专注水处理、继往开来! | 制砂机-合金-耐磨锤头-耐磨衬板-铸造件厂家-巩义市豫园宏宇铸造有限公司 | 挖掘机|小型挖掘机|挖掘机抓木机|轮式挖掘机|宝鼎挖掘机-宝鼎液压机械公司厂家直销 | 喷淋清洗剂,铝合金清洗剂-青岛爱大生环保科技有限公司 | 真空清洗炉_真空煅烧炉_铸铝加热器-盐城市钰凯电器有限公司 | 图观 - 数字孪生 应用开发引擎 | 三维可视化 | 青岛网站建设_网站制作_品牌设计_网站设计_圭谷设计 | 随车吊,洒水车,吸污车-程力专用汽车股份有限公司 | 吉安市圣宫制冷设备有限公司| 河北兴泓环保设备有限公司-冷却塔_废气净化塔_污水除臭设备 | 机械配件加工_数控车床加工_零件加工_精密件加工_cnc加工定制—深圳精密机械加工 | 履带底盘-橡胶履带底盘-无线遥控底盘-德州力维智能装备有限公司 铝压铸件_铝合金压铸件_铝合金压铸件厂家-安平县长虹压铸厂 | 深圳车牌识别系统厂家_人脸识别厂家_通道闸厂家_车位引导系统_智慧社区管理系统_深圳市利普诺科技有限公司官网 | 自动龙门裁断机-四柱|液压裁断机-吸塑裁断机-东莞市源德机械科技有限公司 | 中国建材信息总网-中国建材行业权威的信息资讯平台 | 上海便携式液体_日本理音液体_HACH液体颗粒计数器,metone尘埃粒子计数器-上海翰森科学仪器有限公司 | 污水处理控制系统设计_plc编程控制柜_电气成套设备生产厂家_合肥鸿昇自动化 | 泥沙泵_脱硫泵_潜水泵_离心泵_渣浆泵厂家|诚信为先-泰安华泰泵业制造有限公司 | 履带吊出租_大型吊装设备_履带式起重机-山东腾飞吊装工程有限公司 | 江门摩托车配件|江门电动车配件|江门市盛泰嘉金属塑料制品有限公司 |