高级Ruby开发人员面试问题
在某些方面,即使是最技术型的职位,也要求所有职位优秀候选人具备的共同品质:愿意学习;合格的技能;对工作的热情。
即使是大学成绩,虽然它可以帮助你评估正规教育,但也不能给出一个完整的画面。这并不是在低估扎实的计算机科学背景的重要性。一些需要注意的事情:
了解基本的算法概念
•讨论基本算法,他们将如何找到/思考/排序
•他们能表现出对数据库更广泛的理解吗
•他们有做模特的方法吗?
他们会跟上最新的发展吗?如果是这样,如何?探索他们最喜欢的技术书籍。他们在Twitter上关注谁,他们会关注哪些博客?
他们在Github上活跃吗?他们是否为任何开源软件项目做出了贡献?或者参加黑客马拉松。简而言之,他们对所选领域的知识兴趣有多强?这是如何证明的呢?要求兼职项目(如游戏开发)。有责任心、有好奇心的候选人会脱颖而出。
计算机科学问题
- 使用伪代码,以迭代和递归的方式反转字符串
- 什么是好的单元测试,什么是功能性测试?
- 描述REST API的核心原则。这与RPC有何不同?
- 您认为在项目的生命周期中,什么时候是建立测试基础架构的最佳时机?
- 您希望在回归测试套件中发现什么,为什么?
- 什么是好的单元测试,什么是功能性测试?
角色的问题
- Ruby中的参数是通过引用传递还是通过值传递?
- 您用什么工具用于Linting,调试和分析?
- Ruby MRI使用全局解释器锁。这是否意味着它不使用真正的线程?
- 当我们说λ或块形成关闭时,我们的意思是什么?
- 下面的程序要打印什么?
x = 1类MyClass y = 2 def foo z = 4 y || = 0放置z + y结束define_method:bar do | x |z = 5 y || = 0放置z + y + x结束end my_class = myclass.new my_class.foo my_class.bar(10)my_class.bar
- 块与Proc有何不同?
- 是否有可能让生产者线程从网络读取数据,而消费者线程写入文件,真正并行工作?吉尔呢?
- Ruby 2.1引入了分代垃圾收集。描述它是如何工作的,以及为什么它被认为是一种改进。
- 编写一行Ruby代码,以数组的形式输出任意长度的斐波那契序列。
- 实现类宏:可以用于打印实例方法执行(高级)的时间的基准。
类Foo def bar…end def qux…end benchmark:bar,:qux end foo = foo。新的foo。bar # => bar花费了0.12 ms foo。qux # => qux花了1.15毫秒