可怕的C#编程面试-有什么建议吗?[关闭]


21

我有一份可能的C#开发人员职位,但在进行面试之前,我需要通过职业介绍所的测试。

现在,即使我是一位资深开发人员,拥有超过10年的编程经验,并且其中有超过3年的c#经验,我真的不希望进行此测试,而且我认为我很有可能会失败。

以我的经验,这些测试是无法预测的,要求您在日常工作中很少使用的东西。

对于需要修改的内容,我需要您的最佳建议-例如一本好书或网站。我的准备时间不到1周,因此必须通过。

提前致谢。

编辑:为进一步证明我对编写此类测试的关注,请考虑以下问题:

12)一个事件是:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

根据测试,正确的答案是A,但是由于我一直在进行SOA开发(通常情况下事件可以基于系统事件(而不是用户操作),所以我100%确信事件不必由用户操作。这也是一个C#问题(不是ASP.net问题)。根据我的理解,我无法真正找到正确的答案,但B似乎是最好的(如果party的定义是:any可以触发事件的实体,这类问题使我感到恐惧。


4
如果您是“高级开发人员”,并且每天使用C#已经三年了,那么您应该没事。这些测试通常是为了淘汰那些不了解该语言或其用途的人。如果您每天使用它已有3年,那么您应该在给定测试中遇到了几乎所有的陷阱。
乔治·斯托克

11
@GeorgeStocker-实际上,我不得不参加其中一些测试(更多针对完整的.NET框架),并且它们非常详细。我发现它们非常困难,因为首先它们进入了我没有太多经验的框架领域(例如WCF),另外,您还必须了解诸如在.config文件中使用哪种配置选项才能打开的内容。一些晦涩的选择。您很少会记住它,因为您可能只使用过一次,然后在Google上使用它。我发现体验有些令人沮丧。
Scott Whitlock

7
哦,我弄错的问题之一是,“在VB.NET中,用于声明结构的关键字是什么?a)结构b)结构c)结构d)结构”。我当时在想:“智能知道这一点,所以我不必这样做!” 现在,答案当然已经深深地印在我的记忆中。
Scott Whitlock

17
@ScottWhitlock:您无法充分准备设计不当的采访。在某些时候,您必须相信他们有足够的能力根据您实际声称擅长的领域以及一些概念能力来提出和判断。如果不是,那么无论如何您都可能会度过痛苦的时光。
亚伦诺特,2011年

2
这是C#语言测试还是.NET Framework测试?
蚂蚁

Answers:


24

尽管年代久远,但也许这篇博客文章对您有用:.NET开发人员应该知道哪些知识(更多.NET面试问题)

每个写代码的人

  • 描述线程和进程之间的区别?
  • 什么是Windows服务?它的生命周期与“标准” EXE有什么不同?
  • Windows上的任何单个进程可以处理的最大内存量是多少?这与系统的最大虚拟内存不同吗?这将如何影响系统设计?
  • EXE和DLL有什么区别?
  • 什么是强类型与弱类型?哪个是首选?为什么?
  • Corillian的产品是“组件容器”。命名至少三个现在随Windows Server家族一起提供的组件容器。
  • 什么是PID?对系统进行故障排除时,它有什么用?
  • 一个TCP / IP端口上可以侦听多少个进程?
  • 什么是GAC?它解决什么问题?

中级.NET开发人员

  • 描述面向接口的编程,面向对象的编程和面向方面的编程之间的区别。
  • 描述什么是接口以及它与类的区别。
  • 什么是反射?
  • 使用ASMX的XML Web Services和使用SOAP的.NET Remoting有什么区别?
  • XmlSchema和CLS同构表示类型系统吗?
  • 从概念上讲,早装订和晚装订有什么区别?
  • 使用Assembly.Load是静态引用还是动态引用?
  • 什么时候使用Assembly.LoadFrom或Assembly.LoadFile?
  • 程序集合格名称是什么?是文件名吗?有什么不同?
  • 这有效吗?Assembly.Load(“ foo.dll”);
  • 强命名程序集与非强命名程序集有何不同?
  • 日期时间可以为空吗?
  • 什么是JIT?什么是NGEN?每个都有哪些限制和好处?
  • .NET CLR中的分代垃圾收集器如何管理对象生存期?什么是非确定性终结?
  • Finalize()和Dispose()有什么区别?
  • using()模式有什么用?什么是IDisposable?它如何支持确定性终结?
  • 这个有用的命令行有什么作用?任务列表/ m“ mscor *”
  • 过程内和过程外有什么区别?
  • 什么技术可以在.NET中进行进程外通信?
  • 当您在ASP.NET中运行组件时,它在Windows XP中正在运行什么进程?Windows 2000?Windows 2003?

高级开发人员/建筑师

  • 这样的线怎么了?DateTime.Parse(myString);
  • 什么是PDB?它们必须位于哪里才能调试工作?
  • 什么是圈复杂度,为什么如此重要?
  • 编写标准的lock()加上“仔细检查”以围绕变量访问创建一个关键部分。
  • 什么是FullTrust?GAC的程序集是否具有FullTrust?
  • 如果用要求特定安全权限的属性来修饰代码,代码将获得什么好处?
  • 这是做什么的?gacutil / l | 找到/ i“ Corillian”
  • 这是做什么的?sn -t foo.dll
  • 必须通过防火墙为DCOM打开哪些端口?135端口的用途是什么?
  • 对比OOP和SOA。各自的宗旨是什么?
  • XmlSerializer如何工作?使用它的进程需要什么ACL权限?
  • 为什么catch(Exception)几乎总是一个坏主意?
  • Debug.Write和Trace.Write有什么区别?什么时候应该使用?
  • 调试和发布版本之间有什么区别?速度有明显差异吗?为什么或者为什么不?
  • JITting是否按装配或方法发生?这如何影响工作集?
  • 对照接口使用抽象基类?
  • a.Equals(b)和a == b有什么区别?
  • 在比较的上下文中,什么是对象标识与对象等价?
  • NET中如何进行深层复制?
  • 解释有关IClonable的最新想法。
  • 什么是拳击?
  • 字符串是值类型还是引用类型?
  • XmlSerializer使用的“ PropertySpecified”模式的意义是什么?它试图解决什么问题?
  • 为什么在.NET中输出参数不是一个好主意?是吗
  • 属性可以放在方法的特定参数上吗?为什么这有用?

C#组件开发人员

  • 将override与new并置。什么是阴影?
  • 解释虚拟,密封,覆盖和抽象的用法。
  • 解释此字符串的每个组成部分的重要性和用法:Foo.Bar,Version = 2.0.205.0,Culture = neutral,PublicKeyToken = 593777ae2d274679d
  • 解释公共,受保护,私人和内部之间的区别。
  • 使用主互操作程序集(PIA)有什么好处?
  • NUnit通过哪种机制知道要测试的方法?
  • catch(Exception e){throw;}和catch(Exception e){throw;}之间有什么区别?
  • typeof(foo)和myFoo.GetType()有什么区别?
  • 解释第一个构造函数中发生的情况:public class c {public c(string a):this(){;}; public c(){;}}这个构造有什么用?
  • 什么是?可以在静态方法中使用它吗?

ASP.NET(UI)开发人员

  • 描述基于浏览器的Form POST如何变成服务器端事件,例如Button1_OnClick ...

1
此处列出的每个答案都是有益且有益的,但是我仔细阅读了您列表中的每个问题(花了我4个小时),并在线编写了样本测试并通过了测试。我鼓励任何.net开发人员至少回答一次这些问题,并确保您理解答案,并确保获得第二和第三意见。很多人回答了这些问题(可在Google上找到),但是很多答案有时甚至还不够简洁。所以要小心 交叉检查找到的答案。
JL01

2
好的链接!我很惊讶我认识的那些人。自我++;
贾斯汀·塞尔夫

@justnS:当我发现帖子时,我也发生了同样的事情。:-)
Konamiman

几周前,我去了一次采访,他们把这印出来供我回答。对我来说,反映在面试官身上。
dbones 2012年

1
您何时添加答案?;)
Thijs van Dien 2013年

10

刚走开,蕾妮

我已经进行了几次这样的测试。现在我走开了。这些测试衡量的是编程知识中最琐碎的部分。您是否想为认为这些测试是评估程序员的好方法的人工作?我不。


1
它们是作为最低标准的好方法,即必要条件,但不是充分条件。
Sklivvz 2011年

4
@Sklivvz:也许,如果他们是好的测试。大多数商业测试都是琐事中的愚蠢练习:“您将使用哪个班级来阅读文本文件?” 优秀的开发人员也许可以在十分钟内就字节流和字符流之间的差异以及UTF编码的细节进行交谈,但仍然会遗漏此问题。当信息容易获得时,就没有必要记住它了。
凯文·克莱恩

2
我同意凯文。测试中可能包含太多与您的工作无关的信息。这就是为什么他们发明了谷歌和智能感知-当我们需要的答案,我们发现它们,就需要使用的基础是
ADNow

2
这取决于他的测试。有些测试我会放弃,但是有些测试还是不错的。我们有一个简单的3编程问题测试。第一个问题是编写一个简单的C#应用​​程序。第二个要求编写5个简单的SQL查询。最重要的是,没有应试者要求提供更多信息的问题是无法回答的。第一个和第二个问题排除了完全没有能力的程序员。这样可以节省我们去采访那些不值得我们花时间的人的时间。第三个问题使我们深入了解程序员如何解决问题。非常有价值的东西。
皮特

8

去年我的处境像您一样。很长时间以来,我一直在接受采访,以至于对此感到恐惧。我搜索了C#面试问题,发现了几个站点(其中许多由其他海报列出),然后我进行了研究。令我惊讶的是,90%的面试都是逐字逐句地进行的。我想面试官也使用Google查找问题:)


6

我完全同意您的看法:

测试是无法预测的,会询问您在日常工作中很少使用的东西。

..但它们是流程的一部分,所以我们对此无能为力。我和您一样,拥有大约10年的经验,其中大约5年在.NET C#中的经验。我发现这些是这两本非常好的书:

C#深度

简而言之C#

应该涵盖了您需要了解的有关C#的所有内容。剩下的就是您自己的技能,您可以学习基于C#的特定技术(例如ASP.NET等)。


3
但是它们是流程的一部分,因此我们对此无能为力。在招聘过程中,提倡在工作场所不要进行愚蠢的编程测试怎么样?招聘过程应该显示出您的能力,而不是可以记住晦涩的琐事。
joshin4colours 2011年

@ joshin4colours -这就是为什么我相信在良好的醇”了采访长谈......他们是为消除虽好
TheBoyan

2
我实际上采访了其中一本书的作者,但拒绝了他……
Sklivvz 2011年

3

这些考试已越来越成为专业招聘公司和一些公司对申请人进行预筛选的一部分。它们旨在为非技术面试官提供一种评估某人的技术能力的方法。但是,它们本质上只是琐事测试,除了淘汰那些真的一无所知的人之外,它对程序员的能力没有任何意义。不幸的是,一些公司/招聘人员对这些结果过于重视。

为他们学习的方法是找到面试问题站点,合法站点,而不是那些试图向您出售答案的站点,并贴上弹出广告或其他此类废话,然后将答案塞满。这样,您将获得不错的成绩,并越过障碍。如果公司对这些结果过于重视,那么它们可能不是最佳的公司。


2

如果这是职业介绍所的考试,那就不难了。好像他们没有语言专家来开发测试一样。他们最可能要做的就是从网站复制/粘贴问题。

只要您知道框架的总体工作方式,以及最常见的任务命名空间/库,以及某些任务必须使用的内容,您就应该很好。


2

访谈测试很大程度上取决于企业文化和测试创建者。如果他们打算问一些棘手的问题并试图使您失望,那么我将转到另一家公司或代理商,该公司对精明,能完成工作的高素质人才更感兴趣。

就是说,当您在日常工作中使用c#时,我会将精力集中在解决问题和逻辑上,而将精力放在书籍学习方面。

欧拉计划(Project Euler)是练习和磨练可能生锈的技能的好地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.