首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

道一道笔试题

2013-02-24 
谈一道笔试题其实这篇博客早就该写了,这是我来北京找工作的时候,收到的一个公司给我笔试题。要求是这样的:

谈一道笔试题

           其实这篇博客早就该写了,这是我来北京找工作的时候,收到的一个公司给我笔试题。要求是这样的:

              道一道笔试题

 

                     大家也可以试着做做,我想对于那些大牛来说,太小儿科了。但是,对于我们这些刚刚进入职场的小鸟来说,还是要花一些时间的。我自己做了一个下午才做出来。

             不过,今天在公司的时候,想写一个总结,可是在电脑却怎么也运行不出来了,报一个非常不也的错误。

             后来,我找到了报错的原因,可是并不是代码的问题,是因为我开始是在我的笔记本上做的,因为我笔记本上装的是vs2012,然后生成代码时,怕看代码的人没有高版本的VS,由于生成的是.netframework4.0。然后在公司的时候,打开就运行不出来,然后回家之后在VS2012上还原回.netframework4.5就好了。

            这也让我引发了一个思考,我个人觉得,新版本的编程工具会好些,一个显著的原因就是它的智能提示啊什么的,当然还有其它的一些。但是,新旧版本的交替需要一个过程。

            下面我来show一下自己的实现方法吧。

首先是获取远程服务器上的数据,这个挺简单的:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;namespace WriteTest{    class GetData    {        /// <summary>        /// 获取远程数据,返回一个字符串        /// </summary>        /// <returns></returns>        public string GetUrlData()        {            WebClient client = new WebClient();            string data = client.DownloadString("http://kj.edu24ol.com/update/qa/qa1.txt");            return data;        }    }}


 哦,对了,忘记说了,为了简单,我用的是winfrom实现的。

下面是对数据进行处理的类:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WriteTest{    public class Data:IComparable<Data>    {        protected string _first;        protected string _second;        public Data(char[] charData)        {            if (charData.Length==2)            {                this._first = charData[0].ToString();                this._second = charData[1].ToString();            }            else            {                this._first = charData[0].ToString();            }        }        public Data(string first)        {            this._first = first;            this._second = null;        }        /// <summary>返回整个字符串        ///         /// </summary>        /// <returns></returns>        private string GetWholeString()        {            return this._first + this._second;        }        /// <summary>获取data是由多少个数组成的。        ///         /// </summary>        /// <returns></returns>        private int GetLength()        {            if (this._first!=null && this._second!=null)            {                return 2;            }            else            {                if (this._first==null && this._second==null)                {                    return 0;                }                return 1;            }        }        /// <summary>只有两个字符都在特殊字符里,而且不相等,才返回true/// /// </summary>/// <param name="one"></param>/// <param name="two"></param>/// <returns></returns>        private bool SpecialSort(string one, string two)        {            string containString = "jaGg8rDfUbW";            if (containString.Contains(one) && containString.Contains(two))            {                int thisIndex = containString.IndexOf(one);                int otherIndex = containString.IndexOf(two);                if (thisIndex!=otherIndex)                {                    return true;                }            }            return false;        }        /// <summary>比较特殊字符        ///         /// </summary>        /// <param name="one"></param>        /// <param name="two"></param>        /// <returns></returns>        private int GetResult(string one, string two)        {            string containString = "jaGg8rDfUbW";            int thisIndex = containString.IndexOf(one);            int otherIndex = containString.IndexOf(two);            return thisIndex - otherIndex;        }                public int CompareTo(Data other)        {            if (this == null)            {                if (other == null)                {                    //如果两个都为空,那么返回0                    return 0;                }                else                {                    //如果other不为空的话,那么other更大                    return -1;                }            }            else            {                if (other == null)                // this不为空,other为空,那么this更大                {                    return 1;                }                else                {                    //都不为空,那么比较对应的属性                    //数字或者字母多的,更大                    int retval = this.GetLength().CompareTo(other.GetLength());                    if (retval != 0)                    {                        return retval;                    }                    else                    {                        if (SpecialSort(this._first,other._first))                        {                            return GetResult(this._first, other._first);                        }                        else                        {                            if (this._first.CompareTo(other._first)!=0)                            {                                return this._first.CompareTo(other._first);                            }                            else                            {                                if (SpecialSort(this._second,other._second))                                {                                    return GetResult(this._second, other._second);                                }                                return this._second.CompareTo(other._second);                            }                        }                     }                }            }        }        //重写toString方法        public override string ToString()        {            return this._first + this._second;        }    }}


界面的设计如图所示:

道一道笔试题

界面下的代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Net;namespace WriteTest{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            //获取远程的字符串            string wholeString = new GetData().GetUrlData();            #region 测试            //Data d1 = new Data("a", "c");            //Data d2 = new Data("d", "e");            //List<Data> list = new List<Data>();            //list.Add(d1);            //list.Add(d2);            //list.Sort();            //foreach (Data d in list)            //{            //    txtData.Text = txtData.Text+d.ToString()+"\r\n";            //}#endregion            //获取每行的字符,放在数组里。            string[] rowString= wholeString.Split(new string[1]{"\r\n"}, StringSplitOptions.None);            foreach (string str in rowString)            {                //txtData.Text = txtData.Text+ str + "\r\n";                //把每行中的两个挨着的字符,放在数组里。                string[] singleString = str.Split(new string[1] { " " }, StringSplitOptions.None);                //实例化Data数组。                Data[] data = new Data[singleString.Length];                int i = 0;                foreach (string strData in singleString)                {                    data[i] = new Data(strData.ToCharArray());                    i = i + 1;                }                List<Data> list = new List<Data>();                list.AddRange(data);                //排序,调用data里的compareto方法                list.Sort();                                foreach (Data val in list)            {                    txtData.Text = txtData.Text + val.ToString()+" ";            }                txtData.Text = txtData.Text + "\r\n";            }        }    }}


提供一个下载吧,如果有兴趣的朋友,可以下载下来看看:

http://download.csdn.net/detail/yjjm1990/5076225

 

      不过,我最后把我做的代码发给HR了,可是没有收到回信,不知道是我写的代码不行还是怎么回事。希望与大家进行交流。

 

 

热点排行