现在收集些常见面试题:
    这里找了一个比较全的,提供给大家下载:Net面试题大全
 
    将比较常见的C#面试题分布出来供有需求的朋友参考,本文章会不断更新。如果有好的面试题不妨给我留言,我来完善。最好是有答案的。

   1:委托和事件
    
C#经典面试题及答案 (1)_经典 //事件类

C#经典面试题及答案 (1)_经典
    public class EventClass
C#经典面试题及答案 (1)_职场_03    
{
C#经典面试题及答案 (1)_休闲_06        
public void display(object
 sender, System.EventArgs e)
C#经典面试题及答案 (1)_经典_07        
{
C#经典面试题及答案 (1)_休闲_06            Console.WriteLine(
"This is the Event Class"
);
C#经典面试题及答案 (1)_休闲_06            Console.ReadLine();
C#经典面试题及答案 (1)_经典_12        }

C#经典面试题及答案 (1)_经典_13    }

C#经典面试题及答案 (1)_经典    
//调用类
C#经典面试题及答案 (1)_经典
    class InvokeClass
C#经典面试题及答案 (1)_职场_16    
{
C#经典面试题及答案 (1)_休闲_06        
//声明代理对象,注意参数

C#经典面试题及答案 (1)_休闲_06
        public delegate void delegateobj(object sender, System.EventArgs e);
C#经典面试题及答案 (1)_休闲_06        
//声明事件对象 

C#经典面试题及答案 (1)_休闲_06
        private event delegateobj obj;
C#经典面试题及答案 (1)_休闲_06        
//声明要调用的事件类对象

C#经典面试题及答案 (1)_休闲_06
        private EventClass ec;
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_休闲_06        
public
 InvokeClass()
C#经典面试题及答案 (1)_职场_27        
{
C#经典面试题及答案 (1)_休闲_06            ec 
= new
 EventClass();
C#经典面试题及答案 (1)_休闲_06            
//添加事件对象到事件队列中,参数为要调用的事件

C#经典面试题及答案 (1)_休闲_06
            this.obj += new delegateobj(ec.display);
C#经典面试题及答案 (1)_经典_12        }

C#经典面试题及答案 (1)_休闲_06        
//调用delegate对象触发事件
C#经典面试题及答案 (1)_休闲_06
        protected void OnObj(System.EventArgs e)
C#经典面试题及答案 (1)_经典_36        
{
C#经典面试题及答案 (1)_休闲_06            
if (this.obj != null
)
C#经典面试题及答案 (1)_面试_40            
{
C#经典面试题及答案 (1)_休闲_06                obj(
this
, e);
C#经典面试题及答案 (1)_经典_12            }

C#经典面试题及答案 (1)_经典_12        }

C#经典面试题及答案 (1)_休闲_06        
public void RaiseEvent()
C#经典面试题及答案 (1)_休闲_47        
{
C#经典面试题及答案 (1)_休闲_06            EventArgs e 
= new
 EventArgs();
C#经典面试题及答案 (1)_休闲_06            OnObj(e);
C#经典面试题及答案 (1)_经典_12        }

C#经典面试题及答案 (1)_休闲_06        
static void Main(string[] args)
C#经典面试题及答案 (1)_面试_54        
{
C#经典面试题及答案 (1)_休闲_06            InvokeClass ic 
= new
 InvokeClass();
C#经典面试题及答案 (1)_休闲_06            Console.WriteLine(
"Please input a string"
);
C#经典面试题及答案 (1)_休闲_06            
string input =
 Console.ReadLine();
C#经典面试题及答案 (1)_休闲_06            
if (input.Equals(""
))
C#经典面试题及答案 (1)_经典_61            
{
C#经典面试题及答案 (1)_休闲_06                Console.WriteLine(
"Sorry,you don't input anything"
);
C#经典面试题及答案 (1)_经典_12            }

C#经典面试题及答案 (1)_休闲_06            
else
C#经典面试题及答案 (1)_面试_67            
{
C#经典面试题及答案 (1)_休闲_06                
//触发事件

C#经典面试题及答案 (1)_休闲_06
                ic.RaiseEvent();
C#经典面试题及答案 (1)_经典_12            }

C#经典面试题及答案 (1)_经典_12        }

C#经典面试题及答案 (1)_经典_13    }
      
      2:遍历页面中所有的TextBox,交将值设置成"a"
    
 
C#经典面试题及答案 (1)_经典for (int j = 0; j < this.Controls.Count; j++)
C#经典面试题及答案 (1)_休闲_76            
{
C#经典面试题及答案 (1)_休闲_06                
foreach (object o in
 Page.Controls[j].Controls)
C#经典面试题及答案 (1)_职场_80                
{
C#经典面试题及答案 (1)_休闲_06                   
C#经典面试题及答案 (1)_休闲_06                    
if (o is
 TextBox)
C#经典面试题及答案 (1)_职场_85                    
{
C#经典面试题及答案 (1)_休闲_06                        TextBox txt 
=
 (System.Web.UI.WebControls.TextBox)o;
C#经典面试题及答案 (1)_休闲_06                        txt.Text 
= "A"
;
C#经典面试题及答案 (1)_经典_12                    }

C#经典面试题及答案 (1)_休闲_06                   
C#经典面试题及答案 (1)_经典_12                }

C#经典面试题及答案 (1)_经典_13            }
       
        3:常用排序算法
        
 
C#经典面试题及答案 (1)_面试_94 /// <summary>
C#经典面试题及答案 (1)_休闲_06        
/// /冒泡排序
C#经典面试题及答案 (1)_经典_13        
/// </summary>

C#经典面试题及答案 (1)_经典        private void BubbleSort()
C#经典面试题及答案 (1)_休闲_99        
{
C#经典面试题及答案 (1)_休闲_06            
//冒泡排序

C#经典面试题及答案 (1)_经典_103
            int[] list = new int[511112223854-5655 };//初始化数组
C#经典面试题及答案 (1)_休闲_06
            int i, j, temp;
C#经典面试题及答案 (1)_休闲_06            
for (j = 1; j < list.Length; j++
)
C#经典面试题及答案 (1)_职场_108            
{
C#经典面试题及答案 (1)_休闲_06                
for (i = 0; i < list.Length - j; i++
)
C#经典面试题及答案 (1)_面试_112                
{
C#经典面试题及答案 (1)_休闲_06                    
if (list[i] > list[i + 1
])
C#经典面试题及答案 (1)_职场_116                    
{
C#经典面试题及答案 (1)_休闲_06                        temp 
=
 list[i];
C#经典面试题及答案 (1)_休闲_06                        list[i] 
= list[i + 1
];
C#经典面试题及答案 (1)_休闲_06                        list[i 
+ 1=
 temp;
C#经典面试题及答案 (1)_经典_12                    }

C#经典面试题及答案 (1)_经典_12                }

C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_12            }

C#经典面试题及答案 (1)_休闲_06            
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_13        }

C#经典面试题及答案 (1)_休闲_129        
/// <summary>
C#经典面试题及答案 (1)_休闲_06        
/// 选择排序
C#经典面试题及答案 (1)_经典_13        
/// </summary>

C#经典面试题及答案 (1)_经典        private void SelectSort()
C#经典面试题及答案 (1)_职场_134        
{
C#经典面试题及答案 (1)_休闲_06            
//选择排序

C#经典面试题及答案 (1)_面试_138
            int[] a = new int[511112223854-5655 };//初始化数组
C#经典面试题及答案 (1)_休闲_06
            int min, min_k;//定义最小数,和最小数的下标
C#经典面试题及答案 (1)_休闲_06
            for (int i = 0; i < 5; i++)
C#经典面试题及答案 (1)_休闲_143            
{
C#经典面试题及答案 (1)_休闲_06                min 
= a[i];//将当前循环的数设置成最小数

C#经典面试题及答案 (1)_休闲_06
                min_k = i;
C#经典面试题及答案 (1)_休闲_06                
for (int j = i + 1; j < 5; j++
)
C#经典面试题及答案 (1)_面试_149                
{
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_休闲_06                    
if (a[j] <
 min)
C#经典面试题及答案 (1)_经典_154                    
{
C#经典面试题及答案 (1)_休闲_06                        min 
=
 a[j];
C#经典面试题及答案 (1)_休闲_06                        min_k 
=
 j;
C#经典面试题及答案 (1)_休闲_06                        
int tem =
 a[min_k];
C#经典面试题及答案 (1)_休闲_06                        a[min_k] 
=
 a[i];
C#经典面试题及答案 (1)_休闲_06                        a[i] 
=
 tem;
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_12                    }

C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_12                }

C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_12            }

C#经典面试题及答案 (1)_休闲_06
C#经典面试题及答案 (1)_经典_13        }
      
       4:结构体(Struct) 和 类(Class)

       

 
      对于结构和类,初看上去都一样。都可以有自己的字段,属性,方法,还能有构造函数。但是这两者其实有很大的不同,而且各自有各自的应用范围。下面还是谈谈两者的分别吧。

      <1> 结构的特点和性能优势

      结构是值类型,继承自System.ValueType。结构相对于类来说有两个性能上的优势,结构通常分配在栈(Stack)上面,类的实际内容通常分配在堆(Heap)上面,访问栈的速度会比访问堆的速度更快。但是这并不是一个明显的优势。最主要的是栈上面的内容释放是非常快的,通常在函数调用结束以后,栈就自动释放了;但是对于堆来说,必须等待垃圾收集器(Garbage Collector)来收集,往往垃圾收集器的工作都有滞后特性,所以我们不一定当时就能注意到性能的变化,但是这种影响终究会体现出来。

      <2> 结构的弱点

       (1)作为参数传递的时候效率低

        (2)装箱(Boxing)和解箱(Unboxing)效率低

 
     <3>  何时使用结构,何时使用类?

    在下面的情况下使用类


      1 内容很多的时候,因为结构总是暗地里拷贝了一个临时变量。
      2 需要非常多内存的时候,因为栈的容量有限,而堆通常是足够使用的。
      3 需要在声明字段的时候进行初始化。
      4 需要从基类继承。
      5 需要多态性。接口也可以用来实现多态性,但是因为结构是值类型,尽管它可以从接口继承,但是在多态过程中会进行装箱和解箱的操作。
     在下面的情况下使用结构

       1 希望能够象原始类型(比如int,double之类的)一样使用它。比如我们可以声明一个复数结构,然后像double类型一样地使用它。
      2 需要的内存较少,栈可以完全地容纳它。
      3 想避开垃圾收集器的处理,自己掌握资源的释放。
      4 只需要缺省的值,而不需要在声明字段的时候赋值。
      5 不需要从基类继承,当然,不包括ValueType。
      6 不需要多态行为。

      5:给XML文件中已知的结点添加属性:

         XML文件结构如下:

 
C#经典面试题及答案 (1)_经典<?xml version="1.0" encoding="utf-8"?>
C#经典面试题及答案 (1)_经典
<MovieBlacklist>
C#经典面试题及答案 (1)_经典  
<Blacklist id="17050" part="32" name="江湖俏佳人" age="20" />
C#经典面试题及答案 (1)_经典  
<Blacklist id="17310" part="1" name="阴谋" />
C#经典面试题及答案 (1)_经典  
<Blacklist id="17316" part="1" name="WWE摔角080314" />
C#经典面试题及答案 (1)_经典  
<Blacklist id="17190" part="1" name="2012世界末日" />
C#经典面试题及答案 (1)_经典
</MovieBlacklist>
      
       给第一个Blacklist添加属性age

 
C#经典面试题及答案 (1)_职场_180/// <summary>
C#经典面试题及答案 (1)_休闲_06          
/// 给已知结点增加一个属性
C#经典面试题及答案 (1)_休闲_06          
/// </summary>

C#经典面试题及答案 (1)_休闲_06          
/// <param name="XmlPathNode"></param>
C#经典面试题及答案 (1)_经典_13          
/// <param name="Content"></param>

C#经典面试题及答案 (1)_经典        public void XMLAddAttributes(string XmlPathNode,string sName, string sContent)
C#经典面试题及答案 (1)_职场_187          
{
C#经典面试题及答案 (1)_休闲_06              
// 创建节点

C#经典面试题及答案 (1)_休闲_06
              XmlNode attrCount = objXmlDoc.CreateNode(XmlNodeType.Attribute, sName , null);
C#经典面试题及答案 (1)_休闲_06              attrCount.Value 
=
 sContent ;
C#经典面试题及答案 (1)_休闲_06              
// 添加节点属性

C#经典面试题及答案 (1)_休闲_06
              objXmlDoc.SelectSingleNode(XmlPathNode).Attributes.SetNamedItem(attrCount);
C#经典面试题及答案 (1)_经典_13          }

       6.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答:
 
int sum=0;
bool flag=true
;
for(int i=1;i<=m;i++
)
{
   
if
(flag)
      sum
+=
i;
   
else

      sum
-=i;
   flag
=!
flag;
}
return sum;