面試1 3劍指offer

2021-07-22 02:29:01 字數 1756 閱讀 6558

面試題1:賦值運算子函式

注意點:

1)返回值為引用,最後return *this,只有返回乙個引用才能連續賦值。

2)傳入引數為常量引用,減少一次複製建構函式,提高**效率。const引用防止修改。

3)釋放例項自身已有記憶體,防止記憶體洩露。

4)傳入引數和當前例項是否為同一例項。同個則不賦值直接返回。同個的話,

釋放自身記憶體,傳入引數的記憶體也同時釋放。

char *data;//在類中

mystring& mystring::operator=(const mystring& s)

面試題2:實現singleton模式

這一模式的目的是使得類的乙個物件成為系統中的唯一例項。要實現這一點,可以從客戶端對其進行例項化開始。

因此需要用一種只允許生成物件類的唯一例項的機制,「阻止」所有想要生成物件的訪問。使用工廠方法來限制例項化過程。

這個方法應該是靜態方法(類方法),因為讓類的例項去生成另乙個唯一例項毫無意義。

從具體實現角度來說,就是以下三點:一是單例模式的類只提供私有的建構函式,二是類定義中含有乙個該類的靜態私有物件,三是該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。

1)不好解法,只適用於單執行緒環境

class csingleton

public:

static csingleton * getinstance()

};

2)多執行緒,但工作效率不高

在1)中如果兩個執行緒同時執行到判斷m_pinstance是否為空的if語句且m_pinstance沒有建立

則兩線程都會建立乙個例項。需加同步鎖

class csingleton

public:

static csingleton * getinstance()

};

每次getinstance()都加鎖,加鎖耗時,應避免。

3)

class csingleton

public:

static csingleton * getinstance()

return m_pinstance;

} };

此時例項為空時才需要加鎖以保證乙個執行緒建立

4)因為靜態例項初始化在程式開始時進入主函式之前就由主線程以單執行緒方式完成了初始化,不必擔心多執行緒問題

class singletonstatic

public:

static const singletonstatic* getinstance()

};//外部初始化 before invoke main

const singletonstatic* singletonstatic::m_instance = new singletonstatic;

面試題3:二維陣列中的查詢

劍指Offer 13剪繩子

public static int cuttingrope int n return max.remainder biginteger.valueof 1000000007 intvalue public static biginteger cutting int n,int m 不會有人比我瘋狂了...

劍指Offer 面試題13(矩陣中的路徑)

這裡是引用 題目描述 地上有乙個m行n列的方格。乙個機械人從座標 0,0 的格仔開始移動,它每一次可以向左 右 上 下移動一格,但不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入方格 35,38 因為3 5 3 ...

劍指offer 面試的流程

面試 共享桌面面試 現場面試 面試 不要不懂裝懂,沒聽懂要提問,直到弄懂面試者意圖。共享桌面面試 著重考察程式設計習慣和除錯能力 思考清楚再編碼 命名和縮排 單元測試 現場面試 不要遲到 得體的衣服 面試輪次過多可以準備零食 飲料 準備幾個問題 行為面試 主要了解一下面試者的性格特點,以及根據簡歷上...