Scala开发人员如何接受采访[关闭]


17

Scala程序员如何接受采访?面试官在采访Scala开发人员时会寻找哪些方面?


10
他们必须站在梯子上编码FizzBu​​zz。
工作

2
@Job加分,如果FizzBu​​zz使用State和IO monad!:-)
Daniel C. Sobral

我向Scala开发人员发现了一些问题,并决定自己写一些答案。如果有人感兴趣:pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Answers:


17

首先,我想一想,为什么需要一个Scala开发人员。您真的需要Scala吗?考虑一下Scala附带的功能(IDE,构建工具,库,Java之上的另一层复杂性等等)。回到问题。它分为两个方面:理论理解和实践能力。不要让“理论”的事情欺骗你。在Scala中,实用性在Java中同样重要。

理论上的

  • 看看他们是否知道真正的功能范式。要求他们比较哲学和实践中的两种范式(FP与命令式)。如果他们可以从完全或部分支持FP的语言中提供示例,那么对他们来说是一个加分。

理论与实践相融合

  • 看看他们是否真的可以正确的方式进行函数式编程。向他们询问列表,地图,压缩和递归。然后是闭包,lambda,归约,高阶函数和不变性。

实际的

  • 看看他们是否可以将命令性代码片段重构为一个好的功能替代方法(请参见上文)。尝试执行一些数学运算或类似的循环。

  • 找到他们对功能性与命令性风格的喜好。选择一种更具功能性的样式,但请注意,这并不会在开发人员方面达到极限。

  • 了解他们对Scala库(例如Lift,dispatch等)和工具(例如SBT,fsc,IDEA)了解多少。

  • 查看他们如何充分利用Java(代码和工具)。Scala与Java紧密耦合,特别是在更严重的环境中。知道这是一大优势。

理论上的

  • 让他们将Scala与Java(PHP,C ++,Objective C或其他)进行比较,并要求他们告诉您Scala的问题所在。看看他们是否了解问题以及优势。要求他们提供真实示例,说明Scala的缺点何时可能会引起麻烦(例如,新Joe很难相处,因为与Java相比支持非常有限,所以还不成熟)

实际的

  • 查看他们是否连接到社区。向他们询问马丁·奥德斯基和大卫·波拉克。要求他们命名一些Scala项目并向您进行描述(Facebook,Twitter,FourSquare,DBPedia和DBPedia SpotLight)。看看他们是否知道在这些项目中如何使用Scala。他们阅读文章,观看视频等吗?

  • 向他们询问有关书籍(只有几本)。他们越了解越好。

  • 作为最后的警告,我可以说,精巧的语言具有吸引潜在错误的人的这种奇特潜力。由于所有错误的原因,请小心Scala的类型。这里有几个:

    • Scala是为特权人士而设的(我很聪明,我与其他Joes不同,我拥有一个崭新的闪亮博士,我讨厌必须这样做,因为它是为智障人士,Java是肤浅的,Scala如此优雅等等。 )。这种类型在认真的项目中没有成效,很难相处。
    • 我爱上了Scala的语法,很想在有机会进行编码的任何地方编写DSL。这种人喜欢以破坏性的方式利用Scala的独特之处。他们觉得编写模糊和过分简洁的代码感到难以理解,真是太好了。这种类型的代码特别危险,因为它们的代码不可读。他们的礼物是他们对操作员超载,奇怪的名字和编写单行代码的热爱。
    • 无论如何,我都会坚持使用Scala直到最后一滴。这是幼稚的纯粹主义者类型。当需要混合方法时,他们就无法取舍,项目会遭受损失,就像现实世界中的项目一样。

PS:如果您找到了一个好乔,那么请一定要告诉我,因为我们需要一些;)


@Dave Briccetti,我从Dave那里得到了“连接社区”的想法,并决定进行详细阐述,最终得到了一个很长的答案。感谢Dave提及社区;)
Ashkan Kh。Nazary

很棒的帖子。你是谁?
Dave Briccetti 2011年

@Dave,我目前是@AYLIEN的首席开发人员,该人员正在以Scala方式进行NLP。
Ashkan Kh。Nazary

总体而言,答案很不错,但尤其是对于“错误原因”的简短列表,其答案为+1。在C ++狂热分子中可以找到相同的病理。
2014年

1
以前,即使没有使用Scala编写代码,也可以通过一半以上的采访。它是错误还是功能?我很惊讶您的结论对编程语言并不陌生,例如,毕竟,一个好的Scala开发人员是一个好的开发人员,只是使用了不同的语法糖。
Arthur Havlicek 2014年

8

在真实世界的采访中,仅仅知道Scala是成功的一半。无论语言如何,聘请优秀的程序员总是很困难!

Scala程序员倾向于使用这种语言,因为他们已经在Java游戏中处于领先地位,并希望“将其带入一个新的高度”。

如果您有大量的Scala开发人员可以面试,那么您就算幸运了。如果不是,则更相关的问题可能是“我应该在要培训使用Scala的程序员中寻找哪些方面?”和“目前有哪些公司可以提供培训服务?”


1
我想说并不是所有Scala开发人员都在Java(或其他方面)上处于领先地位,其中许多人只是喜欢Scala给他们的“我与众不同”或“我很聪明”。许多人对Scala到底是什么一无所知。您应该对它们小心;-)
Ashkan Kh。Nazary 2011年

@ ashy_32bit-如今,这种情况越来越多了,但是当我在2011
Kevin Wright

7

我喜欢看到解决以下小问题的方法:对200个掷两个六面骰子的结果进行直方图绘制。

请参阅此处的评论,以获得一些有趣的答案:http : //briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

像丹尼尔·索布拉(Daniel Sobral)这样的解决方案的人,或者凯文·赖特(Kevin Wright)的解决方案:http//ideone.com/8LFs3,都值得一看。

如果答案看起来像Java代码,那么申请人可能还不够。

我还希望看到此人与Scala社区建立了联系:了解书籍,作者,开源开发人员,用户组,有趣的人。


尽管以2分的优势击败了我们的行业平均水平;-)
Duncan McGregor

4

我从未做过任何Scala招聘活动,但是我希望了解隐式工作方式,类型类模式以及函数式编程基础知识。

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.