1.交換兩個值的大小
a. a=a+b ; b = a-b; a = a-b; b. a = a*b; b = a/b; a = a/b c. a = a^b; b = a^b; a = a^b
2.int func(x)
return countx;
}假定x = 9999. 答案:8思路:將x轉化為2進製,看含有的1的個數。
3.const int* c=new int;
int * e = c ; 出錯,指標不能指向乙個常量,在這裡c所指向的值不能改變
int* const c=new int;
int * e = c ; 正確
4.#include
union
a;void main()
5.string的實現(雖然簡單,但要注意細節)
class string
;string::string(const char *str)
else
}string::string(const string &another)
string& string::operator =(const string &rhs)
string::~string()
6.作業系統的組成(一道讓我誤解的題目)
(1)對cpu的使用進行管理的程序排程程式
(2)對記憶體分配進行管理的記憶體管理程式
(3)對輸入輸出裝置進行管理的裝置驅動程式
(4)對外存中資訊進行管理的檔案系統
7.ping是否可以檢視埠21是否可用,為什麼?
不能,ping只能pingip,不能ping埠.
8.說出a、b、c類網路的子網號有幾位?
注意,這裡的子網號是等於網路號的,我一時沒有反應過來,暈。
a: 0 網路號7位 主機號24位
b:10 網路號16位 主機號16位
c:110 網路號23位 主機號8位
10.函式壓棧的方式(只列舉常考的)
函式名 引數壓棧 清棧 備註
(1)_cdcel _function 右到左 呼叫者清棧 可變引數列表的定義方式
(2)_fastcall @function@8 右到左 函式內部清棧 利用了暫存器ecx、eax、edx
(3)_stdcall _function@8 右到左 函式內部清棧
11.多執行緒同步的方式及比較
主要有下面幾種:
1)如果同步的是乙個32位或者64位的數,我們用原子方式實現同步,旋轉鎖就是用原子函式實現的,通過不停地呼叫原子函式對乙個變數賦值,並返回變數的原值,如下:
while(interlockedexchange(&g,true) == true);
由於返回的是原值,會不斷迴圈,直至在別的地方改變為止。這種方式非常消耗cpu資源,在單處理器上不能使用,會一直占用著,多處理器上也不建議使用。也可以用一
個volatile的變數實現同步,但效率不高。
2)如果同步的是一段**,我們用關鍵**段。在我們執行函式時,會以原子方式執行,也就是說在函式呼叫時會對資源進行原子方式處理,別的執行緒只能等待,並從使用者模
式切換到核心模式,進入等待狀態,由於此過程開銷很大,所以微軟出了乙個與關鍵**段相結合的旋轉鎖,在一段很小的週期內不斷詢問是否可以呼叫資源,在裡面有一
個計數,記錄著旋轉次數,當次數轉為0時也是會進入核心模式。關鍵段速度快,非內物件, 只能用於同一程序之中,且容易處於死鎖狀態。
3)有另一種方式跟關鍵**段差不多,就是slim讀寫鎖。它也是對資源以原子的形式保護起來,不過,在進行讀操作時,允許別的執行緒讀取該資源,只是在寫操作時獨佔資源
而已。4)利用事件核心物件。讓乙個事件處於觸發或者非觸發狀態,當事件處於觸發時,等待的事件就變成可排程狀態了。這裡有一點值得注意,事件分為兩種,手動重置和自動重
置。手動重置是事件觸發時,所有等待的執行緒變為可排程狀態,而自動的話就只有乙個。事件物件屬於核心物件,系統耗費大量資源,但是可用於多程序間。
5)訊號量核心物件。對某一資源設定乙個訪問上限值,只允許上限值的個數訪問,當計數等於0時,訊號量就變成未觸發狀態。訊號量屬於核心物件,耗費大量資源,但可用
於多程序間。
6)互斥量核心物件。獨佔對乙個資源的訪問,裡面有乙個執行緒id,為0時表示該物件可觸發。訊號量屬於核心物件,耗費大量資源,但可用於多程序間。
12、執行緒終止執行時系統的處理
1)釋放執行緒棧物件 2)返回退出** 3)執行緒的核心物件減一,並置為觸發狀態(互斥量或者事件物件時有用) 4)倘若結束執行緒為程序最後執行緒則結束程序
13.postmessage 與sendmessage區別
相同點:引數相同,函式作用相同
不同點:1)返回值不同
2)前者是非同步的,把訊息放在訊息迴圈佇列裡面後就返回,不管有無處理。而後者是同步的,等待訊息被處理後再返回
3)同一執行緒時, sendmessage不把訊息放進迴圈佇列,而是呼叫目標窗體的訊息處理程式進行處理,之後等待結果返回。而postmessage 就直接放在訊息迴圈隊
列,然後通過迴圈分配到相應的視窗。
4)不同執行緒時,sendmessage把訊息放進訊息迴圈佇列,然後在目標窗體的訊息處理程式裡面監視訊息的處理,等待返回,而postmessage 一樣。
QA應聘準備系列之三 簡歷如何準備
原創 東昇 興軍 路濤 乙份好的簡歷既是通過面試邀請篩選的重器,同時也是面試過程的重要引導。好的簡歷應該具備以下的特徵 1.重點突出 篇幅適中 2.結構清晰 邏輯合理 3.體現成就與貢獻 4.目標明確 體現能力 有了以往工作和專案的整理,接下來就是整理乙份好的簡歷。那麼什麼樣的簡歷算乙份好的簡歷呢?...
面試準備 資料庫(持續更新)
1 mysql分頁有什麼優化 2 悲觀鎖 樂觀鎖 悲觀鎖還是樂觀鎖,都是人們定義出來的概念,可以認為是一種思想。行鎖,表鎖,排他鎖,共享鎖等是資料庫的鎖機制 悲觀鎖 獲取鎖之後再執行操作,提交事務後釋放鎖,實現上使用資料庫提供的鎖機制適合資源競爭比較激烈,或者鎖代價小於回滾代價的場景 樂觀鎖 在事務...
前端應聘要準備些什麼樣子的作品?
文章背景 來自於其它 的一次線上交流,當時回答感覺比較粗糙,現重新整理分享出來,同時也是階段性的總結。公司現有官網,相關產品位址,如果沒有就提供 截圖,介面截圖,靜態頁面等等。反正得有一樣,證明你曾經有這個經歷,在交流時,證明當時擔任這個角色的時候做了那些東西,當中遇到了什麼困難或問題,你是怎麼解決...