Backend - Junior

0/12 preguntas respondidas 0%
Información del candidato
Formatos aceptados: PDF, DOC, DOCX. Máximo 5MB

Preguntas de conocimiento

Pregunta 1 de 12: Este código PHP tiene una vulnerabilidad crítica: `$id = $_GET["id"]; $result = mysqli_query($conn, "SELECT * FROM users WHERE id = $id");`. ¿Cuál es el problema?
Pregunta 2 de 12: ¿Cuál es la diferencia entre `include`, `require`, `include_once` y `require_once` en PHP?
Pregunta 3 de 12: Este código Python tiene un bug sutil: `def add_item(item, items=[]): items.append(item); return items`. Al llamar `add_item("a")` y luego `add_item("b")`, ¿qué retorna la segunda llamada?
Pregunta 4 de 12: ¿Cuál es la diferencia entre lista, tupla y diccionario en Python?
Pregunta 5 de 12: Este endpoint en Node.js/Express no responde nunca: `app.get("/users", async (req, res, next) => { const users = getUsers(); res.json(users); });` donde `getUsers()` retorna una Promise. ¿Por qué?
Pregunta 6 de 12: ¿Cómo funciona el event loop de Node.js si es single-threaded?
Pregunta 7 de 12: Esta query SQL devuelve menos resultados de los esperados: `SELECT users.name, orders.total FROM users LEFT JOIN orders ON users.id = orders.user_id WHERE orders.total > 100`. ¿Por qué?
Pregunta 8 de 12: ¿Cuál es la diferencia entre `WHERE` y `HAVING` en SQL?
Pregunta 9 de 12: ¿Cuándo elegirías MongoDB sobre PostgreSQL y viceversa?
Pregunta 10 de 12: ¿Para qué se usa Redis y qué estructuras de datos ofrece además de key-value simple?
Pregunta 11 de 12: ¿Qué códigos HTTP corresponden a: recurso creado, validación fallida, no autorizado, y rate limit excedido?
Pregunta 12 de 12: ¿Cuál es la diferencia entre goroutines en Go y threads del sistema operativo?

Desafío de código

Desarrolla una API REST con autenticación JWT que gestione un CRUD completo de "proyectos". La API debe incluir validación de datos, manejo consistente de errores, y paginación en los endpoints de listado.

Requisitos

  1. Autenticación con JWT (registro, login, protección de rutas)
  2. CRUD completo de proyectos (crear, leer, actualizar, eliminar)
  3. Validación de datos de entrada con mensajes de error claros
  4. Paginación en el endpoint de listado (limit/offset o cursor)
  5. Manejo consistente de errores con códigos HTTP apropiados

Ejemplos

Entrada: POST /api/projects { "name": "Mi Proyecto", "description": "Descripción" } con header Authorization: Bearer <token>
Salida: 201 Created { "id": "uuid", "name": "Mi Proyecto", "description": "Descripción", "createdAt": "2024-01-15T10:00:00Z" }
Entrada: GET /api/projects?page=1&limit=10 sin token
Salida: 401 Unauthorized { "error": "Token no proporcionado o inválido" }

Tecnologías aceptadas

  • Node.js + Express/Fastify
  • Python + FastAPI/Flask
  • PHP + Laravel/Symfony
  • Go + Gin/Echo
  • TypeScript + NestJS

Envío de solución

Plataformas soportadas: GitHub, GitLab, Bitbucket Introduce una URL válida de repositorio (https://github.com, gitlab.com o bitbucket.org seguido de usuario/repositorio)