在寫這個問題時,先說一下對於我們寫程式時,應該考慮的問題。
**的規範程度
**的書寫規範程度會影響面試考官閱讀**的興致,從下圖可看出,書寫、布局和命名規則都決定著**的規範性。
首先,規範的**書寫清晰。絕大部分面試都要求應聘者在白紙或者白板上書寫。不要因為擔心沒時間寫**就在紙上寫潦草或者簡略。通常面試**量不會超過50行,所以關鍵是在寫**前形成乙個清晰的思路,並能把它用某種語言清楚的寫出來。
其次,規範的書寫布局。由於我們平時用的是各種程式設計軟體如vs。它裡面已經加入合理的縮排和括號對齊等使**清晰的功能。但在面試時,可能是文字編寫,這時候就得格外注意布局問題。當迴圈、判斷較多,邏輯複雜時,縮排的層次可能會較多,就更得注意,給面試官留下乙個好印象。
最後,規範的**命名合理。應盡量避免簡單變數命名,如i,j,k等。建議我們寫**時,用完整的英文單詞組合命名變數和函式。比如函式需要傳入乙個二叉樹的根結點作為引數,則可命名為:binarytreenode* 。proot,
**的完整性
功能測試
邊界測試
負面測試3個方面設計測試用例
錯誤處理
三種錯誤處理方法的比較
重點論述一下第三種方法:當函式執行出錯,我們可以丟擲乙個異常,根據不同的出錯原因定義不同的異常型別。方便函式呼叫者根據異常型別就能知道出錯原因。另外,利用try和cache模組來顯示劃分程式正常執行的**塊使**邏輯較清晰。
題目:實現函式 double power(double base, int exponent),求base的exponent次方,不得使用庫函式,同時不需要考慮大數問題。
分析:題目簡單,但是面試時,能寫完整並且讓考官滿意的人寥寥無幾啊。
方法1:
正常人都會想到的方法。
[cpp]view plain
copy
print?
double
power(
double
base,
intexponent)
return
result;
}
如果你很快寫出這樣的**,那你肯定被刷。
首先:邊界情況處理。指數是負數時該如何處理。
其次:這樣做效率較低,要迴圈指數次。
上述兩點,估計你當時沒有想過為什麼會出這麼簡單的面試題。
方法2:
考慮了邊界情況,且有異常處理,較完整。
[cpp]view plain
copy
print?
bool
g_invalidinput =
false
; bool
isequal(
double
num1,
double
num2)
else
return
false
; }
double
powerwithunsignedexponent(
double
base, unsigned
intexponent)
return
result;
} double
power(
double
base,
intexponent)
unsigned int
ab***ponent = (unsigned
int)(exponent);
if( exponent
double
result = powerwithunsignedexponent(base, ab***ponent);
if( exponent
return
result;
}
方法3:
對方法2中的powerwithunsignedexponent()函式進行了優化-位運算,能使考官眼前一亮。
[cpp]view plain
copy
print?
double
powerwithunsignedexponent(
double
base, unsigned
intexponent)
平時想問題,多想想,盡量能夠全面
細節決定成敗,很關鍵。
數值整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...
數值整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...
數值的整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大樹問題。這道題目有以下幾點需要注意 0的0次方是無意義的,非法輸入 0的負數次方相當於0作為除數,也是無意義的,非法輸入 base如果非0,如果...