~/pcn $ iniciando_

programaConNosotros

Iniciar sesiónCrear cuenta
  • programaConNosotrosprogramaConNosotrosComunidad · desde 2020
  • Inicio
  • Feed
Actividades
  • Eventos
  • Conversaciones
  • Charlas
  • Podcast
  • Desarrollo
Recursos
  • Cursos
  • Lectura
  • Videos
  • Especialidades
  • Herramientas
  • Proyectos
  • Entrevistas
Comunidad
  • Historia
  • Miembros
  • Logros
  • Galería
  • Setups
  • Partners
  • Changelog
SoporteFeedback

~/entrevistas/live-coding

enunciados + leetcode

[simulador][guías][live coding]

Enunciados como los de una entrevista real para resolver por tu cuenta, con el tiempo que te darían, y problemas de LeetCode recomendados para cada tecnología y seniority. Nada se corrige acá: resolvelo en tu editor, en voz alta, y marcá lo que ya practicaste.

# 1. tecnología

[ ]Frontend · React.jsweb, hooks, Next.js[x]Frontend · iOSSwift, SwiftUI, UIKit[ ]Frontend · AndroidKotlin, Jetpack Compose[ ]Frontend · React NativeExpo, iOS y Android[ ]Backend · Node.jsExpress, NestJS[ ]Backend · PythonDjango, FastAPI[ ]Backend · JavaSpring Boot[ ]Backend · .NETC#, ASP.NET Core[ ]AI engineeringconstruir agentes de IA[ ]Agentic engineeringdesarrollar con agentes[ ]Quality engineeringtesting manual y automatizado

# 2. seniority

[x]Junior[ ]Semi-senior[ ]Senior

# ejercicios (resolvelos por tu cuenta, con el tiempo que darían en la entrevista)

01Lista de países con búsqueda en SwiftUIQue conozcas los bloques básicos de SwiftUI: estado local, listas, navegación y formateo correcto de datos.30 min

Tenés un array de Country con la forma struct Country { let code: String; let name: String; let capital: String; let population: Int }. Armá una pantalla en SwiftUI que muestre la lista de países ordenada por nombre, con una barra de búsqueda arriba.

Al tocar un país se navega a una pantalla de detalle que muestra nombre, capital y población formateada (por ejemplo 45.808.747). Los datos están hardcodeados; no hace falta red.

# requisitos

  • -Usá NavigationStack, List y .searchable.
  • -La búsqueda filtra por nombre o capital sin distinguir mayúsculas, minúsculas ni tildes.
  • -Country conforma Identifiable para que List no necesite id: \.self.
  • -La población se formatea con formatted() o NumberFormatter, respetando el locale.
  • -Mostrá un estado vacío con ContentUnavailableView cuando no hay resultados.

# si te sobra tiempo, te van a preguntar

  • -¿Dónde guardarías el texto de búsqueda y por qué con @State?
  • -¿Cómo agregarías la opción de marcar países como favoritos y que se vea en la lista?
  • -¿Qué cambia si la lista viene de una API en vez de estar hardcodeada?
02Modelar y decodificar un JSON con CodableQue manejes Codable, opcionales, enums y manejo de errores en Swift, algo que aparece en cualquier app que consume una API.30 min

Una API devuelve este JSON: { "user_id": 42, "full_name": "Ana Pérez", "email": null, "created_at": "2024-05-10T14:30:00Z", "tags": ["admin", "beta"] }. Definí un modelo User en Swift y escribí la función que decodifica un Data con ese contenido.

Después, la API agrega un campo plan que puede valer "free", "pro" o, en el futuro, valores que todavía no conocés. Tu modelo no debería romperse cuando aparezca un valor nuevo.

# requisitos

  • -Las propiedades en Swift usan camelCase (userId, fullName, createdAt).
  • -email es opcional y createdAt es un Date, no un String.
  • -plan es un enum con un caso unknown para valores no contemplados.
  • -Los errores de decodificación se manejan con do/catch y se loguean con información útil.

# si te sobra tiempo, te van a preguntar

  • -¿Cuándo usarías CodingKeys y cuándo keyDecodingStrategy = .convertFromSnakeCase?
  • -¿Qué diferencia hay entre try, try? y try!?
  • -¿Cómo testearías el decoding sin pegarle a la API?
03Formulario de login con validaciónQue sepas manejar formularios, foco, estados de carga y llamadas async en SwiftUI separando la lógica de la vista.30 min

Armá una pantalla de login en SwiftUI con campos de email y contraseña y un botón Ingresar. Mockeá el servicio con func login(email: String, password: String) async throws -> String que espera 1 segundo y devuelve un token, o tira error si la contraseña es "error".

Mientras se valida contra el servicio, el botón muestra un ProgressView y no se puede tocar de nuevo. Si falla, se muestra un mensaje de error debajo del formulario.

# requisitos

  • -El botón está deshabilitado hasta que el email tenga formato válido y la contraseña al menos 8 caracteres.
  • -El campo de contraseña usa SecureField y el de email el teclado y textContentType adecuados.
  • -La llamada async se hace con Task y el estado de carga se actualiza en el main actor.
  • -Al tocar Return en el email el foco pasa a la contraseña, usando @FocusState.
  • -La lógica de validación vive fuera de la vista (por ejemplo en un view model) para poder testearla.

# si te sobra tiempo, te van a preguntar

  • -¿Dónde guardarías el token y por qué no en UserDefaults?
  • -¿Cómo cancelarías el request si el usuario sale de la pantalla?
  • -¿Qué tests unitarios escribirías para la validación?

# leetcode recomendado (Frontend · iOS · Junior)

EasyTwo SumEl clásico para usar un Dictionary y bajar de O(n²) a O(n); casi siempre aparece en la primera ronda.
EasyValid AnagramConteo de frecuencias con diccionarios y manejo de String y Character en Swift.
EasyValid ParenthesesUso de una pila con un array, un patrón que se repite en muchos problemas de parsing.
EasyReverse Linked ListManejo de referencias y opcionales con clases, base para entender estructuras enlazadas.
EasyMaximum Depth of Binary TreePrimer contacto con recursión sobre árboles, que aparece en jerarquías de vistas y menús.
EasyFirst Unique Character in a StringRecorrer strings y contar con diccionarios, frecuente en entrevistas mobile de nivel inicial.
$ progreso --live-codingFrontend · iOS · Junior

ejercicios0/3

leetcode0/6

$ cat guias/live-coding

Cómo encarar un live coding: el método para resolver en voz alta, complejidad, los patrones más frecuentes y cómo practicar.

leer la guía de live coding