1. YSB_HW 公司
1. define用法與typedef,inline 的關係。
參見另一篇文章.
2. 實現棧類的定義和基本實現.(構造,析構,Push, Pop)
3. 統計一個串中的數字出現的次數, 和字母出現的次數。
2. WSCX 公司
1. 倒置一個string, 如:"Jacky is the best" -> "best the is Jacky".
void Revert(string &str){}
我的解決辦法是:複製一個相同的串, 然後用這個把這個串的單個單個的單詞拷貝到原來串中即可。
2. 找出一個串中不重複的第一個字元. 如: "abcdefabcdefjklmklmo" 應返回"j".
我的解決辦法是:先構造一個二維數組, record[26][3]. //此處假設只處理字母, 而且是小寫字母。 如果要針對其他字母,則可以擴大這個數組大小。
record[x][0], 用來儲存這個字母是否出現, 預設為0
record[x][1], 用來儲存這個字母出現次數, 預設為0
record[x][2], 用來儲存這個字母最先出現的位置, 預設為整個串長度, 如果預設為-1,則在後面的比較過程中會遇到麻煩。
然後遍曆一遍這個串, 即可完成。
3. 一串關於int (*str[])(int), int *a; 等的解釋。
4. Static用法
5. Inline與define的用法
內嵌函式和宏都是在程式出現的地方展開,內嵌函式不是通過函數調用實現的,
是在調用該函數的程式處將它展開(在編譯期間完成的);宏同樣時;
不同的是:內嵌函式可以在編譯期間完成諸如類型檢測,語句是否正確等編譯功能;宏就不具有這樣的功能,而且宏展開的時間和內嵌函式也是不同的(在運行期間展開)
3. DH一般股份有限公司
這個公司考得很雜, 什麼都有, 資料庫, 網路層, 作業系統,都有涉及
1. STL 包含哪三部分:演算法,容器,迭代器。
2. 同步有兩種方法:訊號量, 和PV原語操作
3. TCP/IP 四層結構(應用程式層,傳輸層,互連網路層,網路介面層)和OSI七層結構(物理層、資料連結層、網路層、傳輸層、會話層、展示層和應用程式層)
4. Windows 處理序間通訊方式:檔案對應,
共用記憶體, 匿名管道,
具名管道, 郵件槽, 剪貼簿,
動態資料交換 等, 參見:http://hi.baidu.com/sinbh/blog/item/a3d386d145bec23f9b5027a9.html
5. string 類的定義,實現,(構造, 析構, 拷貝建構函式, 操作符=重載)
6. 死結原因與如何預防死結.
7. 建立Socket串連的三個步驟.
8. 進程(進程就是應用程式的運行執行個體。每個進程都有自己私人的虛擬位址空間。每個進程都有一個主線程,但可以建立另外的線程。進程中的線程是並存執行的,每個線程佔用CPU的時間由系統來劃分。)
4. MS公司SDE
拷貝一個單鏈表, 每個結點除了next指標還有一個random指標,
random指標可以指向後面鏈表中的任何一個。
解析:(最好的方法, 其實主要是用到了Dictionary中的儲存映射關係,
其中如果用Hash表,也可以實現, 但要考慮如何寫這個hash演算法)
1. 根據next指標拷貝完各個結點, 在拷貝的同事用一個Dictionary
儲存新結點與原結點的對應關係。
2. 根據next指標拷貝完各個結點後, 然後再重新遍曆原鏈表中的random指標,並利用Dictionary中的唯一對應關係來進行新結點的random指標賦值。
方法2:
1. 拷貝各結點, 用next指標
2. 儲存新點與舊結點的關係,用二個一維數組, 一個存舊結點的指標,一個存新結點的指標,
下標要保持對應。
3. 最後遍曆舊數組的random指標時, 一一對應改新結點的random指標即可。