• 公司的面试题,你会不?


          前几个月,经理说我们部门最近要招几个人,要我出几道面试题,题目的要求是,要考察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;
            }
        }
  • 相关阅读:
    【AHOI2009】 维护序列
    Codeforces Hello 2019 F. Alex and a TV Show[bitset+莫比乌斯反演]
    Codeforces Hello 2019 D. Makoto and a Blackboard[DP+数论+概率期望]
    Codeforces Hello 2019 ABCDF题解
    [BZOJ1042][HAOI2008]硬币购物[容斥原理+背包]
    Codeforces Round #529 (Div. 3)题解
    [BZOJ4311]向量[线段树分治+计算几何+二分/三分]
    [BZOJ1076][SCOI2008]奖励关[状压DP+概率期望]
    [POJ3368][UVA11235] Frequent values[ST表]
    [USACO5.5]矩形周长Picture[扫描线+线段树]
  • 原文地址:https://www.cnblogs.com/supperwu/p/2551477.html
Copyright © 2020-2023  润新知