Golang
Quantos anos de experiência comercial tem em Go?
Como trabalhavam com bugs em produção? Serviços no Kubernetes — se algo não funcionasse, como resolviam?
Na linguagem Go, existem goroutines — threads leves. Pode explicar como entende quando deve usar uma goroutine e quando não deve?
Como é que a capacidade da fatia muda ao expandir-se?
Quantas combinações diferentes existem ao lançar dois dados de jogo indistinguíveis?
Há 10 GB de espaço livre no disco, mas não é possível copiar um arquivo de 4 GB. O que fazer? (problema com inode)
Onde na prática são úteis as interfaces? Dê um exemplo real.
// Implementar autocomplete para filmes: // mostrar os 3 principais resultados em ordem alfabética para as primeiras 3+ letras digitadas. // ["macarthur", "interstellar", "intrusion", "macao", "into the abyss", "internship"] // me -> [] // mac -> ["macao", "macarthur", "machinist"] // int -> ["internship", "interstellar", "into the abyss"] // interstellar -> ["interstellar"] // intr -> ["intrusion"] // intrusion -> ["intrusion"] // into -> ["into the abyss"] // stellaris -> [] package main func main() {}
Fala sobre o sistema de eventos na Avito — trabalhaste numa existente ou reescreveste do zero?
O que acontecerá com o tamanho da tabela após inserir mil linhas e depois excluir tudo?
Como descrever as regras para colocar pods em nós específicos?
Que funções desempenhaste como líder da subequipa?
O que são genéricos em Go? Já os usou?
Configuraram o rastreamento?
Fala sobre os princípios SOLID
Sugere como pode estruturar isto em estilo REST — como renomear todos esses métodos?
// GetUsersList devolve uma lista de utilizadores. (na base de dados armazenamos cerca de 1 milhão de utilizadores) // Usado para exibir a lista de utilizadores no painel de administração. Se isActive = true, apenas os utilizadores ativos são devolvidos. 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("erro ao obter a lista de utilizadores") } var users []User // Preencher informações sobre os utilizadores. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obter a lista de e-mails do utilizador err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("erro ao obter a lista de utilizadores") } 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 // Obter informações do perfil a partir da API do VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("erro ao obter a lista de utilizadores") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("erro ao obter a lista de utilizadores") } }
Já consultou a descrição da vaga?
Qual é a diferença entre HTTP e HTTPS?
Do que te orgulhas como desenvolvedor? Qual projeto ou tarefa consideras mais significativa?