筆試難點(完美)

2021-07-23 07:48:25 字數 1504 閱讀 7097

1、static_cast、dynamic_case、reinterpret_cast、const_cast比較

c風格轉換是「萬能的轉換」,但需要程式設計師把握轉換的安全性,編譯器無能為力;static_cast最接近於c風格轉換,但在無關類指標轉換時,編譯器會報錯,提公升了安全性;dynamic_cast要求轉換型別必須是指標或引用,且在下行轉換時要求基類是多型的,如果發現下行轉換不安全,dynamic_cast返回乙個null指標,dynamic_cast總是認為void*之間的轉換是安全的;reinterpret_cast可以對無關類指標進行轉換,甚至可以直接將整型值轉成指標,這種轉換是底層的,有較強的平台依賴性,可移植性差;const_cast可以將常量轉成非常量,但不會破壞原常量的const屬性,只是返回乙個去掉const的變數。

2、 int i=11,j=0;

for(;i>0;i-=5)

printf(「%d」,j);

輸出的結果是多少?

答案:j=3。是我想的太多了,以為計算機儲存方式是二進位制,取反後與0無法比較。若i的型別是無符號的,則會死迴圈。

3、死鎖條件

產生死鎖的原因

1、資源分配不足 2、資源分配不當 3、程序執行推進的順序不合適

產生死鎖的必要條件

1、互斥條件:乙個資源只能被乙個程序使用

2、請求與保持條件:乙個程序請求資源而阻塞,保持現有的資源不放

3、不剝奪條件:程序在使用資源時,若未使用完成,不得剝奪

4、迴圈等待條件:多個程序形成頭尾相連的迴圈資源等待

1、 為什麼建立連線協議是三次握手,而關閉連線卻是四次握手呢?

這 是因為服務端的listen狀態下的socket當收到syn報文的建連請求後,它可以把ack和syn(ack起應答作用,而syn起同步作用)放在一 個報文裡來傳送。但關閉連線時,當收到對方的fin報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未 必會馬上會關閉socket,也即你可能還需要傳送一些資料給對方之後,再傳送fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的ack報文 和fin報文多數情況下都是分開傳送的。

2、 為什麼time_wait狀態還需要等2msl後才能返回到closed狀態?

這是因為: 雖然雙方都同意關閉連線了,而且握手的4個報文也都協調和傳送完畢,按理可以直接回到closed狀態(就好比從syn_send狀態到 establish狀態那樣);但是因為我們必須要假想網路是不可靠的,你無法保證你最後傳送的ack報文會一定被對方收到,因此對方處於 last_ack狀態下的socket可能會因為超時未收到ack報文,而重發fin報文,所以這個time_wait狀態的作用就是用來重發可能丟失的 ack報文。

4、排序演算法

不穩定的排序:快希選一堆

選擇,直接插入,冒泡,希爾,快速是o(n^2),堆,歸併是o(nlogn)

還有個桶排序o(n)

筆試篇 完美世界2017程式設計題

上題 兩小孩要用水果去換乙個禮物,要求水果與禮物等價,不能多也不能少,假設有n種水果,且水果數量不限,每種水果的價值不同,請幫兩小孩計算出他們最少要多少個水果,如果無法兌換則返回 1,舉例 有三種水果,價值分別為5,2,3,禮物的價值是20,用4個5元的水果正好兌換,其他的兌換方式都需要更多的蘋果,...

第三波筆試題(Vmware EMC 完美時空)

vmware 1.貓和老鼠玩象棋,玩了m n局,貓贏了m局 老鼠贏了n局 n m,而且在整個過程中,貓的得分從來沒有超過過老鼠,問共有多少種可能的比賽得分過程 2.100個人排隊上飛機,飛機上有100個座位,每個人對應乙個座位,隊首的人是個瞎子,上飛機後隨便坐,後面的人都盡量找自己的座位,如果已經被...

完美世界筆試題 小萌的包裹

每個物品放或不放,想象乙個長度為n的陣列,每個位置是0或者是1 放或不放 暴力列舉的話,複雜度是2n,題目給的時間是1秒,一般n 物品的數量 的規模可達到26,題目給的n的最大值是20,暴力列舉應該能過,用遞迴列舉加剪枝肯定能過。01串可用二進位制列舉,也可用向量列舉,我用的是遞迴列舉,方便剪枝 解...