有多少人还努力在求职的道路上,献上本人面试踩到的地雷
 
1:ref和out有什么区别。
很多人应该可能都没有接触过这种用法, 这两个关键字均是传址的用法。
         class Program
        {
                 public static void Main(String[] args)
                {
                         int r, o;
                         int m=0;
                        r = RefValue(1, ref m);
                        Console.WriteLine( "after Ref:m={0}",m);
                        o = OutValue(1, out    m);
                        Console.WriteLine( "after Out:m={0}", m);
                        Console.WriteLine( "ref={0}", r);
                        Console.WriteLine( "out={0}", o);
                        Console.ReadLine();
                }
                 public static int RefValue( int i, ref int j)
                {
                        
                         return i + j;
                }
                 public static int OutValue( int i, out int j)
                {
                        j = 222;
                         return i + j;
                }
        }
贴上我回到家测试用的代码,在方法RefValue和OutValue中,OutValue的参数J被赋值222,因为out的用法就是“只出不进”,如OutValue(1,out m) 虽然m为0,不过由于关键字out 定义int j,所以m的值就被挡在了函数的外面,而在函数内部就必须给j赋值为222,将m的值转成了j的值222(事实上,是让m指向了j的地址),ref也是传址方式,不同的是在上面代码中,RefValue中没有对j进行赋值,调试则不会出现错误提示,因为调用RefValue(1,ref m)时,0的写进了方法里面,所以在返回的结果就是1+0=1,若在RefValue方法里面给j赋值,结果会和out输出的结果相同,总结就是大家常见的:ref可进可出,out只出不进
 
2:传址和传值的区别。
(看到这个题目直接让我曲解了他们的意思)
传址就是有变量A=5,B=6,把A的地址指向B,再取出A的值为6
传值就是有变量A=5,B=6,把B的值赋值给A,再输出A的值为6
 
3:数据库连接
(原先的题目是写一段ODBC的数据库连接,由于我忘记了,就用ADO.NET代替了,结果还少写了close())
try
{
string source= "xxxx;server=xxxx;uid=xx;xxxxx"
SqlConnection conn = new SqlConnnection(source);
conn.open();
}
catch(e)
{
}
finally
{
conn.close();
}
一下的结果会是比较好的形式。
 
4:接口和抽象类的区别
这种题目需要了解接口和抽象类的定义和概念,才能比较好的掌握回答的尺度,答案,网络上漫天飞,我就不多说了。
 
5:递归求值
这个是比较常见的问题,网上也会有很多很多,比如:1,1,2,3,5,8,13.....问这样的序列第三十位的值。
public 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);
}
 
6:堆和栈的区别
简单来解释就是:栈用于存放值类型(如int float***);堆用于存放引用类型(object)
栈是由编译器自动分配释放的,而堆是由程序员分配释放的
(解释的比较烂,求各位帮忙完善,简单易懂最好)
 
题目网上有很多,重要的是在面试的时候不光会写,还要真的可以解释,那才会吸引到别人。
 
7:ReferenceEquals()和Equals()的区别
简单来说,Reference 应用于对象类型,Equals应用于值类型的比较
int v=5;ReferenceEquals(v,v)返回false结果    对比值类型
ReferenceEquals(null,null)返回true结果      对比引用类型
int v=5;Equals(v,v)返回true结果