我應聘遇到的試題:
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.能用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.考慮可擴展性,貓的叫聲可能引起其他聯動效應
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
}
{
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(); }
}
}
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
}事件委托
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();
}
}
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();
}
}
}
要求: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" );
}
}
}
拼这些题能给8k???
====================================================================
支持怀疑,小弟3k,如果这样子也行的话,小弟对自己的工资就有疑问了
2、(1)bc (2)acd
3、ViewStage,Session,URL,Form,Application,Cache...其它类似于数据库的也可以传值。
4、10--21--0--str--string being converted2.
5、这个题不知道有没有谁能详细说一下,我这个菜鸟搞得头晕了:(
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、还不熟悉,学习中...
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()
a.ExecuteNonQuery b.ExeccuteScalar c.Fill d.Executereader bcd
怎么可能选a呢?
要求是读取记录,
ExecuteNonQuery的返回值是int 是@@rowcount的值
有表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
有表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
(2)從數據庫讀取記錄,你可能用到的方法有:
a.ExecuteNonQuery b.ExeccuteScalar c.Fill d.Executereader bcd
怎么可能选a呢?
要求是读取记录,
ExecuteNonQuery的返回值是int 是@@rowcount的值
///////////////////////////////////////////////////////////////
a也是可以的,可以通过参数取值
比如4,5题我就各疏漏了一处。
4题的str值输出就搞错了,原因是否因为string类型虽然是引用类型,但其值是不能改变的,所以很多时候当作值类型使用?高手指点下
5题没意识到A a=new B()原来会去先调用A的构造函数,再调用B的。2题的2小题,我觉得只有c/d吧,b方法返回的是一行的第一列的值,不知道这种算不算是读取记录的方法,感觉不算读取记录吧?