Golang
// GetUsersList devuelve una lista de usuarios. (en la base de datos almacenamos aproximadamente 1 millón de usuarios) // Se usa para mostrar la lista de usuarios en el panel de administración. Si isActive = true, solo se devuelven los usuarios activos. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } var users []User // Rellenar información sobre los usuarios. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obtener la lista de correos electrónicos del usuario err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { emails[i] = strings.ToLower(e) } } user.Emails = emails // Obtener información del perfil desde la API de VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("error al obtener la lista de usuarios") } }
¿Cuál es la diferencia entre HTTP y HTTPS?
¿Por qué es posible ejecutar varios entornos aislados en una sola máquina local (Docker/contenerización)?
¿Qué es una transacción en una base de datos?
¿Las lecturas se realizaban con el maestro, con la réplica o cómo se distribuían?
¿Qué sucede si se pasa un slice como argumento a una función y se modifica dentro de ella?
Cuéntame sobre las transacciones en PostgreSQL. ¿Qué son ACID y los niveles de aislamiento?
Cuéntame sobre las cargas y casos interesantes relacionados con la optimización bajo carga.
¿Qué es importante para ti al elegir un nuevo lugar de trabajo?
¿Cómo trabajaste con Kubernetes? ¿Qué hiciste?
Eres escritor, gestionas tu mini blog y publicas artículos allí. Los usuarios (lectores) de tu blog, después de autenticarse, pueden ver/leerlos. Es necesario implementar una funcionalidad para contar las vistas únicas por día para cada artículo. Requisitos funcionales: - Estadísticas del día actual: El autor puede ver cuántos usuarios únicos han visto su artículo hoy (los datos se acumulan en tiempo real). - Estadísticas de días anteriores: El autor puede ver las estadísticas de cualquier día pasado (por ejemplo, ayer). Restricciones técnicas y condiciones: - La aplicación funciona en un solo servidor (un pod) - Almacenamiento en memoria - Tiempo en UTC0
¿Por qué criterios elegirás un nuevo lugar de trabajo si tienes varias ofertas?
¿Por qué se elige Kafka en los proyectos y por qué RabbitMQ? ¿En qué se basan al elegir un corredor de mensajes?
¿Qué tan activo estás en la búsqueda en este momento y por qué estás considerando ofertas?
Cuéntame sobre la gestión de incidentes en tu equipo: ¿cómo está organizado el proceso, hay un reglamento de turnos?
¿Quizás ya han surgido preguntas, [nombre]? (sobre la empresa)
¿Hubo ocasiones en las que tuviste que defender una idea o función ante el producto o los analistas?
La búsqueda binaria y la búsqueda en árboles tienen la misma complejidad logarítmica. ¿Por qué necesitamos varios algoritmos con la misma complejidad algorítmica? ¿Siempre es recomendable usar un árbol en lugar de búsqueda binaria?
¿Cómo se realizó la prueba de carga y qué métricas se observaron?
Proporcione un ejemplo en el que no estuvo de acuerdo con una decisión técnica del equipo. ¿Cómo manejó la situación después de que se tomó la decisión?