微軟亞洲技術中心面試筆試題
1.程序和執行緒的差別。
執行緒是指程序內的一個執行單元,也是程序內的可排程實體.
與程序的區別:
(1)排程:執行緒作為排程和分配的基本單位,程序作為擁有資源的基本單位
(2)併發性:不僅程序之間可以併發執行,同一個程序的多個執行緒之間也可併發執行
(3)擁有資源:程序是擁有資源的一個獨立單位,執行緒不擁有系統資源,但可以訪問隸屬於程序的資源.
(4)系統開銷:在建立或撤消程序時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消執行緒時的開銷。
2.測試方法
人工測試:個人複查、抽查和會審
機器測試:黑盒測試和白盒測試
2.Heap與stack的差別。
Heap是堆,stack是棧。
Stack的空間由作業系統自動分配/釋放,Heap上的空間手動分配/釋放。
Stack空間有限,Heap是很大的自由儲存區
C中的malloc函式分配的記憶體空間即在堆上,C++中對應的是new運算子。
程式在編譯期對變數和函式分配記憶體都在棧上進行,且程式執行過程中函式呼叫時引數的傳遞也在棧上進行
3.Windows下的'記憶體是如何管理的?
4.介紹.Net和.Net的安全性。
5.客戶端如何訪問.Net元件實現Web Service?
6.C/C++編譯器中虛表是如何完成的?
7.談談COM的執行緒模型。然後討論程序內/外元件的差別。
8.談談IA32下的分頁機制
小頁(4K)兩級分頁模式,大頁(4M)一級
9.給兩個變數,如何找出一個帶環單鏈表中是什麼地方出現環的?
一個遞增一,一個遞增二,他們指向同一個接點時就是環出現的地方
10.在IA32中一共有多少種辦法從使用者態跳到核心態?
透過呼叫門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等
11.如果只想讓程式有一個例項執行,不能執行兩個。像winamp一樣,只能開一個視窗,怎樣實現?
用記憶體對映或全域性原子(互斥變數)、查詢視窗控制代碼..
FindWindow,互斥,寫標誌到檔案或登錄檔,共享記憶體。.
12.如何擷取鍵盤的響應,讓所有的‘a’變成‘b’?
鍵盤鉤子SetWindowsHookEx
13.Apartment在COM中有什麼用?為什麼要引入?
14.儲存過程是什麼?有什麼用?有什麼優點?
我的理解就是一堆sql的集合,可以建立非常複雜的查詢,編譯執行,所以執行一次後,以後再執行速度比單獨執行SQL快很多
15.Template有什麼特點?什麼時候用?