找工作要面試,所以在這最難就業季,很多人對面試題特別感興趣,津津有味地研究,孜孜不倦地學習。
但實際上這些面試題目良莠不齊,許多題目根本上就是垃圾和毒藥。
比如問「空結構體」的尺寸是多少,實際上c語言中根本就沒有「空結構體」,因為結構體的定義本身就規定結構體不可以為空。所以,「空結構體」的尺寸是多少這樣的問題是驢唇不對馬嘴的偽問題。
有些題目喜歡轉牛角尖,比如問呼叫
malloc(0)
得到的返回值是否是null?(
這在實踐中是基本沒用的知識。
儘管沒用,但問題本身還是成立的。可笑的是給出的解答是錯的,解答竟然說malloc(0)返回的一定不是null。
實際上malloc(0)的返回值可能是null也可能不是null,和實參為乙個正整數時沒什麼區別。如果返回值不為null,也應該用free()函式釋放。malloc(0)唯一不同的地方就是,就算你申請記憶體成功,即malloc(0)返回值不為null,你也沒法使用這塊記憶體。
有一些考察程式設計能力的題目,則直接暴露出了出題者的程式設計能力很差。比如
兩個單鏈表(singly linked list),每乙個節點裡面乙個0-9的數字,輸入就相當於兩個大數了。然後返回這兩個數的和(乙個新list)。這兩個輸入的list長度相等。 要求是:1. 不用遞迴。2. 要求演算法在最好的情況下,只遍歷兩個list一次 ,最差的情況下兩遍。(鍊錶儲存資料為從低位到高位)這個題目就很搞笑。因為只要小學畢業,就知道多位數加法只需要從低位到高位遍歷一次就可以了,遍歷兩次說明小學沒畢業。非但只需要一次,同樣不需要兩個加數字數相同。計算和這個過程既然能在紙上用筆完成,那麼用**同樣也能夠完成。
那麼,題目為什麼給出「兩個輸入的list長度相等」這樣沒用的條件以及「最差的情況下兩遍」這樣笨拙的要求呢?只能解釋為出題者自己不會用**處理兩個list長度不相等的情況,並且寫不出遍歷一次的**。
實際這個問題一點也不難,會寫鍊錶的人都能輕易寫出兩個list不等長,且兩煉表只遍歷一次求和的**。
#include
#include
#include
typedef
struct bignum
* list ;
list get_num( void );
void my_malloc( list * );
void output( list );
list add( list ,list );
void my_free( list );
void move( list * );
int get_dig( list );
void put( int , list * );
int main( void )
void my_malloc( list * p )
//輸入,建立從低位到高位的鍊錶
list get_num( void )
return p;
}void my_free( list p )
int get_dig( list p )
void move( list * pp )
void put( int n , list * pp )
list add( list p1 ,list p2 )
if ( high != 0 ) //處理最高位的進製
put( high , pp_res );
return p_res;
}void output( list p )
*list ;
list get_num(
void
);void my_malloc( list *);
void
output( list );
list add( list ,list );
void
my_free( list );
void move( list *);
intget_dig( list );
void put( int , list *);
int main( void
)void my_malloc( list *p )
//輸入,建立從低位到高位的鍊錶
list get_num( void
)
returnp;}
void
my_free( list p )
intget_dig( list p )
void move( list *pp )
void put( int n , list *pp )
list add( list p1 ,list p2 )
if ( high != 0 ) //
處理最高位的進製
put( high , pp_res );
return
p_res;
}void
output( list p )
別太把自己當回事
別太把自己當回事布思 塔金頓是20世紀美國著名 家和劇作家,他的作品 偉大的安伯森斯 和 愛麗絲 亞當斯 均獲得普利茲獎。在塔金頓聲名最鼎盛時期,他在多種場合講述過這樣乙個故事 那是在乙個紅十字會舉辦的藝術家作品展覽會上,我作為特邀的貴賓參加了展覽會。其間,有兩個可愛的十六七歲小女孩來到我面前,虔誠...
別太把3G當回事
如果你只是使用通話和簡訊功能,3g對你毫無意義!如果你沒想過去使用無線網際網路,3g對你毫無意義!如果你近期沒有考慮換台3g手機,3g對你毫無意義!如果你的3g手機不匹配現有網路,3g對你毫無意義!如果你是山寨手機的狂熱追隨者,3g對你毫無意義!張書樂 3g的意義在哪呢?其實3g的消費群體在目前看來...
程式設計師,別太把技術入股當做一回事
最近在跟某前合作夥伴鬧了一些彆扭。大概的來龍去脈如下 我幫他開發好了一套綜合繳費軟體,他說他出錢,我幫他組織人馬,到時候做成了股份給我30 中間又組織管理和測試開發了一套andorid voip軟體。他直接把錢打給開發者,我沒出錢,也沒拿錢,但是架構,專案管理是我做的,答應給我50 的股份。今年我因...