首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向高级开发人员/设计师职位的C#多线程面试问题

面向高级开发人员/设计师职位的C#多线程面试问题
EN

Software Engineering用户
提问于 2011-02-20 16:46:05
回答 5查看 79.6K关注 0票数 7

我想知道在多线程方面,高级开发人员或技术顾问被问到了什么样的面试问题。

如果可能的话,请向我提供一些面试问题,如果可能的话,请将基于情景的问题与一些理论问题放在一起。正如我在与一些人讨论后知道的那样,某个时间的面试官可能会给你一个场景,并要求你去实现它。

@请在面试中向其他人补充你曾经遇到或询问过的具体问题,而不仅仅是提及概念,因为人们会通过这些概念,但仍然很难处理面试questions.so,任何添加特定问题的努力实际上都可以帮助人们在d-day中获得先机。

EN

回答 5

Software Engineering用户

发布于 2011-02-20 17:17:59

我可能要求候选人描述至少2或3种在C#中创建多线程应用程序的不同方法。

  • 线程类的显式使用
  • 线程池
  • 任务并行库
  • 具有lambda函数的Action类
  • BeginInvoke
  • BackgroundWorker

我还会询问,在没有显式创建线程的情况下,多线程应用程序是如何结束的。

  • 事件处理程序可以在另一个线程中运行(想到了SerialPort.DataReceived,就像.Net中的三个定时器中的一个或两个)。

您还可以讨论创建可重入代码的方法。

  • 锁定
  • Monitor.Wait和Monitor.Pulse
  • ManualResetEvent
  • 静态类/方法

更多的信息可能来自我在这里上写的一篇文章。

最后,我可能会要求在这些经验教训,而不是仅仅是从一本书的大脑垃圾场。高级开发人员将拥有丰富的经验,这将提供对他们的发现和解决问题能力的洞察力。

票数 6
EN

Software Engineering用户

发布于 2011-02-20 17:22:02

我最喜欢的问题之一是:

  1. 如何在不使用线程的情况下创建响应性UI。预期答案:将工作分割成小块,并在UI的消息循环中排队。(Eric对如何做http://blogs.msdn.com/b/ericlippert/archive/2010/10/25/continuation-passing-style-revisited-part-three-musings-about-coroutines.aspx有一个很好的解释)

一个有趣的问题目前没有在另一个答案中列出:

  1. 解释第三方物流中的偷盗工作。它是如何工作的,为什么?预期答案:解释拥有队列的核心如何在一边提取项,而不拥有队列的核心从另一方“窃取”以保留CPU缓存行。
票数 2
EN

Software Engineering用户

发布于 2011-02-20 18:58:06

除了所有其他答案之外,我还会向候选人提供几个线程例子,让他指出问题可能出现的地方。

一些示例包括争用条件、联锁或让他将问题从单线程转换为多线程。我特别想在最后一篇文章中回顾一下他的设计,让他解释为什么、如何和有多大程度地提高他的工作表现。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/49936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档