嵌入式面試

2021-08-21 10:44:43 字數 1197 閱讀 1349

**的別人,還不錯

預處理器(preprocessor) 

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

我在這想看到幾件事情: 

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

2). 懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是如何計算一年中 

有多少秒而不是計算出實際的值,是更清晰而沒有代價的。 

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

譯器這個常數是的長整型數。 

4). 如果你在你的表示式中用到ul(表示無符號長整型),那麼你有了乙個好的起點。 

記住,第一印象很重要。 

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

typedef struct s * tps; 

以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢? 

(如果有的話)為什麼? 

這是乙個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是 

:typedef更好。思考下面的例子: 

dps p1,p2; 

tps p3,p4; 

第乙個擴充套件為 

struct s * p1, p2; 

上面的**定義p1為乙個指向結構的指,p2為乙個實際的結構,這也許不是你想要的。第 

二個例子正確地定義了p3 和p4 兩個指標。 

晦澀的語法 

16. c語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什麼? 

int a = 5, b = 7, c; 

c = a+++b; 

這個問題將做為這個測驗的乙個愉快的結尾。不管你相不相信,上面的例子是完全合乎語 

法的。問題是編譯器如何處理它?水平不高的編譯作者實際上會爭論這個問題,根據最處 

理原則,編譯器應當能處理盡可能所有合法的用法。因此,上面的**被處理成: 

c = a++ + b; 

因此, 這段**持行後a = 6, b = 7, c = 12。 

如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個當作問題 

。我發現這個問題的最大好處是:這是乙個關於**編寫風格,**的可讀性,**的可修 

改性。>

嵌入式面試題

15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...

嵌入式技術面試指南

僱傭合適的人對於fog creek軟體公司來說是非常關鍵的。在我們這個領域,有三類人可以挑選。在乙個極端,是哪些混進來的,甚至缺乏最基本的工作技巧.只要問這類人兩三個簡單的問題,再讀一下他們的簡歷,就可以輕易地剔除他們。另乙個極端的型別是 才華橫溢的超級明星這些人僅僅為了好玩就用組合語言為palm ...

嵌入式面試題

1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...