C++ 应用科学计算工作面试测试

C++ 应用科学计算工作面试测试,c++,selection,scientific-computing,C++,Selection,Scientific Computing,你知道一个好的和客观的问题/测试,以审查申请人的科学计算工作 (事实上,这项测试是在候选人通过面试后进行的。) 第一)他们需要聪明。(编辑,谢谢特伦特的话) 第二)他们必须主要处理编程(C++和Python,使用科学库)、数字和数学,但也要处理工程和物理主题。此外,不需要类似C或Fortran的样式。。。使用O.O.概念会很好 申请人可以使用编译器、工具、图书馆和互联网。测试持续时间不得超过4小时。找到聪明的人,他们将能够适应您的特定要求。这比试图找到一个符合你所有“复选框”的人要好得多 “让我

你知道一个好的和客观的问题/测试,以审查申请人的科学计算工作

(事实上,这项测试是在候选人通过面试后进行的。)

第一)他们需要聪明。(编辑,谢谢特伦特的话)

第二)他们必须主要处理编程(C++和Python,使用科学库)、数字和数学,但也要处理工程和物理主题。此外,不需要类似C或Fortran的样式。。。使用O.O.概念会很好


申请人可以使用编译器、工具、图书馆和互联网。测试持续时间不得超过4小时。

找到聪明的人,他们将能够适应您的特定要求。这比试图找到一个符合你所有“复选框”的人要好得多

“让我相信你是对的 “这项工作的负责人”

通过这个问题,您可以测试优秀程序员所需的所有技能:

  • 智力
  • 创意
  • 沟通
  • 自我激励
。。。唯一未经测试的是团队合作能力,但这是一件很难测试的事情


对于知识,你可以总是要求人以“最可重用的方式知道”,而不是在Python和C++中访问因特网,来实现循环环缓冲器。真正的“可用”代码比大量的复选框问题更能说明人们和他们的编码文化。

但你仍然应该测试他们是否喜欢计算。在面试的编程测试中有很多帖子。不要担心你的特定领域,只要看看他们是否能编码就行了


它总是让人大开眼界;从不无聊。最好是做一个小测试,并与他们讨论,而不是大测试。询问他们为什么做出各种选择等。然后你可以看看他们是否能清楚地解释自己

我认为你最好尝试与该人讨论一个问题,看看他们在面对该问题时如何推理。他们想到了什么算法,他们熟悉解决问题的什么方法?他们看到了哪些可能的陷阱


通过允许对方与你讨论,你可以适应他们的特殊技能,也可以减少拒绝对考试感到紧张的候选人的风险。你也可以对这个人是否适合你的团队有一个良好的感觉——你不想要一个真正擅长解决面试类问题,但又不愿意讨论其他解决问题的方法或诸如此类的人。

我认为你应该问问他的经验。
关于问题:不要问语言功能问题(比如a=b??c??d),程序员应该了解算法、解决问题以及团队中良好的沟通技巧(这真的很重要)

我可以想到一些您可能想要涵盖的要点:

  • 了解浮点计算以及浮点如何在内部表示(例如,请参阅)
  • 熟悉近似算法(如根的牛顿近似、Reimann和)
  • 通用图形和可视化软件
  • 高效地处理大量数据
  • 置信区间与不确定性
  • 统计与概率

我认为这样的事情不需要特别的测试。找一些已经在那个领域工作的聪明人,和应聘者聊聊天。可能还包括Kornel Kisielewicz建议的内容。询问他或她以前的项目、使用的技术、他/她喜欢什么、不喜欢什么等。如果面试官很聪明,他们将能够判断他是否适合这份工作


我曾经面试过一个软件开发人员的职位。聊了一会儿,他们说:“在你的简历上,你说你很熟悉C++和java。告诉我们你在这两个之间的区别,不局限于语言本身。”从那里开始,它流畅地流动,当你的问题适合时,你可以很容易地抛出问题。就像我说C++通常被翻译成机器代码,而java是字节代码,他们会问什么字节代码意味着什么,什么方法和优点是什么,等等。< /P> < P>…很容易的问题是要求某人使用他们想要使用的任何库来解决简单的ODE系统。据我所知,没有一个库足够简单,可以在测试中学习。例如,求解该系统的
x=1:10
dx/dt=-k(x^2/x)

更难的是要求某人解决僵硬的ODE系统。在这里,算法的选择变得很重要,“猜测”可能不起作用。例如,大多数Michaelis-Menten方程都是刚性的

dS/dt = - vmax * S/(Ks + S)
式中,dS是基质耗尽率,vmax和Ks是常数(您可以给出候选值)。正如我第一手发现的,在这里选择错误的解算器会导致灾难性的结果

这两个问题都不是一个好问题,因为几乎任何人都可以在4小时内通过反复试验来解决这两个问题。但作为更大测试的一部分,它们可能是有用的

编辑:这证明了什么?嗯,ODE在科学计算中无处不在。如果你在某个时候没有粗略地处理过这些问题,那你的知识就有一个很大的漏洞。我只是试着回答被问到的问题。“向申请从事科学计算工作的申请人提出哪些具体问题?”。要解决这个问题,申请人必须知道

1) 基础微积分

2) 某种科学计算库(MATLAB、SciPy、GSL)

3) 如果问题问得恰当(例如,如果要求他们计算加速度),领域知识(本例中为物理学)也会被测试
radiatorPower(flow, temperature) -> power
Water specific heat: c = 4190 J/(kg*K)