技術面試的經歷

有一次技術面試,經歷如下:

1、那家公司是一家做手機開發應用程序的。我去到之後,先做筆試,筆試題目好像比較簡單,如下所示:

(1)、下面程序調用f(111)的結果是:

int f(int m)
{
    int count = 0;
    while( m )
    {
        m = m & (m - 1);
        count++;
    }
    return count;
}

其實是考查參數在二進制形式中1的個數,可惜當時答不正確,寫了個3,誒~

因爲111化成二進制數是111 = 64 + 32 + 15 = 1101111,所以答案是6.

(2)、寫一個c程序,要求把一個數反序,比如1234,變成4321.

這道題應該是比較簡單的,但是我很久沒做過這種練習了,所以用了一個整形數組來存放每一個數字,在反過來,其實最簡單的方法如下:

int revert(int m)
{
    int result = 0;
    while( m )
    {
        result = result * 10 + m % 10;
        m /= 10;
    }
    return result;
}

可見編程的基本功也扔了不少。

剩下的就不舉例了,總之感覺很不好。

2、剩下來的就是技術面試了。問題如下:

(1)、qt裏面的信號與槽的實現機制是怎樣的?(我答由於很久沒用了,所以忘了,不過還記得和mfc的實現機制差不多)

事後想想,如果能答信號和槽是類似於觀察者模式的機制實現的,估計都比上面的說法要好一點~(雖然實際上不是)

(2)、f->fun().當fun是普通成員函數和虛函數時候在實現上有什麼區別(我當時答,當fun是虛函數時候,要用虛表的形式來實現的)

事後想,如果能答具體一點,那就好了,因爲兩句話,使別人以爲我不大懂(本來就不大懂,又隔了半年,都忘差不多了)

(3)、c++中怎樣才能取出私有數據成員出來,不能用公有方法;當時我說了一個在網上看到的方法,他問還有沒有?
我說我想不出來了。

其實,有很多方法我以前都看過的,1、用#define private public; #define class struct;
2、強行將類成員的指針轉爲其他指針,比如整形或者浮點型(這種方式幾乎是萬能的,甚至可以把const的屬性消掉)

(4)、有沒有辦法把c++的虛函數實現機制在編譯期間綁定(我說我想沒有,現在還想不出來他要問什麼)

(5)、問我一道與上面筆試第一題相關的問題,就是怎麼判斷一個數是2的乘方。這個問題其實很好答滴,只不過當時我腦袋有點空白,所以~

後面的就不用說了,差不多可以掛了!

事後想想,原因可能是不會表達自己的東西,還有就是基礎也已經忘的差不多了,畢竟平時就是做項目的,哪能經常記得那些很久沒用的基礎,比如數據結構,比如算法分析。

還是得努力啊~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章