朋友刚才和我抱怨说他公司招asp.net的程序员太难,来了不少人,但是做的笔试题没一个满意的。
他那个题目大致是这样的:将一个“产品”对象数组存入数据库,自行设计数据库结构,然后将存入的这些数据读取出来成为“产品”对象。
提供给笔试者的是:一个Console Application的工程文件夹,主要包含2个文件(Product.cs和Program.cs),Product.cs是“产品”类的定义,Program.cs的Main方法里已经写好了上下文To Do和一些必要的注释。那个“产品”对象数组如下:
Product[] products = new Product[]{
new Product(1, "龙眼", "我国南亚热带名贵特产。", DateTime.Now, ProductState.Normal),
new Product(2, "甘蔗", "甘蔗是一年生宿根热带和亚热带草本植物。", DateTime.Now, ProductState.Normal),
new Product(3, "苹果", "“一天一个苹果”是人们熟知的健康口号。", DateTime.Now, ProductState.Disabled),
new Product(4, "桃", "", DateTime.Now, ProductState.Disabled),
new Product(5, "椰子", "常绿乔木。", DateTime.Now, ProductState.Normal)
};--------------他们公司规模并不大,做项目时个人的职责常常也不会界限的非常清晰。
我想问大家的是,这个题目对于一个asp.net程序员来说,要求是否有偏差,是否要求太高或太低?

解决方案 »

  1.   

    对于新手算难的吧。有点偏。应该多出些SQL式者对数据库进行操作的题。
      

  2.   

    很基本的问题啊。作为asp.net程序员这个是基本功了
      

  3.   

    如果用vs2008+.net3.5sp1,基本上也就是5分钟的事,建库,建表,连库,自动做对象关系映射,增删改的方法全部自动生成
      

  4.   

    是我,直接写“去看MSDN”。如果你招初级程序员,建议直接找大学刚毕业的。
      

  5.   

    哎.看来自己需要提高啊.我做了一个半小时才全部完成.没有翻书,没有google,没用代码生成工具,很久没写数据库操作的代码了.本来想用SQLHelper类的,后来还是放弃了,借助了强大的IDE vs2008,当然期间包括自己设计Product这个类.不知道是否和题目的一致.
    感觉关键点在于状态,我用了枚举类型来处理,这个东西以前很少用,现在用起来很不顺手,导致写到最后又回去改数据库的数据类型.(状态应该用tinyint啊,一开始用了nvchar)悲剧啊.不过好像也可以在代码里处理这个类型的问题.
    本人大四了,正准备找工作,还是新手,代码写的不好,高手老鸟们切勿嘲笑啊.同时也欢迎批评.
    Products:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication5
    {
        /// <summary>
        /// 枚举类型的状态
        /// </summary>
       public enum ProductState
        {
            Normal,
            Disabled
        }
        /// <summary>
        /// Products类
        /// </summary>
      public  class Products
        {
        //id
            private int proId;        public int ProId
            {
                get { return proId; }
                set { proId = value; }
            }
          //名称
            private string proName;        public string ProName
            {
                get { return proName; }
                set { proName = value; }
            }
          //暂且描述吧
            private string proDescription;        public string ProDescription
            {
                get { return proDescription; }
                set { proDescription = value; }
            } 
          //入库时间
            private DateTime proDate;
         
            public DateTime ProDate
            {
                get { return proDate; }
                set { proDate = value; }
            }
          //状态
            private ProductState productState;        public ProductState ProductState1
            {
                get { return productState; }
                set { productState = value; }
            }
          /// <summary>
          /// 默认构造函数
          /// </summary>
            public Products()
            {
            }
          /// <summary>
          /// 自定义构造函数
          /// </summary>
          /// <param name="pro_id">ID</param>
          /// <param name="pro_name">产品名称</param>
          /// <param name="pro_des">产品描述</param>
          /// <param name="pro_date">入库时间</param>
          /// <param name="pro_state">产品状态</param>
            public Products(int pro_id, string pro_name, string pro_des, DateTime pro_date, ProductState pro_state)
            {
                this.proId = pro_id;
                this.proName = pro_name;
                this.proDescription = pro_des;
                this.proDate = pro_date;
                this.productState = pro_state;
            }
        }
    }
    Program:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    namespace ConsoleApplication5
    {
        class Program
        {
            private static readonly string connectionstring = "Data Source=.\\sqlexpress; Initial Catalog=testdatabase; user ID=sa; PassWord=123";
            static void Main(string[] args)
            {
                //插入
                //for (int i = 0; i < 5; i++)
                //{
                //    InsertToDatabase(i);
                //}            //读取
                ReadFromDatabase();
                Console.ReadKey();
            }        static void ReadFromDatabase()
            {
                //Products[] products = new Products[5];
                //这里总感觉有些诡异....
                Products[] products = new Products[]{
                new Products(), 
                new Products(), 
                new Products(), 
                new Products(), 
                new Products() 
                };
                string   sqlstr="select * from test1";
                using (SqlConnection conn=new SqlConnection(connectionstring))
                {
                    conn.Open();
                    using(SqlCommand cmd=new SqlCommand(sqlstr,conn))
                    {
                        SqlDataReader myread = cmd.ExecuteReader(); 
                            int i = 0;
                            while (i < 5&&myread.Read())
                            {
                                products[i].ProId =  Convert.ToInt32(myread["p_id"]);
                                products[i].ProName =  myread["p_name"].ToString();
                                products[i].ProDescription =myread["p_description"].ToString();
                                products[i].ProDate= Convert.ToDateTime(myread["p_date"]);
                                products[i].ProductState1 = (ProductState) Convert.ToInt32 (myread["p_state"]);
                                i++;
                            }
                        conn.Close();
                    }
                }
                foreach (Products pro in products)
                {
                    Console.WriteLine("{0},{1},{2},{3},{4}",pro.ProId,pro.ProName, pro.ProDescription, pro.ProDate, pro.ProductState1.ToString());
                }
            }
            static void InsertToDatabase(int i)
            {
                Products[] products =new Products[]{
                new Products(1, "龙眼", "我国南亚热带名贵特产。", DateTime.Now, ProductState.Normal), 
                new Products(2, "甘蔗", "甘蔗是一年生宿根热带和亚热带草本植物。", DateTime.Now, ProductState.Normal), 
                new Products(3, "苹果", "“一天一个苹果”是人们熟知的健康口号。", DateTime.Now, ProductState.Disabled), 
                new Products(4, "桃", "", DateTime.Now, ProductState.Disabled), 
                new Products(5, "椰子", "常绿乔木。", DateTime.Now, ProductState.Normal) 
                };
                string sqlstr = "insert into test1(p_id,p_name,p_description,p_date,p_state)values(@p_id,@p_name,@p_description,@p_date,@p_state)";
                using (SqlConnection conn = new SqlConnection(connectionstring))
                {
                    using (SqlCommand cmd = new SqlCommand(sqlstr, conn))
                    {
                        conn.Open();
                        cmd.Parameters.Add("@p_id",SqlDbType.Int);
                        cmd.Parameters.Add("@p_name",SqlDbType.NVarChar);
                        cmd.Parameters.Add("@p_description", SqlDbType.NVarChar);
                        cmd.Parameters.Add("@p_date", SqlDbType.DateTime);
                        cmd.Parameters.Add("@p_state", SqlDbType.TinyInt);
                        cmd.Parameters["@p_id"].Value = products[i].ProId;
                        cmd.Parameters["@p_name"].Value = products[i].ProName;
                        cmd.Parameters["@p_description"].Value = products[i].ProDescription;
                        cmd.Parameters["@p_date"].Value = products[i].ProDate;
                        cmd.Parameters["@p_state"].Value = products[i].ProductState1;
                       int flag= cmd.ExecuteNonQuery();
                       if (flag > 0)
                       {
                           Console.WriteLine("记录{0}插入成功",i);
                       }
                       conn.Close();
                    }
                }
            }
        }
    }
      

  6.   

    写一个实体对象,做一个list 不就可以了,如果有时间再写一个反射。就彻底ok了。
      

  7.   

    首先说这个题目确实很简单,我现在看着,
    但是看楼主的帖子,说明是一个小公司,工资肯定给的不高,
    而去公司面试的肯定都是2年以下的,而且肯定不是名校的,一定是一个垃圾学校出来的,
    不是鄙视学校问题,我也是一个很很很垃圾学校出来的,
    起码这个题目在我工作一年的时候肯定做不出来,(你说你招asp.net程序员 非建一个Console Application干什么,难道为了显示你们那里水平高?)还有楼上那些说很简单的,请问你们在一年的时候可能做出来这个题不,
    当然会有很多人说肯定做出来了,但是我想问下,你们可能去这样的公司吗?我想说这些的意思是,你想招一个什么样的人,打算出多少工资你自己心里要有数,如果你打算招一个高手,当然你可以出很难的题目,如果打算弄点钱稍微说的过去就行了,请不要出这样的问题,
    你可以出现简单的增删查改,知道如果操作对象,数据结构就行了。不要非建什么Console Application,因为可能去这样的小公司的人大部分学的时候直接是建网站,不会用这样的工程,
      

  8.   

     Products[] products = new Products[]{
                new Products(), 
                new Products(), 
                new Products(), 
                new Products(), 
                new Products() 
    感觉 没必要这样写吧
    呵呵
     using (SqlConnection conn=new SqlConnection(connectionstring))
                {
                    conn.Open();
                    List<Products>  p=new  List<Products>;
                    using(SqlCommand cmd=new SqlCommand(sqlstr,conn))
                    {
                        SqlDataReader myread = cmd.ExecuteReader(); 
                            int i = 0;
                            while (myread.Read())
                            {
                                Products product=new Products();
                                product.ProId =  Convert.ToInt32(myread["p_id"]);
                                product.ProName =  myread["p_name"].ToString();
                                product.ProDescription =myread["p_description"].ToString();
                                product.ProDate= Convert.ToDateTime(myread["p_date"]);
                                product.ProductState1 = (ProductState) Convert.ToInt32 (myread["p_state"]);
                               p.Add(product);
                            }
                        conn.Close();
                    }
                }
    不知道 错没
    菜鸟飘过