Frontend
/* Escriba el tipo MyRequired — hace que todos los campos opcionales sean obligatorios */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }
¿Qué es mejor usar para un interruptor de dos estados (encendido/apagado): toggle o checkbox?
¿Utilizaron actualizaciones optimistas? ¿Proporcionaron alguna indicación al usuario durante la actualización en segundo plano de los datos?
¿Cuál fue la razón de su salida de la empresa?
¿Qué es el modelo OSI? ¿Qué son L2, L3, L7?
¿Por qué dejaste la primera empresa?
Si una Promesa no se resuelve y se rechaza, ¿dónde podemos capturar el error? ¿Qué más hay además de then y catch? ¿Cuándo se ejecuta finally?
¿Puedes contarme un poco sobre la funcionalidad del portal administrativo para los agentes de servicio a pasajeros en los aeropuertos?
¿En qué momento se llama a useLayoutEffect y en qué se diferencia de useEffect?
¿Qué arquitectura, gestor de estado y biblioteca de componentes eligieron en ese proyecto y por qué?
¿Cuáles son las principales diferencias entre Vue 2 y Vue 3?
¿En qué se diferencia la autorización de la autenticación?
Cuéntame sobre Promise: qué es, estados y métodos estáticos (especialmente la diferencia entre Promise.all y Promise.race).
/** * La función 'asyncAuth(callback)' recibe un callback, en el que puede * pasarse un error (como primer argumento) y datos * del backend (como segundo argumento). * asyncAuth((error, data) => {}); * * Debes implementar la función 'auth()', * que llama a 'asyncAuth()', pero devuelve una Promesa. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * La función 'tryAuth()' usa 'auth()' y, en caso de error, * realiza N intentos adicionales. * Si todos los intentos fallan, devuelve el último error. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { // Se acabaron los intentos — lanzamos el último error reject(error); } else { // Aún quedan intentos — llamamos recursivamente con n - 1 attempt(attemptsLeft - 1); } }); } attempt(n); }); }
¿Con qué te gustaría trabajar en tu nuevo lugar, qué te interesa en el futuro?
Cuéntame sobre tu experiencia del currículum: tareas, tecnologías, éxitos y logros en más de tres años y medio trabajando en Sovcombank.
Cuéntame sobre los procesos en el último equipo: sprints, kanban, planificación — ¿cómo fue en la práctica?
Cuéntame más sobre los paneles: de dónde se obtuvieron las métricas, qué métricas recopilaste.
Mencionaste un UI-kit. ¿Cuál fue el componente más difícil o interesante de implementar, y cuál representó el mayor desafío?
¿Cómo evalúa la clasificación en la aplicación — funciona correctamente?