当我聘请开发人员进行一般的中高级Web应用程序开发职位时,我通常希望他们了解核心并发编程概念,例如活跃性与安全性,竞争条件,线程同步和死锁.我不确定是否考虑主题如fork/join,等待/通知,锁定顺序,内存模型基础(只是基础知识)等等,以成为每个经验丰富的开发人员应该知道的内容,或者这些是否是主题对于半专家来说更是如此(即,有意识地决定比平均开发人员更多地了解并发编程的开发人员).
我很想知道你的想法.
我倾向于认为,此时并发编程在任何严重的深度仍然是一项专业技能.许多人会声称通过学习了解它,但是当他们来应用它时,许多人也会把它弄得一团糟.
除了列出的考虑因素之外,我还将研究资源含义以及使用进程,线程和光纤的各种开销.在某些情况下,例如移动设备,过多的多线程可能会产生严重的性能影响.这可能导致多线程代码的可移植性问题.
我想如果我在这种情况下面试候选人,我会使用一个真实世界的例子,而不是点击更多的一般主题,这些主题可以从教科书中逐字逐句引用.我说这是我自己做了一些多线程的工作,并记住我在前几次搞砸了多少.很多人可以谈谈......;)