Ruby开发人员面试问题
在某些方面,即使是最具技术性的职位也需要具备所有职位的强大候选人所具备的共同品质:学习的意愿;合格的技能;对工作的热情。
即使是大学表现,虽然它可以帮助你评估正规教育,但也不能给出一个完整的画面。这并不是要低估扎实的计算机科学背景的重要性。需要注意的事项:
了解基本的算法概念
•讨论基本的算法,他们如何发现/思考/排序
•他们能否对数据库有更广泛的理解
•他们有建模的方法吗?
他们了解最新的事态发展吗?如果是这样,如何?寻找他们最喜欢的技术书籍。他们在Twitter上关注哪些人,他们会转向哪些博客?
他们在Github上活跃吗?他们是否为开源软件项目做出了贡献?或者参加黑客马拉松。简而言之,他们对所选领域的知识兴趣有多强烈?这是如何证明的?询问其他项目(如游戏开发)。忠诚、好奇的候选人会脱颖而出。
计算机科学问题
- 使用伪代码,迭代和递归地反转一个String
- 什么构成了一个好的单元测试,什么又是一个功能性的单元测试?
角色的问题
- Ruby中的参数是通过引用还是通过值传递的?
- Ruby是静态类型语言还是动态类型语言?
- 多态、继承和封装是什么意思?
- 您使用什么工具来检测、调试和分析?
- 下面要打印的程序是什么?
x = 1 class MyClass y = 2 def foo z = 4 y ||= 0 puts z + y end define_method:bar do |x| z = 5 y ||= 0 puts z + y + y + x end end my_class = MyClass。新的my_class。foo my_class.bar my_class.bar (10)
- 描述类和模块的三层方法访问控制。关于这个方法,他们暗示了什么?
- 在ruby中load和require的用途是什么?
- 写一个模块Foo,当包含它时,添加一个实例方法:bar和一个类方法qux。
- duck typing是什么?描述一个用例。
- block和Proc有什么不同?
- 解释以下操作符,以及它们应该如何使用和何时使用:==,===,eql?,等于多少?。
- Ruby MRI使用全局解释器锁。这是否意味着它不使用真正的线程?
- 当我们说一个lambda或block形成一个闭包时,我们的意思是什么?