我知道这是一个非常基本的问题,但是一位采访者以非常戏法的方式问我,我很无奈:(
我只知道接口的材料或理论定义,并且在我工作的许多项目中也实现了它.但我真的不明白为什么以及如何有用.
我也不了解界面中的一件事.即,例如,我们使用
conn.Dispose();在最后一块.但我没有看到该类正在实现或继承IDisposableinterface(SqlConnection)类我的意思.我想知道如何调用方法名称.同样,我不了解Dispose方法是如何工作的,因为我们需要使用我们自己的实现为所有接口方法实现函数体.接口如何被接受或命名为合同?到目前为止,这些问题一直在我心中滚动,坦率地说,我从来没有看到任何能以我能理解的方式解释我的问题的好线程.
MSDN像往常一样看起来非常可怕,没有一行是明确的(伙计们,善意的理由是谁进入高级开发,我强烈认为任何代码或文章应该达到任何人看到它的想法,因此像许多人说的那样,MSDN是没用的).
采访者说:
他有5种方法,他很乐意直接在课堂上实现它,但如果你必须选择抽象类或接口,你选择哪一种,为什么?我确实回答了他在各种博客中读到的所有内容,说明抽象类和界面的优缺点,但他不相信,他试图理解"为什么界面"."为什么抽象类"一般,即使我只能实现相同的方法一次而不是改变它.
我看不到网络中的任何地方,我可以得到一篇文章,可以清楚地解释我的接口及其功能.我是众多程序员中的一员,他们仍然不了解接口(我知道我使用的理论和方法)但不满意我清楚地理解它.
我接受了一次采访,我被问到如下:
问题:具有相同名称和签名但返回类型不同的方法.是否有可能,他问我这种类型的东西.
有人可以告诉我以下内容:
在任何情况下都是可能的事情(比如基类中的一个和至少派生类中的一个?)如果是这样的类型是什么?像编译或运行时多态?
在编译时多态,如果返回类型的方法也与签名不同怎么办?但只有功能名称相同.编译时多态还在吗?
在覆盖中,如果我有不同的返回类型但方法名称和签名相同怎么办?可能吗 ?(他问我这个问题,我回答错误:()请帮帮我.
谢谢
这是一个面试问题,很简单,但我对答案没有信心.
如果catch块中发生异常会发生什么?
我试图举一个例子来说明采访者试图问我的内容,如果没有编译,请更正我的程序,我真的很新.如果在Catch中发生异常并且调用者int hat的值是什么,那么底线是会发生什么.
例如,我有以下内容:
double Calculate(int x)
{
try
{
x = x/2;
}
catch(Exception ex)
{
Console.Writeline("Message: "+ ex.Message);
}
finally
{
x = 10;
}
return x;
}
double myResult = Calculate(x); //x can be any number or 0 for example
Run Code Online (Sandbox Code Playgroud)
现在有两个问题:
如果catch块中发生异常会发生什么?另外,如何解决?(这是面试官提出类似问题的简单例子).
如果在Calculate(x)方法中发生异常,myResult会发生什么?在所有情况下它的价值是什么?(请用例子解释每个案例)
我想通过详细的解释来理解这一点.
非常感谢.
我在5分钟后接受采访,我没有回答3个问题,有人可以帮助我.
题:
如何在多线程应用程序函数中查找死锁场景并防止它?
我给的答案:
我给出了死锁和锁,mutex,监视器,信号量的定义.他告诉我,这些是工具,但是如何寻找死锁场景,因为当我们盲目地使用这些工具时,它会花费他所说的性能:(
请帮我理解这个.
乡亲
我遇到了许多用于理解多态性的线程(编译时和运行时).我很惊讶地看到程序员声称重载是运行时的一些链接,而重写是编译时.
我想从这里知道的是:
因为我阅读了许多理论定义,但我对理解这一定义并不满意.
另外,我想了一下,我也觉得,重载应该是运行时因为,因为我有一个计算Area的方法,在运行时只根据我传递的参数决定调用哪个重载方法(如果我只传递一个参数,它应该触发Square,如果参数是2,它应该触发Rectangle)....所以不是我可以声称它的运行时间吗?它的编译时间如何?(大多数人说理论上,重载是编译时间,但他们甚至没有提供正确的实时示例......很少有人声称它的运行时间)....
另外,我觉得压倒一切是编译时间,因为在编写代码和编译时,你确保使用了虚拟关键字,并在派生类中覆盖了该方法,否则会给你编译时错误.所以我感觉它的编译时间,就像我在一个线程中看到的那样......但是大多数线程声称它的运行时间:D
我很困惑:(这个问题是我的问题1和2的补充.请帮助一个实时的例子..因为我已经知道理论定义.... :(
谢谢....
为什么依赖属性必须是静态的?
我已经看到它已经在这里的一些帖子中被问到了,但我无法正确理解它.
如果有人可以通过一个小片段帮助我理解它会很棒.
伙计我经历了很多链接/博客.我看到他们中的大多数人不能用外行语言清楚地沟通,以及MVP,MVVM和MVC之间的技术差异.我知道每个角色代表什么,也参与MVP.但是,如果有人问我同样的问题,我真的不明白.为什么我不能在MvP中使用控制器而不是Presenter?为什么在MVVM中使用View Model而不是演示者,以及它有何不同?我可以在一个单一sentense说"MVC是ASP.NET优化,也有在VS模板,MVP是为WinForms和MVVM为SL/WPF优化的,因为它支持内置的绑定功能等".但我觉得这不是我必须理解的,而是详细而深刻的.有人可以通过详细的解释和用法以及选择一个的实际理由来阐明这一点.谢谢你们...
通过各种博客后,我对"多目标"或并列执行的术语感到很困惑.
一些博客说,并行执行意味着一个进程中有两个版本的CLR.其他一些人声称,它就像.net 2.0和.net 3.0程序集并行执行.我非常失望,我不确定谁是对的谁是错的.
我也在许多博客中看到过像Scott Hanselman的博客等(这让人很困惑),如果目标框架是4.0,.NET 4.5的任何功能都将无效.我同意.但是我不能同意或理解这样一个事实:如果我使用4.5构建它并在4.0中部署,那么4.0中修复了其bug的功能将被隐藏.在这里,我不理解"隐藏"一词,没有人敢解释它究竟意味着什么.这意味着运行时错误?这意味着编译时错误?它不能这样.这意味着行为不一致?例外?如果是这种情况,我想知道为什么MS在VS中开发这种类型的灵活性.它是否符合任何目的?我理解,第一个案例是有意义的,但不理解或同意第二个案例.
我还在Rick/Scott Hanselman的帖子中看到,主要的变化意味着包括CLR在内的完整升级.然后,我应该看到3.0作为主要升级,但它不是仍然使用.NET 2.0 CLR.那么为什么命名术语是3.0.xx/3.5.xx?与.NET 4.0.30319.x中的情况类似,其中CLR也是新的,所以我同意这一点.我很惊讶谁是正确的.这些人或MSDN都与他们的原则相矛盾(就像MSDN所说格式为Major.Minor.Build.Revision,Hanselman或其他人说,Major意味着CLR升级,而它不在.NET 3.0中)
参考:http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx
http://msdn.microsoft.com/en-us/library/bb822049(v=vs.110).aspx
对上述两个问题的想法?
我想知道,一般在C#中,构造函数的概念是,基类缺点首先应该执行,但为什么我看到派生类静态构造函数被调用然后基类缺点.有人可以解释一下吗?:(
乡亲
我有一个密封的课程如下.我想扩展这个密封类,以便添加一个返回x和y平均值的方法.这不仅仅是使用"this"的扩展方法:(有人可以帮我理解"扩展密封类"的概念及其"实时使用和效益"
class Sealed A
{
int a; int b;
int Add (int x, int y)
{
return x+y;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢....
c# ×9
.net ×8
c#-4.0 ×4
asp.net ×3
oop ×2
wpf ×2
.net-4.0 ×1
abstraction ×1
class ×1
deadlock ×1
exception ×1
inheritance ×1
interface ×1
polymorphism ×1
silverlight ×1
winforms ×1