大廠筆試面試題,給定一個整數,求該整數的階乘,例如輸入5,結果是5*4*3*2*1=120。
拿到題目心中狂喜,迅速三下五除二就寫出來:
public int fun1(int i) {
int k = 1;
for(int j=2; j<=i; j++) {
k = k * j;
}
return k;
}
面試後等offer,一週後來的不是offer而是一封情感滿滿的感謝信,意思大概是感謝你來面試,你給我們留下了深刻的印象,但你的某些方面和我們的要求還有很大的差距,巴拉巴拉……
說了一大堆廢話,還不如一句話言簡意賅:對不起,您面試未通過。許多求職者面試過程中僅僅是抱着完成任務的態度去做,沒有思考面試官出這道題究竟是要考察求職者哪方面的能力。我們先回過頭再看看之前寫的代碼,定義了好幾個變量才完成這件事,有沒有更好的辦法能高效的得到結果。看看題目,是不是可以用遞歸求解。
public int fun1(int i) {
if(1==i){
return 1;
}
return i*fun1(i-1);
}
這一版代碼清爽多了,是否能拿到offer不好說,因爲面試官千人千面,沒有統一的標準,我們做好自己就行了。