chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

為什么招聘單片機工程師的時候要求精通C/C++?

朱老師物聯(lián)網(wǎng)大講堂 ? 2022-02-14 10:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,給大家分享知乎上一個熱議的話題:為什么招聘單片機工程師的時候要求精通C/C++?

269454b8-8cef-11ec-9d5f-dac502259ad0.png在這里分享幾個回答,有一定的參考價值,歡迎留言討論!

01


回答1

作者:Qi K鏈接:https://www.zhihu.com/question/335790805/answer/2111472871

所謂的大部分單片機項目不用C++是因為整個嵌入式開發(fā)行業(yè)從業(yè)者的平均軟件素養(yǎng)已經(jīng)差到了一個令人發(fā)指的地步。大部分嵌入式工程師出身于電子、通信、自動化等專業(yè),由于專業(yè)教育的缺失和自己學習能力的問題,根本不具有面向?qū)ο笤O計、設計模式、軟件工程等基本常識,所以在他們看來C和C++差不多,沒必要上C++。一個基層工程師,整天滿嘴都是穩(wěn)定、可靠、市場、成本、性價比這些屁話,卻根本沒聽說過設計模式、代碼復用、可擴展性、單元測試、持續(xù)集成這些現(xiàn)代軟件技術的精華。知道的知道你是一個強行挽尊的嵌入式工程師,不知道的還以為你是什么統(tǒng)領千軍的大老板。(我預判了他們的預判,這段真的戳到了一些傳統(tǒng)的嵌入式工程師。居然有人跟我杠說設計模式、單元測試、持續(xù)集成這些不重要?我通篇就是打的這樣人的臉,你被打完了還跟我說:你打臉而已,沒打到要害,你根本就不會打人!我笑得滿地打滾?。┧袥]用到C++的單片機應用項目(底層驅(qū)動庫不在此列),都是因為其規(guī)模過小,應用過于簡單,一兩個人,最多不超過5人就可以完成全部開發(fā),這種項目不但用不到C++,甚至用不到C,甚至用匯編完成,更用不到任何現(xiàn)代軟件工程技術。作為一個嵌入式開發(fā)的候選人,如果你想加入大廠,參與任何有規(guī)模的嵌入式項目,你的C++水平就是你的天花板。這里的大廠不止是華為、大疆這種,甚至很多愛好者熟悉的“周立功單片機”老板周立功就多次在公開場合表示,他們已經(jīng)全面轉(zhuǎn)向C++,只會C的工程師不會得到工作機會。Arduino也許是世界上最著名的AVR(8位單片機)項目,沒有之一。Arduino的封裝全面使用了C++和面向?qū)ο蟮脑O計。廣泛使用基于虛函數(shù)實現(xiàn)的運行時多態(tài),很多設計遵從了開閉原則、接口隔離、依賴倒置等重要設計原則。在ARM項目中, 用到C++的更多。ARM官方推動的mbed項目大概是ARM單片機領域最知名的項目之一。如果你要抬杠說Arduino是玩具,不具有工業(yè)強度的話,那mbed項目絕對是為工業(yè)級應用設計的,從底層RTOS到上層的硬件抽象層HAL都有實現(xiàn)。mbed是用C++實現(xiàn)的,廣泛使用開閉原則和依賴倒置,要求用戶通過繼承虛基類來完成平臺相關的實現(xiàn),從而實現(xiàn)擴展。如果你是一個一線嵌入式工程師,卻根本不了解我提到的一些專業(yè)術語是什么意思,我覺得應該反思一下為什么自己的工資上不去。因為這些都是最基礎的面向?qū)ο蠛驮O計模式常識。最后回答問題,為什么單片機工程師要求會C++?那還不簡單?因為企業(yè)不傻??!其實我也是C的鐵粉,C在嵌入式領域毫無疑問占有舉足輕重的地位。我堅定認為在現(xiàn)代嵌入式系統(tǒng)中,C和C++共存的現(xiàn)象會廣泛存在,且具有上升的趨勢。在硬件抽象層使用C,在應用層和接口層使用C++是非常典型的實踐。這也是正面回答這個問題,為什么嵌入式要會C++?因為嵌入式應用中C和C++都有用。
說了這么多,如果你的觀點還是“C++無用,C++滾出嵌入式”的話,祝你好運!

02


回答2

作者:聽心跳的聲音鏈接:https://www.zhihu.com/question/335790805/answer/768873197

大部分招聘說明里可能都是復制同類嵌入式公司的需求,在刪刪補補,所以這句話一直遺留下來,不算亂寫,但其實和招聘的真正要求差別很大。從我曾經(jīng)不下20~30次大廠小廠的嵌入式面試經(jīng)驗來說,大部分公司在招聘時不會涉及C++(本身公司負責有QT應用產(chǎn)品的除外,但不屬于單片機方向), 對C語言要求也遠遠不會到精通的地步,基本上對C語言語法熟練掌握。把過一遍,后面標注提到的重點細節(jié)詳細掌握下,筆試基本都是C基礎語法(關鍵字,宏,結構體, 枚舉,指針和引用,數(shù)組,強制轉(zhuǎn)換,位移,大小端,存儲區(qū),函數(shù)的健壯性),在結合數(shù)據(jù)結構(排序,查找,二叉樹),在涉及一些硬件知識類的如(中斷,AD的精度,RTC時鐘轉(zhuǎn)換)這一類,這里面考察的C語言知識在我看來也遠遠沒有到達精通的地步。作為嵌入式從業(yè)者,以我這些年的經(jīng)驗來說,除非從事嵌入式Linux開發(fā),而且是QT界面應用方向的,C++知識儲備是必須的。
對我認識的大部分單片機工程師來說,即使實力比我強很多的,對于C++基本停留在C with Class的程度,掌握模板的都不多,更不要說后面強大的STL,以及涉及函數(shù)式編程的lambda和模板元編程, 也就是我這種閑著喜歡看書碼代碼的無聊人士,才會花時間去專門學習C++11,甚至去追逐了解前端框架,因為這些知識對于單片機開發(fā)事實上真的沒啥用。對于單片機來說,一方面要追求穩(wěn)定可控,另一方面成本嚴苛,資源(RAM/FLASH)有限。所以你可以看到NodeMcu和MicroPython的開發(fā)調(diào)試玩具賣的火熱,卻很難看到相應的技術用到產(chǎn)品領域。這對于C++也一樣,使用STL會帶來編譯結果(代碼容量)不可避免的膨脹,如果閹割掉這部分,還不如使用C語言來的簡單方便,這也限制了C++發(fā)揮的市場。在單片機領域和嵌入式驅(qū)動開發(fā),基本上C語言占有絕對地位,即使在Linux上層應用這塊,Android/Java的開發(fā)優(yōu)勢也明顯高于QT/C++,所以要求精通C++可以說是無稽之談。事實上精通C++的要求有多高,你可以去相應問題下看看,這種人怎么會使用閹割的C++來從事單片機開發(fā)。最后來說,精通C語言的問題,特別是精通單片機領域的C語言,是一個很困難的事,至少對于現(xiàn)在的我來說,離精通C語言也差的有些遠。因為精通C語言不僅僅是掌握關鍵字和語法特性,和下面這些復雜但實用的操作,如位域?qū)崿F(xiàn)對寄存器的位操作,利用結構體強制轉(zhuǎn)換用于各種協(xié)議解析,函數(shù)指針實現(xiàn)異步回調(diào),宏定義加##實現(xiàn)的函數(shù)格式化;這些雖然復雜,但至少是有一套標準規(guī)則,只要去看書實踐就可以了解掌握,但當你用C語言完成復雜穩(wěn)定的項目代碼,解決各種異常bug時,就會知曉C語言的精通不只上面這些固定的語法知識。在調(diào)試中可能遇到指針越界,棧溢出,共享資源未保護,非對齊訪問異常,編譯器優(yōu)化錯誤等,這些問題單獨拿出來也許很容易找出來,但在復雜的十幾萬行的代碼中,往往可能執(zhí)行錯誤的地方工作表現(xiàn)是正常的,但干擾到其它部分,導致未出錯的地方執(zhí)行異常,這就需要的不僅僅是C語言的,還包含系統(tǒng)內(nèi)核,總線架構和匯編的知識,精通C語言的困難正是在此。你要理解掌握計算機技術中成體系的東西,對內(nèi)存分配,總線架構,內(nèi)核,匯編這些都有清晰的認識。例如了解函數(shù)內(nèi)的空間是在棧中,那么我們在函數(shù)中需要使用大數(shù)組時,就要考慮是否定義為靜態(tài)變量(避免棧溢出),如果多個函數(shù)使用數(shù)組,就要考慮是否添加內(nèi)存管理。如果數(shù)組會被2字節(jié)/4字節(jié)的指針訪問,在聲明時是否考慮要強制對齊(我就曾經(jīng)遇到過#pragma pack(1)后面忘了閉合,導致后續(xù)全局變量未對齊,4字節(jié)指針訪問時觸發(fā)異常,因為中間涉及多次轉(zhuǎn)換,所以花費了很多時間才查找定位解決)。另外如果用到了Cache和MPU,那么整個系統(tǒng)又更加復雜,何時需要寫回,何時需要無效CacheLine,volatile的意義,以及配合Cache使用的注意點。這些知識的掌握,其實都屬于精通嵌入式C語言的一部分,因此可以說精通C語言并不簡單。
-END-


本文轉(zhuǎn)載自公眾號:大魚機器人

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6074

    文章

    45457

    瀏覽量

    667101
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    電子工程師必知:AS4C4M16SA-C&I SDRAM詳細剖析

    電子工程師必知:AS4C4M16SA-CI SDRAM詳細剖析 大家好,作為一名資深電子工程師,在硬件設計開發(fā)這條路上摸爬滾打多年,今天我想和大家詳細聊聊AS4C4M16SA-CI這款
    的頭像 發(fā)表于 01-22 11:50 ?169次閱讀

    什么是BSP工程師

    屬于BSP工程師最具有價值含量的工作之一,因為它對BSP工程師所掌握的知識的廣度和深度都有一定要求。其中會涉及到計算機原理、操作系統(tǒng),處理器架構等,還包括硬件方面的一些知識。綜合起來其最核心的工作就是
    發(fā)表于 01-13 06:54

    C語言與C++的區(qū)別及聯(lián)系

    C語言和C++到底是什么關系? 首先C++C語言本來就是兩種不同的編程語言,但C++確實是對C
    發(fā)表于 12-24 07:23

    CC++之間的聯(lián)系

    ,后來才逐漸演變?yōu)橐环N成熟的面向?qū)ο缶幊陶Z言。 總之,C語言和C++雖然有很多共同之處,但在編程范式、安全性、抽象層次等方面存在顯著差異。開發(fā)者可以根據(jù)項目需求選擇合適的語言,C語言更適合對性能
    發(fā)表于 12-11 06:51

    硬件工程師面試必會:10個核心考點#硬件設計 #硬件工程師 #電路設計 #電路設計

    硬件工程師
    安泰小課堂
    發(fā)布于 :2025年09月23日 18:00:33

    招鑲入式工程師1個,硬件工程師一個,

    東莞市研生科技有限公司是一家藍牙方案公司,主營藍牙方案的設計開發(fā),產(chǎn)品包括藍牙BLE/4G透傳/AI智能體方案開發(fā),因公司發(fā)展需要需對外招聘嵌入式軟件開發(fā)工程師,對藍牙音頻/BLE以及智能IC讀卡器有三年實操經(jīng)驗,能單獨完成項目的軟件開發(fā),男女不限,投簡歷郵箱:65905
    發(fā)表于 08-29 02:14

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

    單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩
    的頭像 發(fā)表于 05-21 10:33 ?934次閱讀
    主流的 MCU 開發(fā)語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    問,成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚興科技 #搞笑

    硬件工程師
    揚興科技
    發(fā)布于 :2025年04月25日 17:15:37

    如何成為一名嵌入式軟件工程師

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負責開發(fā)運行在特定硬件平臺上的軟件,這些軟件通常與硬件緊密集成,以實現(xiàn)特定的功能。 不僅需要精通編程語言(如C
    發(fā)表于 04-15 14:37

    單片機初學者邁向單片機工程師

    單片機初學者邁向單片機工程師,對初學者非常適用。 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關注、點贊、評論支持一下哦~)
    發(fā)表于 04-15 14:06

    長沙怎么這么難招硬件工程師

    長沙好難招硬件工程師呀,大部分面試的只有課程設計經(jīng)驗,沒有額外學習硬件或者動手做東西,招聘也太難了。有實力的請聯(lián)系 pengyushi@haominoe.com*附件:HAOMIN 招聘啟事-初級硬件
    發(fā)表于 04-10 15:44

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51

    如何成為嵌入式開發(fā)工程師

    如何成為嵌入式開發(fā)工程師? 成為嵌入式開發(fā)工程師通常需要掌握一系列技能和知識,并且在實踐中不斷積累經(jīng)驗。以下是一些基本步驟和建議: 1. 基礎教育:- 獲取電子工程、計算機科學或相關領域的學位
    發(fā)表于 02-19 10:39