P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch
💎

Preguntas de entrevista Ruby on Rails

Las entrevistas de Ruby van en dos capas: el lenguaje en sí — blocks, módulos, la cadena de búsqueda de métodos — y luego Rails, donde la mayoría de las preguntas en realidad son sobre ActiveRecord y la base de datos que hay debajo. Aquí están las preguntas más frecuentes, cada una con una respuesta modelo.

Junior · sin experiencia / menos de 1 añoMiddle · 2–4 años de experienciaSenior · 5+ años de experiencia

Qué preguntan

Núcleo de Ruby y blocks
OOP, módulos y mixins
ActiveRecord y asociaciones
Rails MVC, routing, controladores
Consultas N+1 y rendimiento
RSpec, FactoryBot, Rubocop

10 preguntas reales con respuestas

Cada pregunta viene con una respuesta modelo con la que puedes comparar la tuya.

1

¿Qué es truthy y falsy en Ruby?

Respuesta

Solo nil y false son falsy. Todo lo demás es truthy — incluyendo 0, un string vacío y un array vacío, que es donde caen los desarrolladores que vienen de otros lenguajes. Por eso if items.empty? e if items significan cosas completamente distintas, y lo segundo casi nunca es lo que querías.

2

¿Cuál es la diferencia entre un symbol y un string?

Respuesta

Un string es un objeto mutable y cada literal crea uno nuevo; un symbol es inmutable y el mismo symbol es siempre el mismo objeto. Eso hace que los symbols sean la elección correcta para identificadores — claves de hash, nombres de métodos, estados — porque no se reasignan en cada uso. Los strings son para datos que muestras o modificas.

3

¿Qué es un block, y qué hace `yield`?

Respuesta

Un block es un trozo de código pasado a un método, escrito con do...end o llaves. yield lo llama desde dentro del método, y block_given? comprueba si se pasó uno. Los blocks son la razón por la que el código Ruby se lee como se lee — each, map, open y los wrappers de transacciones son todos métodos que reciben un block y controlan qué pasa alrededor de él.

4

¿Cuál es la diferencia entre un proc y un lambda?

Respuesta

Dos diferencias que importan. Un lambda verifica su aridad y falla si el número de argumentos es incorrecto; un proc rellena silenciosamente el resto con nil. Y return dentro de un lambda retorna del propio lambda, mientras que dentro de un proc retorna del método que lo contiene — así es como un proc puede terminar un método sin que lo esperaras.

5

¿Cuál es la diferencia entre `include`, `extend` y `prepend`?

Respuesta

include agrega los métodos de un módulo como métodos de instancia, extend los agrega como métodos singleton en ese objeto — así que extend en el cuerpo de una clase da métodos de clase. prepend inserta el módulo *antes* que la clase en la cadena de búsqueda, así que el método del módulo gana y puede llamar a super para llegar al original. Revisar ancestors muestra exactamente qué pasó.

6

¿Qué es el problema N+1 y cómo se soluciona?

Respuesta

Una consulta carga una lista, y luego tocar una asociación dentro del loop dispara una consulta más por fila — 1 + N. La solución es cargar la asociación de antemano con includes. preload siempre usa una consulta separada, eager_load fuerza un único LEFT JOIN, e includes elige entre ambos según si filtras sobre la asociación. La gema bullet los señala en desarrollo.

7

¿Cuándo ejecuta ActiveRecord realmente la consulta?

Respuesta

No al construir la relation. User.where(active: true) devuelve una relation y no toca nada; la consulta se ejecuta cuando necesitas los datos — each, to_a, first, count, o una plantilla que los renderiza. Esa pereza es lo que te permite encadenar scopes, y también explica por qué un where que parece lento suele ser inocente y el costo real está más adelante en la cadena.

8

¿Cuál es la diferencia entre una validación y una restricción de base de datos?

Respuesta

Una validación vive en el modelo y se ejecuta en Ruby; una restricción vive en la base de datos y se mantiene sin importar quién escriba. Las validaciones dan errores amigables por campo, pero las saltan update_column, insert_all, otra aplicación, y pierden en una carrera entre dos requests concurrentes. La unicidad en particular necesita un índice único — la validación sola es una verificación, no una garantía.

9

¿Qué son los callbacks y por qué tienen mala reputación?

Respuesta

Hooks que se disparan alrededor del ciclo de vida de un modelo — before_save, after_create y el resto. Se ganan la mala reputación cuando acumulan efectos secundarios: crear un registro lo guarda, eso envía un email, que encola un job, y un test que solo quería un registro ahora necesita un stub de correo. Cualquier cosa que no sea sobre el propio estado del registro es mejor como una llamada explícita en un service object.

10

¿Qué es Bundler y para qué sirve `Gemfile.lock`?

Respuesta

Bundler resuelve las versiones de gemas que satisfacen tu Gemfile y las instala. Gemfile.lock registra exactamente qué se resolvió, por eso se comitea: bundle install en otra máquina reproduce las mismas versiones en lugar de tomar lo más reciente. bundle update es el acto deliberado de moverlas.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Ruby on Rails →
Gratis · 3 entrevistas al mes

Vale la pena leer

Todos los artículos →

Otras especializaciones

🔍Manual QA🤖QA AutomationJava Backend🐍Python Backend🐘PHP Backend🦫Go Backend🟢Node.js Backend🔷C++🟨JavaScript⚛️React Frontend💚Vue Frontend🅰️Angular FrontendNext.js🍏iOS (Swift)🟩Android (Kotlin)⚙️DevOps / SRE🗄️Data Engineer📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing