成為嵌入式程式設計師應知道的0x10個問題

2022-10-09 22:18:26 字數 1135 閱讀 9795

c語言測試是招聘嵌入式系統程式設計師過程中必須而且有效的方法。這些年,我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為面試者和被面試者提供許多有用資訊,此外,撇開面試的壓力不談,這種測試也是相當有趣的。

從被面試者的角度來講,你能了解許多關於出題者或監考者的情況。這個測試只是出題者為顯示其對ansi標準細節的知識而不是技術技巧而設計嗎?這是個愚蠢的問題嗎?如要你答出某個字元的ascii值。這些問題著重考察你的系統呼叫和記憶體分配策略方面的能力嗎?這標誌著出題者也許花時間在微機上而不是在嵌入式系統上。如果上述任何問題的答案是"是"的話,那麼我知道我得認真考慮我是否應該去做這份工作。

從面試者的角度來講,乙個測試也許能從多方面揭示應試者的素質:最基本的,你能了解應試者c語言的水平。不管怎麼樣,看一下這人如何回答他不會的問題也是滿有趣。應試者是以好的直覺做出明智的選擇,還是只是瞎矇呢?當應試者在某個問題上卡住時是找藉口呢,還是表現出對問題的真正的好奇心,把這看成學習的機會呢?我發現這些資訊與他們的測試成績一樣有用。

有了這些想法,我決定出一些真正針對嵌入式系統的考題,希望這些令人頭痛的考題能給正在找工作的人一點幫助。這些問題都是我這些年實際碰到的。其中有些題很難,但它們應該都能給你一點啟迪。

這個測試適於不同水平的應試者,大多數初級水平的應試者的成績會很差,經驗豐富的程式設計師應該有很好的成績。為了讓你能自己決定某些問題的偏好,每個問題沒有分配分數,如果選擇這些考題為你所用,請自行按你的意思分配分數。

預處理器(preprocessor)

1 . 用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)

#define seconds_per_year (60 * 60 * 24 * 365)ul

我在這想看到幾件事情:

1) #define 語法的基本知識(例如:不能以分號結束,括號的使用,等等)

2)懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。

3) 意識到這個表示式將使乙個16位機的整型數溢位-因此要用到長整型符號l,告訴編譯器這個常數是的長整型數。

4) 如果你在你的表示式中用到ul(表示無符號長整型),那麼你有了乙個好的起點。記住,第一印象很重要。

2 . 寫乙個"標準"巨集min ,這個巨集輸入兩個引數並返回較小的乙個。

想成為嵌入式程式設計師應知道的0x10個基本問題

6 這個問題測試你是否懂得c語言中的整數自動轉換原則,我發現有些開發者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是 6 原因是當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別。因此 20變成了乙個非常大的正整數,所以該表示式計算出的結果大於6。這一點對於應當頻繁...

想成為嵌入式程式設計師應知道的0x10個基本問題

c語言測試是招聘嵌入式系統程式設計師過程中必須而且有效的方法。這些年,我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為面試者和被面試者提供許多有用資訊,此外,撇開面試的壓力不談,這種測試也是相當有趣的。從被面試者的角度來講,你能了解許多關於出題者或監考者的情況。這個測試只是出題者為顯示其...

想成為嵌入式程式設計師應知道的0x10個基本問題 轉

更多1 例子 code examples 12 下面的 輸出是什麼,為什麼?void foo void 這個問題測試你是否懂得c語言中的整數自動轉換原則,我發現有些開發者懂得極少這些東西。不管如何,這無符號整型問題的答案是輸出是 6 原因是當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換...