程序員筆試麵試(DOC 52頁)
- 所屬分類:
- 招聘麵試
- 文件大小:
- 139 KB
- 下載地址:
- 相關資料:
- 程序員
程序員筆試麵試(DOC 52頁)內容簡介
內容摘要
1:(void *)ptr 和 (*(void**))ptr的結果是否相同?其中ptr為同一個指針
.(void *)ptr 和 (*(void**))ptr值是相同的
2:int main()
{
int x=3;
printf("%d",x);
return 1;
}
問函數既然不會被其它函數調用,為什麼要返回 1?
mian中,c標準認為0表示成功,非0表示錯誤。具體的值是某中具體出錯信息
1,要對絕對地址0x100000賦值,我們可以用
(unsigned int*)0x100000 = 1234;
那麼要是想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?
*((void (*)( ))0x100000 ) ( );
首先要將0x100000強製轉換成函數指針,即:
(void (*)())0x100000
然後再調用它:
*((void (*)())0x100000)();
用typedef可以看得更直觀些:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();
2,已知一個數組table,用一個宏定義,求出數據的元素個數
#define NTBL
#define NTBL (sizeof(table)/sizeof(table[0]))
麵試題: 線程與進程的區別和聯係? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?
進程是死的,隻是一些資源的集合,真正的程序執行都是線程來完成的,程序啟動的時候操作係統就幫你創建了一個主線程。
每個線程有自己的堆棧。
DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL中的代碼是被某些線程所執行,隻有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創建的線程所執行,那麼是不是說DLL有獨立的堆棧?
..............................
1:(void *)ptr 和 (*(void**))ptr的結果是否相同?其中ptr為同一個指針
.(void *)ptr 和 (*(void**))ptr值是相同的
2:int main()
{
int x=3;
printf("%d",x);
return 1;
}
問函數既然不會被其它函數調用,為什麼要返回 1?
mian中,c標準認為0表示成功,非0表示錯誤。具體的值是某中具體出錯信息
1,要對絕對地址0x100000賦值,我們可以用
(unsigned int*)0x100000 = 1234;
那麼要是想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?
*((void (*)( ))0x100000 ) ( );
首先要將0x100000強製轉換成函數指針,即:
(void (*)())0x100000
然後再調用它:
*((void (*)())0x100000)();
用typedef可以看得更直觀些:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();
2,已知一個數組table,用一個宏定義,求出數據的元素個數
#define NTBL
#define NTBL (sizeof(table)/sizeof(table[0]))
麵試題: 線程與進程的區別和聯係? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?
進程是死的,隻是一些資源的集合,真正的程序執行都是線程來完成的,程序啟動的時候操作係統就幫你創建了一個主線程。
每個線程有自己的堆棧。
DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL中的代碼是被某些線程所執行,隻有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創建的線程所執行,那麼是不是說DLL有獨立的堆棧?
..............................
下一篇:教師招聘簡章(DOC 9頁)
用戶登陸
招聘麵試熱門資料
招聘麵試相關下載