面試題彙總

2021-07-23 21:18:18 字數 2019 閱讀 3337

題目都是我自己寫的,所以也不一定是完全正確的,因為能有很多細節沒有考慮,如果大家發現了希望指正

(1)完美世界2017 刪除vector中所有偶數(最想去的地方呀。。。)

void deleteeven(vector

& v2)

else

if ((*iter) % 2 == 0)

else

}}

(2)編寫類string的建構函式,析構函式,拷貝構造,複製函式

已知string的原型為:

class

string

**實現如下

class string 

int size = strlen(str);

if (size == 0)

else

m_data[size] = '\0';}}

string& operator = (const string& other)

else

m_data[size] = '\0';

}return *this;

}string(const string& other)

else

m_data[size] = '\0';}}

~string()

void show()

;

(3)如何判斷乙個鍊錶是否有環以及返回他的出口

bool circle(node*

list,node**

in) }

if (tmp1 ==

null

|| tmp1->next ==

null

|| tmp2 ==

null)

tmp1 =

list

->next;

while (tmp1 != tmp2)

*in= tmp1;

return

true;

}

(4)三種頁面排程演算法

fifo:先進先出頁面置換演算法,建立乙個fifo佇列來管理記憶體中的所有頁。

lru:是最近最少使用頁面置換演算法(least recently used),也就是首先淘汰最長時間未被使用的頁面

lfu:是最近最不常用頁面置換演算法(least frequently used),也就是淘汰一定時期內被訪問次數最少的頁

(5)寫出至少三種常見的設計模式,並簡單介紹其用法或目的:

1)觀察者模式:定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一主題物件,在它的狀態發生變化時,會通知所有的觀察者。

2)**模式:為其他物件提供一種**以控制對這個物件的訪問。在某些情況下,乙個物件不適合或者不能直接引用另乙個物件,而**物件可以在客戶端和目標物件之間起到中介的作用。

3)模板方法模式:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

(6)三種排序

快速排序:選擇陣列的第乙個數作為主元,把所有比它小的數移到它的左邊,所有比它大的數移到它的右邊。以此遞迴該操作,直到整個陣列有序。

歸併排序:將陣列劃分為兩半,對每一半遞迴地進行歸併排序,當兩個子列表都已排序完畢,將它們合併為乙個有序列表。

堆排序:堆排序的過程是先建立乙個大根堆,大根堆的要求是每個節點的值都不大於其父節點的值。然後把根節點與最後乙個葉子節點互換,再重新建立最大堆。遞迴執行,直到遍歷完整個陣列。

快速排序適用於原陣列是無序、隨機分布的,歸併排序適用於要求排序穩定的場景,堆排序的最差情況下複雜度也為o(nlgn),適用於對最差情況下複雜度有要求的場景。

面試題彙總

1.佇列先進先出,棧先進後出。2.對插入和刪除操作的 限定 棧是限定只能在表的一端進行插入和刪除操作的線性表。佇列是限定只能在表的一端進行插入和在另一端進行刪除操作的線性表。從 資料結構 的角度看,它們都是線性結構,即資料元素之間的關係相同。3.遍歷資料速度不同。順序表是在記憶體中開闢一段連續的空間...

面試題彙總

1 integer和int的區別?2 和equals的區別?int a 50,integer b 50 a b?integer c 50,b c?3 get和post的區別?4 用執行緒池建立執行緒和自己建立執行緒的區別,好處是什麼?5 利用int型陣列實現乙個棧,並實現出棧和入棧操作?要求時間複雜...

面試題彙總

1.題目 給定陣列a,大小為n,陣列元素為0到n 1的數字,不過有的數字出現了多次,有的數字沒有出現。請給出演算法和程式,統計哪些數字沒有出現,哪些數字出現了多少次。要求在o n 的時間複雜度,o 1 的空間複雜度下完成。解答 這種題目,既然只用這麼少的空間,要麼從異或角度考慮,相當於只能有乙個變數...