C#面试题(整理)

  
1. 面向对象的思想主要包括什么?

2.
什么是 ASP.net 中的用户控件

3.
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? CTS CLS CLR 分别作何解释?

4.
列举一下你所了解的 XML 技术及其应用

5.
值类型和引用类型的区别?写出 C# 的样例代码。

6.ADO.net
中常用的对象有哪些?分别描述一下。

7.
如何理解委托?

8.C#
中的接口和类有什么异同。

9.
net 中读写数据库需要用到哪些类?他们的作用

10.UDP
连接和 TCP 连接的异同。

11.ASP.net
的身份验证方式有哪些?分别是什么原理?

12.
进程和线程分别怎么理解?

13.
什么是 code-Behind 技术。

14.
活动目录的作用。

15..net
中读写 XML 的类都归属于哪些命名空间?

16.
解释一下 UDDI WSDL 的意义及其作用。

17.
什么是 SOAP, 有哪些应用。

18.
如何部署一个 ASP.net 页面。

19.
如何理解 .net 中的垃圾回收机制。

20.
常用的调用 webservice 方法有哪些?



1
继承 多态 封装
2
用户控件 . 不会说懂得做
3
装箱和拆箱发生 值类型向引用类型转换 , 和引用类型向值类型转    重载 : 同一个函数参数不同
4.xml
可以用来做网页 (xslt) xml 可以当作数据库 xml 可以用来保存对象的系列化
5
值类型 , 没有什么好说的 . 引用类型用处是返回两个以上参数的时候比较好用 ref out 我常用的是 out 不要先赋值
6  ado.net
我直接用 sqlhelper connection command 还有参数
7
回调机制比较有用的 . net 中采用了委托 .
8
接口 , 是可以多继承 , 类只有单继承 . 接口强调了你必须实现 , 而没有具本实现的方法和虚类有点相似
9 datareader dataset
还有一个不太常用
10 udp
不要实现什么三次握手 .
11 asp.net
身份验证最常用还是以前的 session 方法 . form 验证没有用过 . 微软的哪个也没有用过
12
进程简单理解为单个程序吧 ( ctrl+alt+del) 可以看到的 . 它至少有一个主线程 .
13
代码后置 .. 不懂得讲
14
活动目录 .. 完全不会
15 system.xml (system.io
创建目录的时候用 )
16
这个也是 web 服务里的东西 .
17 soap
简单协议 . 我只知道 .web 服务是基于它之上的
18
部置一个页面 . 也就是说没有代码是直接写在 aspx 中的了 . 只接放在 IIS 的虚拟目录下就行了 . 当然要 asp.net 支持
19
垃圾回收 .. 一般的只要掌握 . 非托管对象要记得释放资源就行了吧 .
20
直接在 vs.net 里面引用就 OK . 它会自己生成一个代理类
1.       填空 : (1) 面向对象的语言具有 ___ 继承性、 _ 封装 ___ 性、 ___ 多态性。

        (2)
能用 foreach 遍历访问的对象需要实现 IEnumerable 接口或声明 GetEnumerable 方法的类型。

        (3)
列举 ADO.net 中的五个主要对象 Command Connection DataSet DataSetCommand DataReader

2.
不定项选择:

(1)
以下叙述正确的是:

      A.
接口中可以有虚方法。      B. 一个类可以实现多个接口。
      C.
接口不能被实例化。        D. 接口中可以包含已实现的方法。

   (2)
从数据库读取记录,你可能用到的方法有:

      A. ExecuteNonQuery            B. ExecuteScalar

      C. Fill                        D. ExecuteReader

3.
简述 private protected public internal 修饰符的访问权限。


4.
写出一条 Sql 语句: 取出表 A 中第 31 到第 40 记录( SQLServer, 以自动增长的 ID 作为主键 ,   注意: ID 可能不是连续的。)


5 .
列举 ASP.NET 页面之间传递值的几种方式。


6.
写出程序的输出结果

class Class1  {
       private string str = "Class1.str";
       private int i = 0;
       static void StringConvert(string str)  {
           str = "string being converted.";
       }
       static void StringConvert(Class1 c)  {
           c.str = "string being converted.";
       }
       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";
           Class1 c = new Class1();
           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);
       }  
    }


7.
写出程序的输出结果

public abstract class A  
{
        public A()  
       {
            Console.WriteLine('A');
        }
        public virtual void Fun()  
       {
            Console.WriteLine("A.Fun()");
        }
}

public class B: A  
{
        public B()
       {
            Console.WriteLine('B');
        }

        public new void Fun()  
       {
            Console.WriteLine("B.Fun()");
        }

        public static void Main()  
       {
           A a = new B();
           a.Fun();
        }
}


8.      
写出程序的输出结果:
public class A  
{
        public virtual void Fun1(int i)
       {
            Console.WriteLine(i);
        }

        public void Fun2(A a)  
       {
            a.Fun1(1);
            Fun1(5);
        }
}


public class B : A  
{
        public override void Fun1(int i)    
       {
            base.Fun1 (i + 1);
        }

        public static void Main()  
       {
            B b = new B();
            A a = new A();
            a.Fun2(b);
            b.Fun2(a);          
        }
}



9.
一列数的规则如下 : 1 1 2 3 5 8 13 21 34......

  
求第 30 位数是多少, 用递归算法实现。 (C# 语言 )


10.  
程序设计 : 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 (C# 语言 )

要求:   1. 要有联动性,老鼠和主人的行为是被动的。

2.
考虑可扩展性,猫的叫声可能引起其他联动效应。






参考答案 :
1. (1)  
继承性、封装性、多态性。(考基本概念)
   (2)  IEnumerable
GetEnumerator ( foreach 机制的理解,本来不想出这题的,凑分 )
   (3)  ... (
送分题 , ADO.net 的了解 )
评分标准:一空 1 分,满分 10 分。



2. (1) B
C ( 考对接口的理解 )  (2)  B C D ( 考查对 ADO.net 的熟练程度 )
  
评分标准 : 一题 5 分,不选或者错选均不得分。漏选得 2 分。满分 10 分。



3. . private :  
私有成员 , 在类的内部才可以访问。
     protected :
保护成员,该类内部和继承类中可以访问。
     public :    
公共成员,完全公开,没有访问限制。
     internal:  
在同一命名空间内可以访问。
评分标准:答对 1 2 分, 2 5 分, 3 7 分。全对 10 分。 ( 送分题 )



4.  
1:  select top 10 * from A where id not in (select top 30 id from A)
    
2:  select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
    
评分标准: 写对即 10 分。 ( 答案不唯一, datagrid 分页可能需要用到 )
  
5.  1.
使用 QueryString,   ....?id=1; response. Redirect()....
    2.
使用 Session 变量
    3.
使用 Server.Transfer
    ....
  
评分标准: 答对 1 点得 3 分, 两点 7 分, 3 10 分。


6.  (
考查值引用和对象引用 )
10
21
0
str
string being converted.
评分标准:答对一点得 2 分,满分 10 分。


7.  A
    B
A.Fun()
评分标准: 写出 A.B 5 分,写出 A.Fun() 5 分,满分 10 分。
(
考查在继承类中构造函数 , 以及 new 方法 , )




8.  2
    5
    1
    6

评分标准: 答对一点得 2 分,两点得 5 分, 3 点得 7 分。全对得 10 分。

(
一些人做这题,头都晕了 .... ^_^ )



9.  

    public class MainClass
    {
        public static void Main()  
        {
            Console.WriteLine(Foo(30));
        }
        public static int Foo(int i)
        {
            if (i <= 0)
                return 0;
            else if(i > 0 && i <= 2)
                return 1;
            else return Foo(i -1) + Foo(i - 2);
        }
    }
评分标准: 写出 return Foo(i -1) + Foo(i - 2); 5 分。

写出 if(i > 0 && i <= 2) return 1; 5 分。

          
方法参数过多需要扣分(扣除分数 = 参数个数 1

          
不用递归算法扣 5

           (
递归算法在树结构建立等方面比较常用 )



10          

要点: 1. 联动效果,运行代码只要执行 Cat.Cryed() 方法。 2. 对老鼠和主人进行抽象
评分标准 : <1>. 构造出 Cat Mouse Master 三个类,并能使程序运行 (2 )
            <2>
Mouse Master 中提取抽象( 5 分)
            <3>
联动效应,只要执行 Cat.Cryed() 就可以使老鼠逃跑,主人惊醒。 (3 )


    public interface Observer
    {
        void Response();    //
观察者的响应,如是老鼠见到猫的反映
    }
    public interface Subject
    {
        void AimAt(Observer obs);  //
针对哪些观察者,这里指猫的要扑捉的对象 --- 老鼠
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject subj)
        {          
            this.name = name;
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {  
        public Master(Subject subj)
        {          
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine("Host waken!");
        }  
    }
  
    public class Cat : Subject
    {
        private ArrayList observers;
        public Cat()
        {  
            this.observers = new ArrayList();
        }
        public void AimAt(Observer obs)
        {
            this.observers.Add(obs);
        }
        public void Cry()
        {
            Console.WriteLine("Cat cryed!");
            foreach (Observer obs in this.observers)
            {
                obs.Response();
            }
        }
    }
    class MainClass
    {      
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }
    }


//---------------------------------------------------------------------------------------------

设计方法二 : 使用 event -- delegate 设计 ..
    public delegate void SubEventHandler();
    public abstract class Subject
    {
        public event SubEventHandler SubEvent;
        protected void FireAway()
        {
            if (this.SubEvent != null)
                this.SubEvent();
        }  
    }
    public class Cat : Subject
    {  
        public void Cry()
        {
            Console.WriteLine("cat cryed.");
            this.FireAway();
        }
    }
    public abstract class Observer
    {
        public Observer(Subject sub)
        {
            sub.SubEvent += new SubEventHandler(Response);
        }
        public abstract void Response();    
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject sub) : base(sub)
        {  
            this.name = name;
        }
        public override void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {
        public Master(Subject sub) : base(sub){}
        public override void Response()
        {
            Console.WriteLine("host waken");
        }
    }
    class Class1
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }

    }
问题:
1
ASP.NET 中的身份验证有那些?你当前项目采用什么方式验证请解释
2
.什么是 WEB 控件?使用 WEB 控件有那些优势?
3
.请解释 ASP NET 中以什么方式进行数据验证?
4
.请谈谈对正则表达式的看法?
5
ASP NET 中共有几种类型的控件?各有什么区别?
6
WEB 控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
7
WEB 控件及 HTML 服务端控件能否调用客户端方法?如果能,请解释如何调用?
8
ASP NET ASP 相比有什么优势?
9
.请解释 web.config 文件中的重要节点
10
.请解释 ASP NET 中的 web 页面与其隐藏类之间的关系?
11
.什么是 viewstate ,能否禁用?是否所用控件都可以禁用 ?


13
.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
14
.请解释一个 WEB 页面中代码执行次序。
15
.请解释什么是上下文对象,在什么情况下要使用上下文对象
16
.请解释转发与跳转的区别?
17
.请解释 ASP.NET 中不同页面之间数据传递有那些方式?
18
.请解释 ASP NET button  linkbutton imagebutton hyperlink 这四个控件之间的功别
19
.请解释一下。 NET 多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。
20
.如果出现 ASP NET 中的事件不能触发可能由于什么原因造成?
21
.如果需要在 datagride 控件中的某一列中添加下拉列表框并绑定数据怎么解决?
22
.请解释 asp.net 中的数据绑定与传统数据绑定有什么区别?
23
.请解释 .net 采用委托实现的事件模型与 JAVA 中采用接口实现的事件模型有什么区别,以图示方式解释。
24
.请解释接口的显式实现有什么意义?
Q
:您在什么情况下会用到虚方法?它与接口有什么不同?

Q
Override 与重载有什么区别?

Q
:值类型与引用类型有什么区别?

Q
:怎样理解静态变量?

Q
:向服务器发送请求有几种方式?

Q
DataReader Dataset 有什么区别?

Q
:如果在一个 B/S 结构的系统中需要传递变量值,但是又不能使用 Session Cookie Application ,您有几种方法进行处理?

Q
:用 .net B/S 结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

Q
:软件开发过程一般有几个阶段?每个阶段的作用?

Q
:微软推出了一系列的 Application Block ,请举出您所知道的 Application Block 并说明其作用?

Q
:请列举一些您用到过的设计模式以及在什么情况下使用该模式?

Q
:您对 WebService 的体会?

Q
:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?

Q
:您离职的原因是什么?

以下几道题目如果您不会,请较为详细的描述您的解决思路和方法

Q
:通过超链接怎样传递中文参数?

Q
:请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty

Q
:请编程实现一个冒泡排序算法?
1、进程和线程的区别

进程是系统进行资源分配和调度的单位;线程是 CPU 调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

2、成员变量和成员函数前加 static 的作用

它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

3、 malloc new 的区别

new
C++ 的关键字。 malloc 在分配内存时必须按给出的字节分配, new 可以按照对象的大小自动分配,并且能调用构造函数。可以说 new 是对象的对象, malloc 不是。本质上 new 分配内存时,还会在实际内存块的前后加上附加信息,所以 new 所使用的内存大小比 malloc 多。

4、堆和栈的区别

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用 new malloc 等分配内存函数分配得到的就是在堆上。

栈是机器系统提供的数据结构,而堆则是 C/C++ 函数库提供的。

是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;而栈是函数库提供的功能,特点是灵活方便,数据适应面广泛,但是效率有一定降低。栈是系统 数据结构,对于进程 / 线程是唯一的;堆是函数库内部数据结构,不一定唯一。不同堆分配的内存无法互相操作。栈空间分静态分配和动态分配两种。静态分配是编 译器完成的,比如自动变量 (auto) 的分配。动态分配由 alloca 函数完成。栈的动态分配无需释放 ( 是自动的 ) ,也就没有释放函数。为可移植的程序起 见,栈的动态分配操作是不被鼓励的!堆空间的分配总是动态的,虽然程序结束时所有的数据空间都会被释放回系统,但是精确的申请内存 / 释放内存匹配是良好程 序的基本要素。

5、不调用 C++/C 的字符串库函数,请编写函数 strcpy


1. C#
property attribute 的区别,他们各有什么用处,这种机制的好处在哪里?

2.
讲一讲你理解的 web service, dot net framework 中,怎么很好的结合 xml? (讲概念就行了)

3. C#, Java
c++ 的特点,有什么相同的地方,不同的地方, C# 分别从 c++ java 中吸取了他们那些优点?

4. C#
可否对内存进行直接的操作? ( 这可是个难点哦?要注意!)

5.
Visual C++ 6.0 编写的代码 (unmanaged code) ,如何在 CLR 下和其他 dot net component 结合?

6.
以前作过的一些项目?介绍一下自己的编程经验。 ( 这是蒙混不过去的,基本一问就知道是真是假 )

7.
你对公司有什么期望?你的薪水期望值?为什么学计算机?以前的工作经验(这非常重要)?



Q3
维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么

Q4
ADO NET 相对于 ADO 等主要有什么改进?

Q5
ASP NET ASP 相比,主要有哪些进步?

Q6
C# 中的委托是什么?事件是不是一种委托?

Q7
:描述一下 C# 中索引器的实现过程,是否只能根据数字进行索引?

Q8
C# 中要使一个类支持 FOREACH 遍历,实现过程怎样?

Q10
:写一个 HTML 页面,实现以下功能,左键点击页面时显示 您好 ,右键点击时显示 禁止右键 。并在 2 分钟后自动关闭页面。

Q11
:你对 XMLHTTP WEBSERVICE 了解吗?简单描述其特点、作用

Q12
:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?

Q13
:自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么

Q14
:大概描述一下 ASP NET 服务器控件的生命周期

Q15
UML

Q16
:面向对象的概念,主要特点

Q17
:类划分的依据。类粒度问题

Q18
:事物管理问题



第一,谈谈 final, finally, finalize 的区别。

第二, Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )?

第三, Static Nested Class Inner Class 的不同,说得越多越好 ( 面试题有的很笼统 )

第四, & && 的区别。

第五, HashMap Hashtable 的区别。

第六, Collection Collections 的区别。

第七,什么时候用 assert

第八, GC 是什么 ? 为什么要有 GC?

第九, String s = new String("xyz"); 创建了几个 String Object?

第十, Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 ?

第十一, short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?

第十二, sleep() wait() 有什么区别 ?

第十三, Java 有没有 goto?

第十四,数组有没有 length() 这个方法 ? String 有没有 length() 这个方法 ?

第十五, Overload Override 的区别。 Overloaded 的方法是否可以改变返回值的类型 ?

第十六, Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?

第十七,给我一个你最常见到的 runtime exception

第十八, error exception 有什么区别 ?

第十九, List, Set, Map 是否继承自 Collection 接口 ?

第二十, abstract class interface 有什么区别 ?

第二十一, abstract method 是否可同时是 static, 是否可同时是 native ,是否可同时是 synchronized?

第二十二,接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)?

第二十三,启动一个线程是用 run() 还是 start()?

第二十四,构造器 Constructor 是否可被 override?

第二十五,是否可以继承 String ?

第二十六,当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?

第二十七, try {} 里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后 ?

第二十八,编程题 : 用最有效率的方法算出 2 乘以 8 等於几 ?

第二十九,两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对 ?

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ?

第三十一, swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String ?

第三十二,编程题 : 写一个 Singleton 出来。
. 填空题

1.c#
中的三元运算符是 __?:___?

2.
当整数 a 赋值给一个 object 对象时,整数 a 将会被 __ 装箱 ( 封装 )___?

3.
类成员有 _____ 种可访问形式?   this.;new Class().Method;

4.public static const int A=1;
这段代码有错误么?是什么?   const 不能用 static 修饰

5.float f=-123.567F;

  int i=(int)f;

i
的值现在是 _____?   123  

6.
利用 operator 声明且仅声明了 “==” ,有什么错误么 ?  

7.
委托声明的关键字是 ______? delagete

8.
sealed 修饰的类有什么特点?密封,不能继承

9.
Asp.net 中所有的自定义用户控件都必须继承自 ________?Control

10.
.Net 中所有可序列化的类都被标记为 _____?  

11.
.Net 托管代码中我们不用担心内存漏洞,这是因为有了 ______?gc

12.
下面的代码中有什么错误吗? _______

     using System;

     class A

     {

          public virtual void F(){

              Console.WriteLine("A.F");

           }

      }

      abstract class B:A

       {

           public abstract override void F(); // new public abstract void F();  

       }



13.
当类 T 只声明了私有实例构造函数时,则在 T 的程序文本外部, ___ 可以 ___ (可以 or 不可以)从 T 派生出新的类,不可以 ____ (可以 or 不可以)直接创建 T 的任何实例。

14.
下面这段代码有错误么?

    switch (i){

    case():

        CaseZero();

        break;

    case 1:

        CaseOne();

        break;

    case 2:

        dufault;  //wrong

        CaseTwo();

        break;

   }

15.
.Net 中,类 System.Web.UI.Page 可以被继承么?可以



. 简答题

1.
c# using new 这两个关键字有什么意义,请写出你所知道的意义? using 指令 和语句 new 创建实例 new 隐藏基类中方法

4.
谈谈类和结构的区别?类是引用类型、结构是值类型

5.
一个长度为 10000 的字符串,通过随机从 a-z 中抽取 10000 个字符组成。请用 c #语言编写主要程序来实现。

6.
对于这样的一个枚举类型:

      enum Color:byte{

          Red,

          Green,

          Blue,

          Orange

       }

     string[] ss=Enum.GetNames(typeof(Color));

     byte[]   bb=Enum.GetValues(typeof(Color));

试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。

7.
您了解设计模式么?请列出您所知道的设计模式的名称。 //

8.
请在 SQL Server 中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?

9.
什么叫做 SQL 注入,如何防止?请举例说明。

10.
下面这段代码输出什么?为什么?

     int i=5;

     int j=5;

     if (Object.ReferenceEquals(i,j))

          Console.WriteLine("Equal");

     else

          Console.WriteLine("Not Equal");




1.
写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括 “.” ,对其设计测试用

2.
对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)

开发语言概念题

3.
什么是反射?

4.
Singleton 如何写设计模式

5.C#
中的垃圾回收机制是怎样的?

6.
什么是 Application Pool

7.
链表和数组的区别,各有什么优缺点 .

8.Remoting
在客户端服务器怎么实现 ?

9.
什么是友元函数?

10.
用标准 C 如何实现多态?

11.
什么是虚函数?

12.
什么是抽象函数?

13.
什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?



英语题

14.
用英文介绍一下使用 C#/C++ 做的项目,主要功能

15.
如果要与美国开电话会议,会如何与美国的工程师沟通

16.
如果老板认为你的技术落后,你会怎么回答



数据库知识题

17.
使用什么工具来调用存储过程

18.SQL Server
的两种索引是何形式?索引的作用?索引的优缺点?

19.
触发器的作用



其它知识题及问题

20.
什么是 Web Service

21.
什么是 XML

22.Socket
怎么实现?


/
/
下面的題目你全會做嗎 ? 不會請多看看書 ....
property attribute 的区别,他们各有什么用处,这种机制的好处在哪里?
 
 
 


1. C#
2. 讲一讲你理解的 web service, dot net framework 中,怎么很好的结合 xml? (讲概念就行了)
3. C#, Java c++ 的特点,有什么相同的地方,不同的地方, C# 分别从 c++ java 中吸取了他们那些优点?
4. C# 可否对内存进行直接的操作? ( 这可是个难点哦?要注意!)
5. Visual C++ 6.0 编写的代码 (unmanaged code) ,如何在 CLR 下和其他 dot net component 结合?
6. 以前作过的一些项目?介绍一下自己的编程经验。 ( 这是蒙混不过去的,基本一问就知道是真是假 )
7. 你对公司有什么期望?你的薪水期望值?为什么学计算机?以前的工作经验(这非常重要)?
 
 
 
Q3 维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
Q4 ADO NET 相对于 ADO 等主要有什么改进?
Q5 ASP NET ASP 相比,主要有哪些进步?
Q6 C# 中的委托是什么?事件是不是一种委托?
Q7 :描述一下 C# 中索引器的实现过程,是否只能根据数字进行索引?
Q8 C# 中要使一个类支持 FOREACH 遍历,实现过程怎样?
Q10 :写一个 HTML 页面,实现以下功能,左键点击页面时显示 您好 ,右键点击时显示 禁止右键 。并在 2 分钟后自动关闭页面。
Q11 :你对 XMLHTTP WEBSERVICE 了解吗?简单描述其特点、作用
Q12 :接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
Q13 :自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么
Q14 :大概描述一下 ASP NET 服务器控件的生命周期
Q15 UML
Q16 :面向对象的概念,主要特点
Q17 :类划分的依据。类粒度问题
Q18 :事物管理问题
 
 
 
第一,谈谈 final, finally, finalize 的区别。
第二, Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )?
第三, Static Nested Class Inner Class 的不同,说得越多越好 ( 面试题有的很笼统 )
第四, & && 的区别。
第五, HashMap Hashtable 的区别。
第六, Collection Collections 的区别。
第七,什么时候用 assert
第八, GC 是什么 ? 为什么要有 GC?
第九, String s = new String("xyz"); 创建了几个 String Object?
第十, Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 ?
第十一, short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?
第十二, sleep() wait() 有什么区别 ?
第十三, Java 有没有 goto?
第十四,数组有没有 length() 这个方法 ? String 有没有 length() 这个方法 ?
第十五, Overload Override 的区别。 Overloaded 的方法是否可以改变返回值的类型 ?
第十六, Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?
第十七,给我一个你最常见到的 runtime exception
第十八, error exception 有什么区别 ?
第十九, List, Set, Map 是否继承自 Collection 接口 ?
第二十, abstract class interface 有什么区别 ?
第二十一, abstract method 是否可同时是 static, 是否可同时是 native ,是否可同时是 synchronized?
第二十二,接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)?
第二十三,启动一个线程是用 run() 还是 start()?
第二十四,构造器 Constructor 是否可被 override?
第二十五,是否可以继承 String ?
第二十六,当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?
第二十七, try {} 里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后 ?
第二十八,编程题 : 用最有效率的方法算出 2 乘以 8 等於几 ?
第二十九,两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对 ?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ?
第三十一, swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String ?
第三十二,编程题 : 写一个 Singleton 出来。
 
 
 
数据库方面:
 
1. 存储过程和函数的区别
2. 事务是什么?
3. 游标的作用?如何知道游标已经到了最后?
4. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
 
 
 
1 。用 C #实现以下功能
   a 产生一个 int 数组,长度为 100 ,并向其中随机插入 1-100 ,并且不能重复。
   b 对上面生成的数组排序,需要支持升序、降序两种顺序
2 。请说明在 .net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。
3 。请说明 .net 中的错误处理机制,并举例
4 。请说出强名的含义
5 。请列出 c #中几种循环的方法,并指出他们的不同
6 。请指出 .net 中所有类型的基类
7 。请指出 GAC 的含义
8 SQL SREVER 中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
 
 
 
您在什么情况下会用到虚方法?它与接口有什么不同?
Q Override 与重载有什么区别?
Q :值类型与引用类型有什么区别?
Q :怎样理解静态变量?
Q :向服务器发送请求有几种方式?
Q DataReader Dataset 有什么区别?
Q :如果在一个 B/S 结构的系统中需要传递变量值,但是又不能使用 Session Cookie Application ,您有几种方法进行处理?
Q :用 .net B/S 结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
Q :软件开发过程一般有几个阶段?每个阶段的作用?
Q :微软推出了一系列的 Application Block ,请举出您所知道的 Application Block 并说明其作用?
Q :请列举一些您用到过的设计模式以及在什么情况下使用该模式?
Q :您对 WebService 的体会?
Q :您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?
Q :您离职的原因是什么?
Q :通过超链接怎样传递中文参数?
Q :请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
Q :请编程实现一个冒泡排序算法?
 
 
 
1 override 与重载的区别
2 .net 的错误处理机制是什么
3 C #中接口和类的异同
4 DataReader DataSet 的异同
 
 
 
1. 有哪几种方法可以实现一个类存取另外一个类的成员函数及属性 , 并请举列来加以说明和分析 .
2. 如果需记录类的实例个数 , 该如何实现 , 请写一个简单的类于以证明 .
3.A 类是 B 类的基类 , 并且都有自己的构造 , 析构函数 , 请举例证明 B 类从实例化到消亡过程中构造 , 析构函数的执行过程 .
4. 需要实现对一个字符串的处理 , 首先将该字符串首尾的空格去掉 , 如果字符串中间还有连续空格的话 , 仅保留一个空格 , 即允许字符串中间有多个空格 , 但连续的空格数不可超过一个 .
 
 
 
. 填空题
1.c# 中的三元运算符是 __?:___?
2. 当整数 a 赋值给一个 object 对象时,整数 a 将会被 __ 装箱 ( 封装 )___?
3. 类成员有 _____ 种可访问形式?  this.;new Class().Method;
4.public static const int A=1; 这段代码有错误么?是什么?  const 不能用 static 修饰
5.float f=-123.567F;
 int i=(int)f;
i 的值现在是 _____?   123 
6. 利用 operator 声明且仅声明了 “==” ,有什么错误么
7. 委托声明的关键字是 ______? delagete
8. sealed 修饰的类有什么特点?密封,不能继承
9. Asp.net 中所有的自定义用户控件都必须继承自 ________?Control
10. .Net 中所有可序列化的类都被标记为 _____? 
11. .Net 托管代码中我们不用担心内存漏洞,这是因为有了 ______?gc
12. 下面的代码中有什么错误吗? _______
     using System;
     class A
     {
          public virtual void F(){
              Console.WriteLine("A.F");
           }
      }
      abstract class B:A
       {
           public abstract override void F(); // new public abstract void F(); 
       }
 
13. 当类 T 只声明了私有实例构造函数时,则在 T 的程序文本外部, ___ 可以 ___ (可以 or 不可以)从 T 派生出新的类,不可以 ____ (可以 or 不可以)直接创建 T 的任何实例。
14. 下面这段代码有错误么?
    switch (i){
    case():
        CaseZero();
        break;
    case 1:
        CaseOne();
        break;
    case 2:
        dufault; //wrong
        CaseTwo();
        break;
   }
15. .Net 中,类 System.Web.UI.Page 可以被继承么?可以
 
 
 
. 简答题
1. c# using new 这两个关键字有什么意义,请写出你所知道的意义? using 指令 和语句 new 创建实例 new 隐藏基类中方法
4. 谈谈类和结构的区别?类是引用类型、结构是值类型
5. 一个长度为 10000 的字符串,通过随机从 a-z 中抽取 10000 个字符组成。请用 c #语言编写主要程序来实现。
6. 对于这样的一个枚举类型:
      enum Color:byte{
          Red,
          Green,
          Blue,
          Orange
       }
     string[] ss=Enum.GetNames(typeof(Color));
     byte[]   bb=Enum.GetValues(typeof(Color));
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。
7. 您了解设计模式么?请列出您所知道的设计模式的名称。 //
8. 请在 SQL Server 中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?
9. 什么叫做 SQL 注入,如何防止?请举例说明。
10. 下面这段代码输出什么?为什么?
     int i=5;
     int j=5;
     if (Object.ReferenceEquals(i,j))
          Console.WriteLine("Equal");
     else
          Console.WriteLine("Not Equal");
// 不相等,因为比较的是对象
 
 
 
1. 写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括 “.” ,对其设计测试用
2. 对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
开发语言概念题
3. 什么是反射?
4. Singleton 如何写设计模式
5.C# 中的垃圾回收机制是怎样的?
6. 什么是 Application Pool
7. 链表和数组的区别,各有什么优缺点 .
8.Remoting 在客户端服务器怎么实现 ?
9. 什么是友元函数?
10. 用标准 C 如何实现多态?
11. 什么是虚函数?
12. 什么是抽象函数?
13. 什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
 
 
 
英语题
14. 用英文介绍一下使用 C#/C++ 做的项目,主要功能
15. 如果要与美国开电话会议,会如何与美国的工程师沟通
16. 如果老板认为你的技术落后,你会怎么回答
 
 
 
数据库知识题
17. 使用什么工具来调用存储过程
18.SQL Server 的两种索引是何形式?索引的作用?索引的优缺点?
19. 触发器的作用
 
 
 
其它知识题及问题
20. 什么是 Web Service
21. 什么是 XML
22.Socket 怎么实现?
 
1.       填空 : (1) 面向对象的语言具有 ________ 性、 _________ 性、 ________ 性。

        (2)
能用 foreach 遍历访问的对象需要实现  ________________ 接口或声明 ________________ 方法的类型。

        (3)
列举 ADO.net 中的五个主要对象 _______________ _____________ _______________ _______________ _________________

2. 
不定项选择:

(1) 
以下叙述正确的是:  

      A. 
接口中可以有虚方法。      B.  一个类可以实现多个接口。  
      C. 
接口不能被实例化。        D.  接口中可以包含已实现的方法。  

   (2) 
从数据库读取记录,你可能用到的方法有:

      A. ExecuteNonQuery            B. ExecuteScalar

      C. Fill                        D. ExecuteReader

3. 
简述  private  protected  public  internal  修饰符的访问权限。


4. 
写出一条 Sql 语句:  取出表 A 中第 31 到第 40 记录( SQLServer,  以自动增长的 ID 作为主键 ,   注意: ID 可能不是连续的。)  


5 .
列举 ASP.NET  页面之间传递值的几种方式。  


6. 
写出程序的输出结果  

class Class1  { 
       private string str = "Class1.str"; 
       private int i = 0; 
       static void StringConvert(string str)  { 
           str = "string being converted."; 
       } 
       static void StringConvert(Class1 c)  { 
           c.str = "string being converted."; 
       } 
       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"; 
           Class1 c = new Class1(); 
           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); 
       }  
    } 


7.
写出程序的输出结果  

public abstract class A  

        public A()  
       { 
            Console.WriteLine('A'); 
        } 
        public virtual void Fun()  
       { 
            Console.WriteLine("A.Fun()"); 
        } 


public class B: A  

        public B() 
       { 
            Console.WriteLine('B'); 
        } 

        public new void Fun()  
       { 
            Console.WriteLine("B.Fun()"); 
        } 

        public static void Main()  
       { 
           A a = new B(); 
           a.Fun(); 
        } 



8.      
写出程序的输出结果:  
public class A  

        public virtual void Fun1(int i) 
       { 
            Console.WriteLine(i); 
        } 

        public void Fun2(A a)   
       { 
            a.Fun1(1); 
            Fun1(5); 
        } 



public class B : A  

        public override void Fun1(int i)    
       { 
            base.Fun1 (i + 1); 
        } 

        public static void Main()   
       { 
            B b = new B(); 
            A a = new A(); 
            a.Fun2(b); 
            b.Fun2(a);          
        } 


9. 
一列数的规则如下 : 1 1 2 3 5 8 13 21 34...... 

   
求第 30 位数是多少,  用递归算法实现。 (C# 语言 )


10.  
程序设计 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 (C# 语言

要求:   1. 要有联动性,老鼠和主人的行为是被动的。

2.
考虑可扩展性,猫的叫声可能引起其他联动效应。

参考答案
1. (1)  
继承性、封装性、多态性。(考基本概念)  
   (2)  IEnumerable 
 GetEnumerator ( foreach 机制的理解,本来不想出这题的,凑分
   (3)  ... (
送分题 ADO.net 的了解
评分标准:一空 1 分,满分 10 分。  

 

2. (1) B
C ( 考对接口的理解 )  (2)  B C D ( 考查对 ADO.net 的熟练程度
  
评分标准 一题 5 分,不选或者错选均不得分。漏选得 2 分。满分 10 分。  

 

3. . private :   
私有成员 在类的内部才可以访问。  
     protected : 
保护成员,该类内部和继承类中可以访问。  
     public :    
公共成员,完全公开,没有访问限制。  
     internal:   
在同一命名空间内可以访问。  
评分标准:答对 1 2 分, 2 5 分, 3 7 分。全对 10 分。  ( 送分题

 

4.  
1:  select top 10 * from A where id not in (select top 30 id from A) 
    
2:  select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 
    
评分标准:  写对即 10 分。 ( 答案不唯一, datagrid  分页可能需要用到
  
5.  1.
使用 QueryString,   ....?id=1; response. Redirect().... 
    2.
使用 Session 变量  
    3.
使用 Server.Transfer 
    .... 
   
评分标准:  答对 1 点得 3 分,  两点 7 分,  3 10 分。  


6.  (
考查值引用和对象引用
10 
21 

str 
string being converted. 
评分标准:答对一点得 2 分,满分 10 分。  


7.  A 
    B 
A.Fun() 
评分标准:  写出 A.B  5 分,写出 A.Fun() 5 分,满分 10 分。  
(
考查在继承类中构造函数 以及 new  方法 , ) 

 


8.  2 
    5 
    1 
    6 

评分标准:  答对一点得 2 分,两点得 5 分, 3 点得 7 分。全对得 10 分。

(
一些人做这题,头都晕了 .... ^_^ )

 

9.  

    public class MainClass 
    { 
        public static void Main()   
        { 
            Console.WriteLine(Foo(30)); 
        } 
        public static int Foo(int i) 
        { 
            if (i <= 0) 
                return 0; 
            else if(i > 0 && i <= 2) 
                return 1; 
            else return Foo(i -1) + Foo(i - 2); 
        } 
    } 
评分标准:  写出 return Foo(i -1) + Foo(i - 2);  5 分。  

 
写出 if(i > 0 && i <= 2) return 1;  5 分。

           
方法参数过多需要扣分(扣除分数  =  参数个数   1

           
不用递归算法扣 5

           (
递归算法在树结构建立等方面比较常用 )

 

10           

 
要点: 1.  联动效果,运行代码只要执行 Cat.Cryed() 方法。 2.  对老鼠和主人进行抽象  
评分标准 : <1>. 构造出 Cat Mouse Master 三个类,并能使程序运行 (2
            <2>
Mouse Master 中提取抽象( 5 分)  
            <3>
联动效应,只要执行 Cat.Cryed() 就可以使老鼠逃跑,主人惊醒。 (3


    public interface Observer 
    { 
        void Response();    //
观察者的响应,如是老鼠见到猫的反映  
    } 
    public interface Subject 
    { 
        void AimAt(Observer obs);  //
针对哪些观察者,这里指猫的要扑捉的对象 --- 老鼠  
    } 
    public class Mouse : Observer 
    { 
        private string name; 
        public Mouse(string name, Subject subj) 
        {           
            this.name = name; 
            subj.AimAt(this); 
        } 
        
        public void Response() 
        { 
            Console.WriteLine(name + " attempt to escape!"); 
        } 
    } 
    public class Master : Observer 
    {   
        public Master(Subject subj) 
        {           
            subj.AimAt(this); 
        } 
        
        public void Response() 
        { 
            Console.WriteLine("Host waken!"); 
        }  
    } 
  
    public class Cat : Subject 
    { 
        private ArrayList observers; 
        public Cat() 
        {   
            this.observers = new ArrayList(); 
        } 
        public void AimAt(Observer obs) 
        { 
            this.observers.Add(obs); 
        } 
        public void Cry() 
        { 
            Console.WriteLine("Cat cryed!"); 
            foreach (Observer obs in this.observers) 
            { 
                obs.Response(); 
            } 
        } 
    } 
    class MainClass 
    {       
        static void Main(string[] args) 
        { 
            Cat cat = new Cat(); 
            Mouse mouse1 = new Mouse("mouse1", cat); 
            Mouse mouse2 = new Mouse("mouse2", cat); 
            Master master = new Master(cat); 
            cat.Cry(); 
        } 
    } 


//--------------------------------------------------------------------------------------------- 

设计方法二 使用 event -- delegate 设计 .. 
    public delegate void SubEventHandler(); 
    public abstract class Subject 
    { 
        public event SubEventHandler SubEvent; 
        protected void FireAway() 
        { 
            if (this.SubEvent != null) 
                this.SubEvent(); 
        }   
    } 
    public class Cat : Subject 
    {  
        public void Cry() 
        { 
            Console.WriteLine("cat cryed."); 
            this.FireAway(); 
        } 
    } 
    public abstract class Observer 
    { 
        public Observer(Subject sub) 
        { 
            sub.SubEvent += new SubEventHandler(Response); 
        } 
        public abstract void Response();    
    } 
    public class Mouse : Observer 
    { 
        private string name; 
        public Mouse(string name, Subject sub) : base(sub) 
        {   
            this.name = name; 
        } 
        public override void Response() 
        { 
            Console.WriteLine(name + " attempt to escape!"); 
        } 
    } 
    public class Master : Observer 
    { 
        public Master(Subject sub) : base(sub){} 
        public override void Response() 
        { 
            Console.WriteLine("host waken"); 
        } 
    } 
    class Class1 
    { 
        static void Main(string[] args) 
        { 
            Cat cat = new Cat(); 
            Mouse mouse1 = new Mouse("mouse1", cat); 
            Mouse mouse2 = new Mouse("mouse2", cat); 
            Master master = new Master(cat); 
            cat.Cry(); 
        } 

    }
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>