有多少人还努力在求职的道路上,献上本人面试踩到的地雷
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结果