搜狗筆試經歷


這次筆試總覺得還可以,至少沒有感覺卡殼的地方,雖然應該還是出現很多錯誤的,總覺得筆試答的還是可以的。以下依靠回憶記錄一下筆試的題目。

1.文字表述一下char* (*empty[10])(const int** num)的含義。

這是一個函數指針數組。參數類型我其實不是很確定,(但是確定當時寫錯了...當時寫的是指向整型指針的常量指針),這里有可能是指向整型常量指針的指針。返回類型十分確定,字符指針。

2.題目大概是一個程序結束輸出判斷的題目。

這個題目我其實也考慮錯了,break只能跳出一層switch,上一層switch的case語句能夠繼續執行一個。這里大概應該是a = 1;b = 1;

#include <iostream>
int main()
{
    int x = 0,y = 1,a = 0;b = 0;
    switch(x)
    {
        case 0:
        {
            switch(y)
            {
                case 0:
                a++;
                break;
                case 1:
                b++;
                break;
            }
        }
        case 1:
            a++;
            break;
    }
    printf("%d,%d",a,b);
}

3.考察了int (*array)[10]的意義

這時候array是一個指向長度為10數組的指針。其實與int a[5][10]定義中的a的意義是一樣的。

4.考察了二叉樹的遍歷方法,給出先序遍歷的字符串和中序遍歷的字符串,得出后序遍歷的字符串。

5.將0x8912地址的值賦值為0x1923,這個我就不太明白了,不過我這樣寫也不太確定是不是正確。  

int* p;
p = 0x8912;
*p = 0x1923;

6.9個相同的鋼球,其中一個與其他的質量不同,最少需要比較多少次能夠找到該鋼球。

我思考的是分為4,4,1,這樣比較6次。但是分成2,2,2,2的話,僅僅需要比較5次。但是分成3,3,3的話,僅僅需要比較4次,所以這個題目我思考錯了。

接下來是兩個編程的題目。

1.對一個stack進行排序,要求不能夠利用其它的數據結構。

不能夠利用其它數據結構並不代表不能夠利用stack了,所以這里利用兩個stack可以完成排序。

我這里說一下思路:思路是新建一個stack輔助排序,這個stack來存放原先stack中pop()出的數據,這里假設新的棧是A,原先的棧是B。A中的數據我們保證是有序的,棧底元素最大。

可以這樣保證,如果A中為空,B中的數據壓入A中,如果不為空,比較A棧頂數據與B的數據,不斷的將A棧頂數據彈出至B中,遇到比剛才B棧頂數據大的數據將其壓入A中,然后B空了之后A中就是有序的數據。

這個代碼我也完成了。

2. (九宮問題)在一個3×3的九宮中有1-8這8個數及一個空格隨機的擺放在其中的格子里。現在要求實現這個問題:將該九宮格調整為如圖1-1右圖所示的形式。調整的規則是:每次只能將與空格(上、下、或左、右)相鄰的一個數字平移到空格中。試編程實現這一問題的求解。

當時一看這個問題之后就懵了,完全沒有思路...

之后理了一下思路,然后想到了之前的解空間搜索,直接窮舉可以嘗試。每一個解像4個方向走了之后有4個解,這樣就是一個樹形結構。

這樣可以采取廣度優先搜索的方法搜索解空間。然后判斷是否出現回路,利用hashtable判斷是否重復...

這個題目僅僅是提供了一下思路,和實現的距離還是相差很遠的。

 

運氣還是不錯的,竟然把所有算法的思路都理清了...

         

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM