我應聘遇到的試題:
1.能用foreach 遍歷訪問的對象需要實現_____________接口或聲明_________方法類型
2.不定項選擇:
 (1)以下正確的是:
      a.接口可以有虛方法。b.一個類可以實現多個接口。c.接口不能實例化。d.接口可以包含已實例的方法
 (2)從數據庫讀取記錄,你可能用到的方法有:
   a.ExecuteNonQuery   b.ExeccuteScalar c.Fill    d.Executereader
3.列舉ASP.NET頁面之間傳遞值的幾種方式4.寫出程序輪出的結果並解說為什麼輸出這樣的結果using System;
class MyFirstCSharpClass
{
private string str="Class1.str";
private int i=0;
static void StringConvert(string str)
{
str="string being converted3.";
} static void StringConvert(MyFirstCSharpClass c)
{
c.str="string being converted2.";
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
   static void Main()
  {   int i1=10;
   int i2=20;
   string str="str";
   MyFirstCSharpClass c=new MyFirstCSharpClass();
   Add(i1);
   AddWithRef(ref i2);
   Add(c.i);
   StringConvert(str);
   StringConvert(c);
   Console.WriteLine(i1);
   Console.WriteLine(i2);
   Console.WriteLine(c.i);
   Console.WriteLine(str);
   Console.WriteLine(c.str);  }
}
   5.寫出程序輪出的結果並解說為什麼輸出這樣的結果
using System;namespace Col
{
/// <summary>
/// Class1 的摘要描述。
/// </summary>
class Class1
{
/// <summary>
/// 應用程式的主進入點。
/// </summary>
public abstract class A
{
public A()
{
Console.WriteLine("A2");
}
public virtual void Fun()
{
Console.WriteLine ("A2.Fun()2");
}
}
public class B:A
{
public B()
{
Console.WriteLine ("B2");
}
public new void Fun()
{
 Console.WriteLine ("B2.Fun()2");
}
}
public class A2
{
public virtual void Fun1(int i)
   {
   Console.WriteLine (i);
   }
public void Fun2(A2 a2)
{
 a2.Fun1(1);
Fun1(5);
} } public class B2:A2
{
public override void Fun1(int i)
{
base.Fun1(i+1);
}
}
[STAThread]
public static void Main()
{
//
// TODO: 在此加入啟動應用程式的程式碼
//
// A b=new A();抽象類不能實便化
A a=new B();
a.Fun();
B2 b2=new B2();
A2 a2=new A2();
a2.Fun2(b2);
b2.Fun2 (a2); }
}
}6.一列數規則如下:1,1,2,3,5,8,13,21,34......求第30數是多少,用遞歸算法實現
7.程序設計:貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)
要求:1.要有聯動性,老鼠和主人的行為是被動的。
      2.考慮可擴展性,貓的叫聲可能引起其他聯動效應

解决方案 »

  1.   

    1) IEnumerator 或 虚拟GetEnumerator()方法
    2) 1.bc 2.abc
    3) session, request.params, application, cache,server.transfer
    4)10, 13,1,str, string being......(一般就是值类型和引用类型之间的关系,搞清楚了就可以了)
    5) A2.Fun()2, 2 5
    6) public class MyClass
    {
    public static void Main()
    {
    RL();
    int first  = 1;
    int second = 1;
    int num = 2;
    getnum( first, ref second, num );
    Console.Write(second);
    RL();
    }

    private static void getnum( int first, ref int second, int num )
    {
    if( num <= 3 )
    {
    num ++;
    int ret = first;
    first = second;
    second = ret + second;
    getnum( first, ref second, num );
    }
    }7) 
    using System;
    using System.Collections;interface IObservable
    {
    void Add( IObserver observer );
    void Del( IObserver observer );
    void NotifyObserver();
    }interface IObserver
    {
    void Update();
    }class Cat:IObservable
    {
    private ArrayList list = new ArrayList();
    public void Add( IObserver observer )
    {
    list.Add(observer);
    }
    public void Del( IObserver observer )
    {
    list.Remove(observer);
    }
    public void NotifyObserver()
    {
    foreach( IObserver observer in list )
    {
    observer.Update();
    }
    }
    public void Sound()
    {
    NotifyObserver();
    }
    }class man:IObserver
    {
    public void Update()
    {
    Console.Write(" Man is Alive!\n");
    }
    }
    class mice:IObserver
    {
    public void Update()
    {
    Console.Write(" Mice is running! ");
    }
    }public class MyClass
    {
    public static void Main()
    {
    RL();
    man m = new man();
    mice c = new mice();
    Cat cat = new Cat();
    cat.Add( m );
    cat.Add( c );
    cat.Sound();
    RL();
    }

    #region Helper methods private static void WL(object text, params object[] args)
    {
    Console.WriteLine(text.ToString(), args);
    }

    private static void RL()
    {
    Console.ReadLine();
    }

    private static void Break() 
    {
    System.Diagnostics.Debugger.Break();
    } #endregion
    }
      

  2.   

    第一个道有问题应该实现IEnumerable.
      

  3.   

    從別人那裡找來的:using System;namespace Col2
    {
    public delegate void MeowHandler(object sender,System.EventArgs e);  public class 貓 

    public event MeowHandler Meow;  public 貓() 

    Console.WriteLine("生成貓"); 
    }  public void 叫() 


    System.Threading.Thread.Sleep(5000); 
    System.EventArgs e = new EventArgs(); 
    Console.WriteLine("meow ,meow.."); 
    OnMeow(e); 

    protected virtual void OnMeow(EventArgs e) 

    if(Meow != null) 

    Meow(this,e); 

    }  } 
    public class 老鼠 

    public 老鼠() 

    Console.WriteLine("生成老鼠"); 
    }  public void 逃了(object sender,EventArgs e) 

    Console.WriteLine("老鼠貓叫了"); 
    Console.WriteLine("逃了"); 

    }  public class 人 

    public 人() 

    Console.WriteLine("生成人"); 

    public void 醒了(object sender,EventArgs e) 

    Console.WriteLine("人听到貓叫了"); 
    Console.WriteLine("眨眼,醒了"); 
    }  }  /// <summary> 
    /// Class1 的摘要说明。 
    /// </summary> 
    class Class1 

    /// <summary> 
    /// 应用程序的主入口点。 
    /// </summary> 
    [STAThread] 
    static void Main(string[] args) 

    // 
    // TODO: 在此处添加代码以启动应用程序 
    //  Console.WriteLine("開始了."); 
    // 生成小王 
    貓 w = new 貓(); 
    // 生成小账 
    老鼠 z = new 老鼠();  人 y = new 人();  // 指定监视 
    w.Meow += new MeowHandler(z.逃了); 
    w.Meow += new MeowHandler(y.醒了);  // 开始玩游戏 
    w.叫();  Console.WriteLine("結束"); 
    Console.ReadLine();  } 
    }
    }
      

  4.   

    using System;
    using System.Collections;public delegate void CatSoundEvent( object sender, CatSoundEventArgs e );
    public class CatSoundEventArgs
    {
    private DateTime args;
    public DateTime Args
    {
    get{ return args; }
    set{ args = value; }
    }
    }public class Cat
    {
    private string catName;
    public string Name
    {
    get{ return catName; }
    set{ catName = value; }
    }
    public event CatSoundEvent CatSoundEventHandle;
    public void Sound()
    {
    onSound(DateTime.Now);
    }

    private void onSound( DateTime args )  
    {
    CatSoundEventArgs e = new CatSoundEventArgs();
    e.Args = args;
    CatSoundEventHandle( this, e );
    }
    }public class MyClass
    {
    public static void Main()
    {
    RL();
    Cat cat = new Cat();
    cat.CatSoundEventHandle += new CatSoundEvent( catsount );
    cat.Sound();
    RL();
    }

    private static void catsount( object sender, CatSoundEventArgs e )
    {
    Console.Write("Man is alive!");
    Console.Write("Mice is running");
    }

    #region Helper methods private static void WL(object text, params object[] args)
    {
    Console.WriteLine(text.ToString(), args);
    }

    private static void RL()
    {
    Console.ReadLine();
    }

    private static void Break() 
    {
    System.Diagnostics.Debugger.Break();
    } #endregion
    }事件委托
      

  5.   

    我應聘遇到的試題:
    1.能用foreach 遍歷訪問的對象需要實現IEnumerator或IEnumerable接口或聲明(应该是不可以不实现接口的)方法類型
    2.不定項選擇:
     (1)以下正確的是:
          a.接口可以有虛方法。b.一個類可以實現多個接口。c.接口不能實例化。d.接口可以包含已實例的方法      bc
     (2)從數據庫讀取記錄,你可能用到的方法有:
       a.ExecuteNonQuery   b.ExeccuteScalar c.Fill    d.Executereader      bcd
    3.列舉ASP.NET頁面之間傳遞值的幾種方式ViewState、Session、Application + ID、Cache + SessionID or ID、ServerTransfer、URL GET、DataBase4.寫出程序輪出的結果並解說為什麼輸出這樣的結果略,待会儿补
    5.寫出程序輪出的結果並解說為什麼輸出這樣的結果略,待会儿补
    6.一列數規則如下:1,1,2,3,5,8,13,21,34......求第30數是多少,用遞歸算法實現int GetNum( index )
    {
      if ( index < 1 )
        throw new ApplicationException("参数错误");  if ( index == 1 || index == 2 )
        return 1  return GetNum( index -1) + GetNum( index -2 );
    }其实这题不一定要用递归7.程序設計:貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)
    要求:1.要有聯動性,老鼠和主人的行為是被動的。
          2.考慮可擴展性,貓的叫聲可能引起其他聯動效應public class abstract Animal
    {
      ......  public EventHandler event Yell;  protected virtual OnYell( obejct sender, EventArgs e )
      {
        if ( Yell != null )
          Yell ( sender, e );
      }  protected virtual void Run()
      {
      
      }  public virtual void Affrighted() //被惊吓
      {  }  ......
    }public class Cat : Animal
    {
      ......
    }public class Mouse : Animal
    {
      .......
    }public class Man : Animal
    {
      ........
      protected override Affrighted()
      {
        .......
        if ( Sleeping )
          WakeUp();
        .......
      }  protected WakeUp()
      {
        ......
      }
      
      ........
    }实现部分:public class Room
    {  private Cat cat;
      private Mouse mouse1;
      private Mouse mouse2;
      private Man man;
      
      public Room()
      { 
        cat = new Cat();
        Cat.Yell += new EventHandler( Cat_Yell );    mouse1 = new Mouse();
        mouse2 = new Mouse();    man = new Man();
      }  private Cat_Yell(object sender, EventArgs e)
      {
        mouse1.Run();
        mouse2.Run();    man.Affrighted();
      }
    }
      

  6.   

    如果可查msdn,没什么难的,如果是笔试且不能msdn,答不出几道
      

  7.   

    呵呵,一起写
    namespace TestEvent
    {
    /// <summary>
    /// Events 的摘要说明。
    /// </summary>
    /// <res>
    /// 创建人:
    /// 创建时间:
    /// 修改记录:
    /// </res>
    public class CatEvents :System.EventArgs
    {
    private bool IsCatShuting;
    public CatEvents()
    {
    Console.WriteLine("Cat has runing");
    IsCatShuting =  true;
    }
    public bool IsCatShut
    {
    get
    {
    return this.IsCatShuting;
    }
    }

    } public delegate void CatShutEventHandler(object sender,CatEvents e); public class Cat
    {
    public event CatShutEventHandler CatShut;

    public void OnCatShut(CatEvents e)
    {
    CatShut(this,e);
    } public void Shut()
    {
    Console.WriteLine("the cat is shuting");
    OnCatShut(new CatEvents());
    }
    } public class Man
    {
    public Cat HasSomeCat;
    public Man(Cat someCat)
    {
    this.HasSomeCat = someCat;
    if(HasSomeCat != null)
    {//如果人听到了猫的叫声
    Console.WriteLine("the man has a cat");
    Console.WriteLine("this man listen cat shut");
    someCat.CatShut += new CatShutEventHandler(ManOnCatShut);
    return ;
    }
    //没有听到的人
    Console.WriteLine("this man not liested the cat shut");
    }
    public void ManOnCatShut(object sender,CatEvents e)
    {
    if(e.IsCatShut)
    Console.WriteLine("the man were waked");
    }
    } public class Mice
    {
    public Cat WouldListenSomeCat;
    public Mice(Cat someCat)
    {
    WouldListenSomeCat  = someCat;
    if(WouldListenSomeCat!=null)
    {//老鼠听到了猫的叫声
    Console.WriteLine("this mice listened some cat shut");
    someCat.CatShut += new CatShutEventHandler(MiceOnCatShut);
    return;
                 }
    //没有听到
    Console.WriteLine("this mice not listen the cat shut");
    }
    public void MiceOnCatShut(object sender,CatEvents e)
    {
    if(e.IsCatShut)Console.WriteLine("this mice has run away");
    }
    }
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Cat someCat = new Cat();
    Man someMan = new Man(someCat);
    Mice someMice = new Mice(someCat);

    Man otherMan = new Man(null);
    Mice otherMice = new Mice(null); someCat.Shut();
    }
    }
    }
      

  8.   

    呵呵。WouldListenSomeCat都出来了,这个东西越来越有趣了
      

  9.   

    没有用事件,完全用接口实现的程序,观察者模式
    要求:1.要有聯動性,老鼠和主人的行為是被動的。
          2.考慮可擴展性,貓的叫聲可能引起其他聯動效應考虑到第二个要求,有可能是猫的叫声就直接导致主人被惊醒,所以主人也继承了ICatCatcher接口仅供参考using System;
    using System.Collections;namespace test
    { public interface ICatCatcher
    {
    void DoSth();
    } public interface ICatSubject
    {
    void RegesiterCatCatcher(ICatCatcher catCatcher);
    void Miao();
    } public interface IRatSubject
    {
    void RegesiterRatCatcher(IRatCatcher ratCatcher);
    void Run();
    } public interface IRatCatcher
    {
    void Wake();
    } public class Cat:ICatSubject
    {
    public Cat()
    {
    }

    private ArrayList catcherList = new ArrayList();
    public void RegesiterCatCatcher(ICatCatcher catcher)
    {
    catcherList.Add( catcher );
    } public void Miao()
    {
    Console.WriteLine( "Miao" ); for(int i=0;i<catcherList.Count;i++)
    {
    ICatCatcher catCatcher = (ICatCatcher)catcherList[i];
    catCatcher.DoSth();
    }
    } [STAThread]
    public static void Main()
    {
    Cat cat = new Cat();

    Rat[] rat = new Rat[10];
    for( int i=0;i<10;i++)
    {
    rat[i] = new Rat(cat);
    } Man man = new Man(rat,cat); cat.Miao();
    }
    } public class Rat:ICatCatcher,IRatSubject
    {
    public Rat(ICatSubject catSub)
    {
    catSub.RegesiterCatCatcher(this);
    } public void DoSth()
    {
    Run();
    }

    private ArrayList ratcherList = new ArrayList();
    public void RegesiterRatCatcher(IRatCatcher catcher)
    {
    ratcherList.Add( catcher );
    } public void Run()
    {
    Console.WriteLine("Rat Run");
    for(int i=0;i<ratcherList.Count;i++)
    {
    IRatCatcher ratCatcher = (IRatCatcher)ratcherList[i];
    ratCatcher.Wake();
    }
    }
    } public class Man:ICatCatcher,IRatCatcher
    {
    public Man(IRatSubject[] ratSub,ICatSubject catSub)
    {
    for( int i=0 ;i<ratSub.Length;i++)
    {
    ratSub[i].RegesiterRatCatcher(this);
    }
    catSub.RegesiterCatCatcher(this);
    } public void DoSth()
    {
    Console.WriteLine( "Cat bring on Wake" );
    }

    public void Wake()
    {
    Console.WriteLine( "Rats bring on Wake" );
    }
    }
    }
      

  10.   

    hdt(接分接出个星星) ( ) 信誉:98  2005-03-10 13:30:00  得分: 0  
     
     
       拼这些题能给8k???
    ====================================================================
    支持怀疑,小弟3k,如果这样子也行的话,小弟对自己的工资就有疑问了
      
     
      

  11.   

    1、IEnumerator 或 IEnumerable 虚拟GetEnumerator()方法
    2、(1)bc (2)acd
    3、ViewStage,Session,URL,Form,Application,Cache...其它类似于数据库的也可以传值。
    4、10--21--0--str--string being converted2.
    5、这个题不知道有没有谁能详细说一下,我这个菜鸟搞得头晕了:(
    6、还不熟悉,学习中...
      

  12.   

    6、
    int[] s = new int[30];
    s[0] = 1;
    s[1] = 1;
    for (int i=2; i<30; i++)
    {
    s[i] = s[i-1] + s[i-2];
    Console.WriteLine("s[{0}] = {1}",i,s[i]);
    }7、还不熟悉,学习中...
      

  13.   

    其他我不说了,第六题最简单,前两个数之和等于第三个数,用数组和for就能解决,递归就更简单了
      

  14.   

    A2
    B2
    A2.Fun()2
    2
    5
    1
    6
    编译后结果如上。A a=new B(); 
    // 这里考得是继承问题:new B()这里(1)用到了基类A的构造方法.(2)然后再用到了B的构造方法.
    a.Fun();//因为Class B已经new了一个Fun(),所以这里调用的是B.Fun(),输出为:B2.Fun()2
    B2 b2=new B2();//
    A2 a2=new A2();
    a2.Fun2(b2);// 由于B2是继承A2而且覆盖了Fun1方法,所以在调用时,(1)先调用B2的Fun1 (2)然后再调用a2的Fun1。
    b2.Fun2 (a2);// 由于B2的Fun2方法继承A2,Fun1被覆盖,所以调用顺序为:(1)调用的是A2的Fun1
    (2)调用的是B2的Fun1()
      

  15.   

    (2)從數據庫讀取記錄,你可能用到的方法有:
       a.ExecuteNonQuery   b.ExeccuteScalar c.Fill    d.Executereader      bcd
    怎么可能选a呢?
    要求是读取记录,
    ExecuteNonQuery的返回值是int 是@@rowcount的值
      

  16.   

    如果把hxhbluestar(贺星河) 的答案提交上去,公司可能会考虑做为Java程序员招进去。嗯嗯
      

  17.   

    順便問一下這個SQL語句要如何實現:
    有表A:id    mprno date1
    1       1        2003-3-5
    2       1        2003-4-5
    3       2        2005-3-5
    4       2        2005-1-1 
    _______________________________
    用一條sql語句找出mprno相同日期(date1)最大的那條記錄
    輸出結果如下:
    id    mprno date1
    2       1        2003-4-5
    3       2        2005-3-5
      

  18.   

    强烈抗议楼主在csdn发这篇文章,招聘当天统计的时候发觉少了一份笔试题,我不知道是不是楼主所为。但请楼主马上结贴, 多谢合作。
      

  19.   

    順便問一下這個SQL語句要如何實現:
    有表A:id    mprno date1
    1       1        2003-3-5
    2       1        2003-4-5
    3       2        2005-3-5
    4       2        2005-1-1 
    _______________________________
    用一條sql語句找出mprno相同日期(date1)最大的那條記錄
    輸出結果如下:
    id    mprno date1
    2       1        2003-4-5
    3       2        2005-3-5非常麻烦:SELECT * FROM table WHERE id IN ( SELECT MAX(id) FROM table GROUP BY (mprno,date1) ) as t
      

  20.   

    回复人: zyug(LovlyPuppy) ( ) 信誉:100  2005-03-10 14:14:00  得分: 0  
     
     
       (2)從數據庫讀取記錄,你可能用到的方法有:
       a.ExecuteNonQuery   b.ExeccuteScalar c.Fill    d.Executereader      bcd
    怎么可能选a呢?
    要求是读取记录,
    ExecuteNonQuery的返回值是int 是@@rowcount的值  
     
    ///////////////////////////////////////////////////////////////
    a也是可以的,可以通过参数取值
      

  21.   

    select * from A where date1 in (select max(date1) from A group by mprno)
      

  22.   

    要全对的确不容易。
    比如4,5题我就各疏漏了一处。
    4题的str值输出就搞错了,原因是否因为string类型虽然是引用类型,但其值是不能改变的,所以很多时候当作值类型使用?高手指点下
    5题没意识到A a=new B()原来会去先调用A的构造函数,再调用B的。2题的2小题,我觉得只有c/d吧,b方法返回的是一行的第一列的值,不知道这种算不算是读取记录的方法,感觉不算读取记录吧?
      

  23.   

    2题的2小题,我觉得只有c/d吧,b方法返回的是一行的第一列的值,不知道这种算不算是读取记录的方法,感觉不算读取记录吧?通过ID取得用户名。