1、請寫出你所知道的c
語言關鍵字。
auto :宣告自動變數
switch :用於開關語句
case:開關語句分支
break:跳出當前迴圈
default:開關語句中的「其它」分支
goto:無條件跳轉語句
do :迴圈語句的迴圈體
while :迴圈語句的迴圈條件
if:條件語句
else :條件語句否定分支(與
if 連用)
enum :宣告列舉型別
union:宣告共用資料型別
extern:宣告變數是在其它檔案中宣告
for:一種迴圈語句
register:宣告暫存器變數
return :子程式返回語句(可以帶引數,也可不帶引數)迴圈條件
sizeof:計算資料型別長度
static :宣告靜態變數
struct:宣告結構體變數或函式
typedef:用以給資料型別取別名
unsigned:宣告無符號型別變數或函式
void :宣告函式無返回值或無引數,宣告無型別指標
volatile:說明變數在程式執行中可被隱含地改變
short :宣告短整型變數或函式
signed:宣告有符號型別變數或函式
char :宣告字元型變數或函式
float:宣告浮點型變數或函式
int: 宣告整型變數或函式
long :宣告長整型變數或函式
const :宣告唯讀變數
double :宣告雙精度變數或函式
2、ipv4把所有的
ip位址分為a、
b、c、
d、e五類。請寫出
b類位址和
c類位址的範圍和掩碼,
d類位址的用途是什麼?
分類 字首碼 開始位址 結束位址 對應cidr
修飾 預設子網掩碼
a類位址 0 0.0.0.0 127.255.255.255 /8 255.0.0.0
b類位址 10 128.0.0.0 191.255.255.255 /16 255.255.0.0
c類位址 110 192.0.0.0 223.255.255.255 /24 255.255.255.0
d類位址 (群播) 1110 224.0.0.0 239.255.255.255 /4 未定義
e類位址 (保留) 1111 240.0.0.0 255.255.255.255 /4 未定義
3、請簡述在linux
中多程序程式和多執行緒程式的區別。
4、列出目前linux
系統能支援的檔案系統,列舉常用的四個以上。
ext3 ext4 jffs2 yffs2 ubifs cramfs
5、寫乙個「標準」巨集min
,這個巨集輸入兩個引數並返回較小的乙個?
#define min(a, b) ( (a) <= (b) : (a) ? (b) )
6、什麼是mmu
,mmu
的作用?
mmu是
memory management unit
的縮寫,負責虛擬位址到實體地址的轉換,
提供硬體機制的記憶體訪問授權。
7、關鍵字volatile
有什麼含義,並給出幾個應用場合。
1. 定義的變數應該是異變的,防止編譯器優化,使得程式直接訪問原始記憶體位址。
2. 中斷服務程式中修改的供其它程式檢測的變數需要加volatile。
3. 多工環境下各任務間共享的標誌應該加volatile。
4. 儲存器對映的硬體暫存器通常也要加voliate
,因為每次對它的讀寫都可能有不同意義。
5. 頻繁地使用volatile
很可能會增加**尺寸和降低效能。
8、雙向鍊錶操作題:
/*節點定義*/
typedef srruct node
struct node *next;
struct node *previous;
}node;
/*鍊錶定義*/
typedef struct
node node;
int count;
} list;
#define head node.next
#define tall node.previous
/*初始化乙個鍊錶*/
void lstinit (list *plist)
pplist->head=null;
pplist->tall=null;
pplist->count=0;
請編寫函式把乙個節點(pnode
)插入鍊錶
plist
中某個節點(
pprev
)之後。
9、請寫出strcpy
和 memcpy
的區別
1、strcpy
和memcpy
都是標準
c庫函式。
2、strcpy
提供了字串的複製。即
strcpy
只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符。
3、strcpy
函式的原型是:
char* strcpy(char* dest, const char* src);
4、memcpy
提供了一般記憶體的複製。即
memcpy
對於需要複製的內容沒有限制,因此用途更廣。
5、memcpy
函式的原型是:
void *memcpy( void *dest, const void *src, size_t count );
strcpy和
memcpy
主要有以下
3方面的區別。
5.1、複製的內容不同。
strcpy
只能複製字串,而
memcpy
可以複製任意內容,例如字元陣列、整型、結構體、類等。
5.2、複製的方法不同。
strcpy
不需要指定長度,它遇到被複製字元的串結束符
"\0"
才結束,所以容易溢位。
memcpy
則是根據其第
3個引數決定複製的長度。
5.3、用途不同。通常在複製字串時用
strcpy
,而需要複製其他型別資料時則一般用
memcpy。
6、實現原型:
char *strcpy(char* strdest, const char* strsrc)
void *memcpy(void *dest, const void *src, size_t count)
嵌入式軟體經典面試題
用預處理命令 define宣告乙個常數,用以表明一年中有多少秒 忽略閏年問題 define year 60 60 24 365 ul考點 1 define語法的基礎知識 2 懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是何年機斷一年中有多少秒而不是計算出實際的值,是更清晰沒有代價的。3 意...
嵌入式面試題
15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...
嵌入式面試題
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.此題考查的是...