ProAdvancedInterview prep

Ruby Interview Questions

The Ruby questions interviewers actually ask, and the answers that need a reason attached. Proc and lambda return semantics, the ancestor chain, mixins, duck typing, shared references, symbols, method_missing, memoisation and Enumerable built by hand.

Questions90
Topics10
Answering time68 minutes
At five a day18 days
LevelAdvanced

Who it is for

Preparing, and short of time.

For someone confident in the language who wants the traps, the edge cases and the interview questions.

You will get the most out of it if you have written Ruby recently enough to read it without effort, and have been surprised by it at least once. If you are picking the language up for the first time, start with Ruby Essentials and come back to this one.

It is also built for interview preparation: the questions are the ones that get asked because they separate people who have read the documentation from people who have hit the behaviour in production.

How long it takes

90 graded questions at roughly 45 seconds each is about 68 minutes of answering in total.

At the default five questions a day, and because the session mixes in your other courses, expect around 18 days — call it 3 weeks — to see everything once, plus a few weeks of thinning reviews after that before it is all mastered.

A question is mastered on the third correct answer, once the gap between reviews has grown past a week — so a course cannot be finished in a weekend however long you sit with it.

Question mix

  • 60 multiple choice
  • 10 concept cards
  • 10 predict the output
  • 10 put it in order
  • 10 matching questions

Syllabus

What you will be asked about

  1. 01

    Blocks, Procs and Lambdas

    Explain what return does inside a lambda, a proc and a block, and what each does with the wrong number of arguments.

  2. 02

    The Object Model

    Trace a method call through the ancestor chain and say which definition wins.

  3. 03

    Mixins and Inheritance

    Decide between a module and a superclass, and predict what super does in each.

  4. 04

    Duck Typing and Conversion

    Use the protocol a method actually needs rather than the class you expect.

  5. 05

    Shared References

    Say when two names point at one object, and what that means when you mutate it.

  6. 06

    Symbols and Strings

    Say what a Symbol is, and when using one instead of a String changes behaviour rather than style.

  7. 07

    method_missing and define_method

    Add methods at run time and keep the object honest about what it responds to.

  8. 08

    Memoisation

    Cache a computed value without breaking on the falsy results.

  9. 09

    Enumerable, Built By Hand

    Get map, sort and select on your own class by writing one method.

  10. 10

    What Does This Print, And Why

    Read a short snippet closely enough to predict the output and name the rule behind it.

8 more topics, and all 90 questions

Ruby Interview Questions is a Pro course. One subscription opens it and every other course in the catalogue, including the ones still being written.

See pricing Find a free course

A question from this course

Blocks, Procs and Lambdas

What does this print?

def run
  l = lambda { return 10 }
  l.call
  20
end
puts run
  • A20
  • B10
  • Cnil
  • DLocalJumpError
Show the answer

A 20

A lambda's return returns from the lambda only. l.call therefore evaluates to 10, that value is thrown away, and the method runs on to its last expression. If you expected 10 you were applying the proc rule, which is the whole trap.

The rest of the track

Ruby at every depth

FreeFoundation

Ruby Essentials

The behaviour underneath the friendly syntax. Only nil and false are falsy, symbols are not strings, string literals are mutable, and a method returns its last expression whether or not you meant it to.

90 questions · 68 minutes

ProCore

Ruby Core

Where Ruby trips people who use it daily. Blocks against procs against lambdas, the ancestor chain and method lookup, the three kinds of equality, and what happens when two names point at the same object.

90 questions · 68 minutes

ProCore

Ruby Data & Collections

Array, Hash, Set and Enumerable in earnest. Bang methods that return nil, Hash defaults that share one object between every key, fetch against [], grouping and tally, and lazy enumerators that are not always cheaper.

90 questions · 68 minutes

ProCoreInterview prep

Ruby Errors & Edge Cases

Exceptions and their edges. Rescue ordering, StandardError against Exception, what an ensure does to a return value, retry, and the difference between catch/throw and raising at all.

90 questions · 68 minutes

ProCore

Ruby Standard Library

The library people reimplement by hand: Struct and Data, Set, the Comparable and Enumerable mixins, Forwardable, JSON, Digest and BigDecimal. Ten places where a built-in already does the job, and one behaviour in each that is not what you assumed.

90 questions · 68 minutes

ProAdvanced

Ruby Idioms & Pitfalls

The Ruby people write out of habit that is wrong or merely un-Ruby: for loops that leak their variable, and versus &&, unless with an else, ||= on a false value, map followed by compact, and rescuing Exception. Ten habits, and the behaviour that punishes each one.

90 questions · 68 minutes

ProAdvancedInterview prep

Ruby Advanced

The metaprogramming that still catches experienced Rubyists: singleton classes, method_missing, refinements, prepend, and the two searches behind constant lookup. Every snippet is one you could be handed in a code review.

90 questions · 68 minutes

ProAdvancedInterview prep

Ruby Performance

What actually costs in MRI: object allocation, frozen and deduplicated strings, symbol keys, array and string growth, lazy enumerators, and the generational collector. Every claim is one you can measure with GC.stat rather than guess at.

90 questions · 68 minutes

ProCore

Ruby Testing

What a test actually asserts, and where that claim is weaker than it looks. Argument order and failure messages, the three kinds of equality, exceptions, isolation between examples, and the difference between a failure and an error.

90 questions · 68 minutes

Start Ruby Interview Questions
in tomorrow’s session.

Enrol and this course joins your daily five, mixed in with everything else you are studying — 90 questions spread over about 18 days rather than dropped on you at once.

Browse the catalogue