公司的面試題,你會不?


      前幾個月,經理說我們部門最近要招幾個人,要我出幾道面試題,題目的要求是,要考察C#基礎,不要太難,不要出問答題,最好是有唯一答案的。因為這份面試題是給人事部的,他們可不懂程序。最后一個要求是,要有一兩道題能區分中級程序員與初級程序員。

      以前一直都是別人出題考我,現在終於有機會出題考別人,我心里那個激動哇,我就琢磨着出什么題目呢?在網上百度,Google了好一陣。好不容易,想出了10道題,讓經理看了一眼。經理的回復是太難了,沒有必要弄那么難,題目也太多,出個5道題就差不多了。看看,我們經理多好呀。又過了好一陣子,弄了5道題目。經理在最后還補充了一題。

      今日,把題目翻了出來,選擇了其中一道題目,在群里發了,看看群里的同志能不能做出來。結果讓我,大吃一驚。沒有一個人能夠立馬看懂題目的。同志們都開始懷疑我的語文水平,懷疑我的表達能力。雖然我的語文不怎么好,可也不至於導致這樣的結果吧。我那個着急呀,我不斷的解釋題目,甚至我還寫了程序表達題目的意思。最終讓我還是大失所望沒有人能過做出來。不過山東-查無此人,北京-悟,在我解釋后,還是明白,而且山東給出了做法。下面我把題目貼出來,看看你會還是不會?

題目如下:

1:已經定義好的一個Byte數組,Byte數組的信息格式見下面的表格:

           起始字節      字段                        數據類型        描述                     
0 類型編號 BYTE 類型編號,占用1個字節
1 信息內容   信息內容,內容的格式詳見下表

內容格式:

    類型編號          類型說明          數據類型     描述
1 司機信息 STRING 前兩字節表示字符串長度,后面緊跟UNICODE編碼字符串,占用N個字節
2 油量 DWORD 單位:1/100L,無符號32位整數,占用四個字節。DWORD高位在前,低位在后。
…… …… …… ……

請編寫一段程序,從Byte數組中解析出司機信息,油量信息。注意信息類型以后還會一直增加的。

上面這題是我出的題目的唯一一道編程題。主要目的也是用來區分中級程序員與初級程序員的。也是我工作中實際遇到的。

順便說一下,我們的群歡迎大家來交流,來提問,更加歡迎您來分享你的知識。技術是在分享中不斷進步的。非常感謝群中廣州-某魚今天給我的幫助!新加入群的朋友,請說明是博客園看到的,謝謝了。

 

已經過去一天了,下面給出司機信息的解析代碼:

class Program
    {
        static void Main(string[] args)
        {
            byte[] array = GetDriverInfo();

            if (array == null || array.Length == 0)
                return;

            byte type = 0;
            int arrayLen = array.Length;
            int index = 0;

            while (arrayLen > 0)
            {
                type = array[index];

                switch (type)
                {
                    case 1:
                        ushort stringlen = (ushort)((array[index + 1] << 8) | (array[index + 2]) << 1);
                        string driverInfo = Encoding.Unicode.GetString(array, index + 3, stringlen);
                        index += stringlen + 3;
                        arrayLen -= stringlen + 3;
                        Console.WriteLine("司機信息:{0}", driverInfo);
                        break;
                    default:
                        break;
                }
            }

            Console.ReadLine();
        }

        private static byte[] GetDriverInfo()
        {
            string info = "1234567890:jerry";
            //內容長度
            int len = info.Length;
            byte[] array = new byte[len * 2 + 3];
            array[0] = 1;

            //字符長度,高位在前
            array[1] = (byte)((len >> 8));
            array[2] = (byte)(len);

            //Unicode編碼字符串
            byte[] temp = System.Text.Encoding.Unicode.GetBytes(info);
            Array.Copy(temp, 0, array, 3, temp.Length);

            return array;
        }
    }


免責聲明!

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



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