C語言測試是徵選嵌入式系統程式員過程中必須而且有效的方法。這些年我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為面試者和被面試者提供許多有用訊息,此外,撇開面試的壓力不談,這種測試也是相當有趣的。
從被面試者的角度來講,你能了解許多關於出題者或監考者的情況。
這個測試只是出題者為顯示其對ANSI標準細節的知識而不是技術技巧而設計嗎
?
這個愚蠢的問題嗎 ?如要你答出某個字符的ASCII值。
這些問題著重考察你的系統調用(invoke)和記憶體分發策略方面的能力嗎
?
這反映出出題者也許花時間在微處理機上而不在嵌入式系統上。如果上述任何問題的答案是“是”的話,那麼我知道我得認真考慮我是否應該去做這份工作。
從面試者的角度來講,一個測試也許能從多方面揭示應試者的素質︰最基本的,你能了解應試者C語言的水準。不管怎麼樣,看一下這人如何回答他不會的問題也是滿有趣。應試者是以好的直覺做出明智的選擇,還是只是瞎蒙呢
?當應試者在某個問題上卡住時是找藉口呢,還是表現出對問題的真正的好奇心,把這看成學習的機會呢
?我發現這些訊息與他們的測試成績一樣有用。
有了這些想法,我決定出一些真正針對嵌入式系統的考題,希望這些令人頭痛的考題能給正在謀職的人一點幫住。這些問題都是我這些年實際碰到的。其中有些題很難,但它們應該都能給你一點啟發。
這個測試適用於不同水準的應試者,大多數初級水準的應試者的成績會很差,經驗豐富的程式員應該有很好的成績。為了讓你能自己決定某些問題的偏好,每個問題沒有分發分數,如果選擇這些考題為你所用,請自行按你的意思分發分數。
==============================================
預處理器
(Preprocessor)
1.用預處理指令#define 聲明一個常數,用以表示1年中有多少秒 (忽略閏年問題)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在這想看到幾件事情︰
∙#define
語法的基本知識 (例如︰不能以分號結束,括號的使用,等等)
∙懂得預處理器將為你計算常數表達式的值,因此,直接寫出你是如何計算一年中有多少秒會比直接計算出實際的值更清晰。
∙意識到這個表達式將使一個16位元的機器產生整數型溢位 - 因此要用到長整型符號L,告訴編譯器這個常數是的長整型數。
∙如果你在你的表達式中用到UL
(表示無符號長整型)
,那麼你有了一個好的起點。記住,第一印象很重要。