http://blog.sina.com.cn/s/blog_48c9576b0100me1y.html
9月26號深信服校園招聘筆試
都說深信服的題又偏又難,果然不假。不過還有有很多值得多思考的題。
這套題共有10頁,涵蓋了作業系統,網路,組譯工具,演算法和資料結構,題還是很有難度的。但是作業系統,網路,組譯工具都不是很多,都是1-2道題的樣子,但是都很偏,不好做。
以下是個人感覺比較不錯的題:
程式填空:
快排的實現
不限精度的整數(大數)加法,鏈表實現(比較不錯的題)
演算法題:
二分尋找實現
鏈表逆置
鏈表排序
問答:
在X86平台下,strcpy易出錯原因
對於一個未初始化的對象,為什麼調用其虛函數會出錯,但調用其非虛函數不會有錯
strcat的效率問題,更好的解決方案。
小數點的第60位是多少
輸出結果填空:
第一題
struct S{
void * operator new(unsigned int size, void* p, int i)
{
((S*)p)->i = i;
return p;
}
int i;
};
S ss;
S* pss = new(&ss, 10)S();
int main()
{
cout<<ss.i<<" "<<pss->i<<endl;
S* pss2 = new(&ss,20)S;
cout<<ss.i<<" "<<pss2->i<<endl;
return 0;
}
輸出:0 0
20 20
第二題
class A
{
public:
void f(int)
{
cout<<"A::f(int)"<<endl;
}
void f(double)
{
cout<<"A::f(double)"<<endl;
}
virtual void g()
{
cout<<"A::g(void)"<<endl;
}
};
class B:public A
{
public:
void f(double)
{
cout<<"B::f(double)"<<endl;
}
void g()
{
cout<<"B::g()"<<endl;
}
};
int main()
{
A* pa = new B;
pa->f(1);
pa->g();
B* pb = (B*)pa;
pb->f(2);
pb->g();
}
輸出:
A::f(int)
B::g()
B::f(double)
B::g()
找錯題:
const int b=0;
int * const p4 = &b; (有錯,不能將const int型賦給int型指標類型)
*p4=10;
cout<<*p4<<endl;
一面:
昨天9月28日收到深信服的面試通知,29號上午11點,我了個去啊,我自己都感覺自己做的很差,沒想到還能去面試,不過估計就是去打醬油吧,呵呵,現在淪為醬油男了。
本來準備10點坐車,但是不巧的是,早上喝了點早餐奶,有點想啦肚子,K,衝進廁所。還好,坐上車時10:15,應該不算晚。到了金融基地,2棟4樓。環境還是挺好的,我看有的員工在休息區在熱烈的討論著什麼,挺好的氣氛。等了一會就過來一個挺年輕的面試官,我們到一個小桌那開始了面試。沒有自我介紹,挺讓我意外的,不過後邊讓我很糾結啊。
第一個問題就讓哥鬱悶了,說說Dijkstra演算法,我暈,這個圖演算法都問,我直接如實相告,自己學過忘記了。下馬威啊。第二個題關於平衡樹的調整,還好就是一個很簡單的判斷是不是平衡樹。第三個是C++中對類的靜態成員函數的理解,這個挺簡單,有過開發經驗的都應該清楚吧。第四題是C中printf函數中,可以有多個輸出參數,是怎麼實現的。鬱悶這個 也不會,這個實在是不清楚。然後看我簡曆上熟悉STL,就問vector這個容器,當它空間不足的時候是怎麼處理的,哈哈這個不難,我就巴拉巴拉的一陣忽悠,然後扯到STL演算法中的sort演算法,我一陣忽悠,我說Sort函數我看過源碼(小小的漏下,哥也是有過深入學習的,哈哈),是用類似快排演算法實現的,但不是標準的快排,是快排的一中改進,效果很好。然後就問我快排的實現,我就一陣的啪啦啪啦的講解。後來問到我對socket編程熟不熟,我說只是有過簡單的接觸,它問TCP協議用什麼機制保證資料的可靠性,我就大致說了使用ack驗證這個,估計不會很正確,這個回去要好好的查查。然後問我linux編程熟不熟,我說還行,問linux的非同步機制是什麼,答曰訊號量,同步機制,答曰訊號,問linux內建的同步機制是什麼,答曰不知道。然後處理序間通訊的方式,答曰管道,有名管道,訊息佇列和共用記憶體,還有同步訊號,非同步訊號量。然後給我寫了一個fork函數,問我的作用,我就答:建立子進程,返回int值,當返回0時,說明在子進程中,傳回值大於0的時候,在父進程中執行,當飯後小於0時,表示出錯。然後問我wait函數的作用,答曰等待子結束,防止殭屍進程出現,然後問我殭屍進程怎麼預防,我就說設定SIGCHLD訊號調用wait或waitpid函數進行處理,或則設定訊號直接忽略掉。然後看我簡曆上有一個項目是網路輿情檢測,就問了項目,我一陣的忽悠,不過在忽悠的過程中,有很多實現細節他都進行了發問,比如我說到我對分詞的關鍵技術進行改進的時候,他會問怎麼改進,我就說我們加了新詞模組,提取網路新詞。還有一些細節問題,感覺他還是懂這方面的。等我介紹完了,他笑著說,我們也是做網路監測的,我去,那我不是剛才在班門弄斧嗎。然後我就給他解釋下,我們這個項目是公安局網監的,側重的是網頁上已經形成的文本詳細,而貴公司可能更側重網路監測吧,他笑笑說,我們也做文本的監測。我暈。在問完我之後,他不停的在我的評價表上寫著什麼,大約謝了快一分鐘。然後讓我等會。他拿著我的評價表出去了有3分鐘,然後回來說:明天人力資源那邊會給我打電話,安排我方便的一個時間進行複試。然後就出來了。就這樣結束了面試。
總結問到的題包括(有幾個忘記了,不太全):
Dijkstra演算法 (哥心中的痛啊,這就是下馬威。)
平衡樹
C++中類的靜態成員函數的理解
printf函數中,可以有多個參數,是怎麼實現的