需要掌握哪些技能 ● 需要了解并使用過(guò)幾款常見(jiàn)的單片機。 ● 需要熟悉常見(jiàn)的硬件接口譬如 UART 、SPI 、I2C ● 需要了解一些傳感器相關(guān)的知識,譬如聲、光、磁、溫、慣性器件 ● 需要能看懂 datasheet 讀懂芯片的操作規范,就是用代碼對傳感器的寄存器進(jìn)行配置 ● 能讀懂原理圖、看懂 PCB ● 會(huì )使用示波器、會(huì )分析電路 實(shí)際面試考什么 ● C語(yǔ)言基礎知識,算法水題 ● 聊天,聊項目、聊如何實(shí)現的 工作中實(shí)際用什么 我面試成功的機會(huì )都是來(lái)源于這些主要做單片機的公司,而且都是小公司,進(jìn)入的團隊也小,做的東西也是兩三個(gè)人就可以搞定的事情。雖然我自認為寫(xiě)程序還可以,但是每次答算法水題都答不好,讓我著(zhù)實(shí)比較郁悶,雖然近期已經(jīng)補充了不少相關(guān)知識了,但是我還是感覺(jué)如果一直做這些單片機嵌入式的項目,我可能永遠都用不到這些算法知識。 很早以前我就知道這些,計算機數據結構及算法之于單片機程序開(kāi)發(fā)就是水月鏡花。而另外一種意義上的算法倒是很實(shí)用,比如早在我畢業(yè)之前就買(mǎi)過(guò)一本北航出的《嵌入式系統軟件設計中的常用算法》這本算是很使用的一本工具書(shū),很多方法在實(shí)際的嵌入式軟件開(kāi)發(fā)當中十分有效,我把這一類(lèi)算法歸為DSP,也就是數字信號處理,要處理單片機中的數據都是數字信號的數據,要對這些數據分析總結,處理之后是從傳感器得到的信息,之后再使用控制器或通訊器對外界進(jìn)行反饋 一點(diǎn)點(diǎn)感悟 我從事單片機開(kāi)發(fā)這些年就是用這些技術(shù)一點(diǎn)點(diǎn)的做著(zhù)一個(gè)又一個(gè)的不靠譜的項目,現在想想我一直在磨練自己的技術(shù),然后絲毫沒(méi)有用在成型的產(chǎn)品上,那么我做這些到底有什么用呢?之前使用PIC單片機做的電能檢測器件可能小批量的生產(chǎn)了一些,但是遠沒(méi)有成為一個(gè)值得我驕傲的產(chǎn)品。每一次我都是在找公司的原因,其實(shí)我真正的傾注了多少心血在這些產(chǎn)品上面呢?每一次我都是把做這些東西僅僅當作一個(gè)工作來(lái)做,雖然我的技術(shù)不斷的在進(jìn)步,處理一些技術(shù)難點(diǎn)越來(lái)越游刃有余,但是我早已失去了當初在學(xué)校時(shí)的那份熱情。我開(kāi)始在業(yè)余學(xué)習一些其他的技術(shù),只把手中做的工作當作是一份糊口的工作,我覺(jué)得自己做的東西是沒(méi)什么技術(shù)含量的,而且有些東西是慢慢打磨的,我倒不如趁著(zhù)現在大好年華投身更豐富的技術(shù)海洋之中。久而久之,當初的那份赤成之心早已不在,我變得只是追逐工資增長(cháng)的不斷跳槽。而最近一年的嵌入式 Linux 工作經(jīng)歷也確實(shí)讓我學(xué)習到了很多在操作系統下編程的技能,接觸了以前不曾用到的文件編程、網(wǎng)絡(luò )編程、也開(kāi)始認真的研究計算機算法,現在我發(fā)現之前很多在單片機之下我迫切想使用的技術(shù)也不過(guò)如此。還記得我曾經(jīng)想要自己打造一款實(shí)時(shí)操作系統。想要在單片機下實(shí)現多線(xiàn)程或是協(xié)程,有了操作系統這些反而是簡(jiǎn)單的,沒(méi)有之前的程序寫(xiě)的復雜了。而這些簡(jiǎn)單的實(shí)現了之前在單片機上的復雜之后的事情,又有新的復雜的事情。有了多線(xiàn)程編程,要關(guān)注的同步和互斥的問(wèn)題一點(diǎn)不比在單片機下要同時(shí)做很多事情簡(jiǎn)單。 還有視音頻的流式傳輸,需要 buffer 的緩沖,處理起來(lái)也需要十分小心。而單片機開(kāi)發(fā)更需要關(guān)注的是物理世界、電氣世界的各種特性,需要將模擬的連續的信號變成數字的離散的數據,實(shí)時(shí)性強、過(guò)程簡(jiǎn)單的順序結構。 一點(diǎn)點(diǎn)建議 ● 還是認清自己最重要,不要被過(guò)去從事的技術(shù)束縛住,其實(shí)我現在看到很多以前做軟件的人也在嘗試單片機硬件編程,直接面對物理世界的反饋是一種很奇妙的感覺(jué),相比于抽象的要處理數據庫信息,處理真實(shí)世界的各種數據也許在某種意義上更加有趣,更加給人一種踏實(shí)的感覺(jué)。 ● 每個(gè)人都可以不斷學(xué)習新的東西,作為一個(gè)近二十年才普遍在人類(lèi)社會(huì )興起的工種,我們有太多要學(xué)習和探索的事情要做,身邊少有工作二十年的工程師是因為這個(gè)行業(yè)還沒(méi)有完全發(fā)展起來(lái),因此絕對不要被別人軟件技術(shù)是青春飯的胡話(huà)給蒙蔽。做一個(gè)堅持學(xué)習的人是值得別人尊敬的。 ● 單片機程序員也是軟件工程師的一種,做的事情一樣有用而且有趣,做好了也能賺到不錯的薪水,在其他軟件程序員來(lái)說(shuō)可能被看作是做硬件的,做底層的。但我理解的差別可能比寫(xiě) java 和 python 的區別差不多大吧。反正沒(méi)有一輩子不成長(cháng)、不學(xué)習的軟件工程師,除非他們轉去做“管理”這樣“高端”的職位去了。 以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。 想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。 宋工企鵝號:3524-6590-88 Tel/WX:173--1795--1908 |