微軟亞洲技術中心面試

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有什麼特點?什麼時候用?

16.談談Windows DNA結構的特點和優點。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章