Para a execução correta do código: o ponto de entrada -- a função main no pacote main package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("Erro: esperado %q, obtido %q\n", exp, act) ok = false } } if ok { fmt.Println("Todos os testes passaram com sucesso") } }
Golang
Qual é a diferença entre processos, threads e goroutines em Go?
Condição Existem 3 entidades: utilizador, chat, mensagem • O utilizador tem um nome e uma data de registo • O chat tem um nome e uma data de criação • A mensagem tem texto, autor e data de criação • Um utilizador pode estar em vários chats ao mesmo tempo • A mensagem pertence obrigatoriamente a um chat, não pode pertencer a mais de um chat ao mesmo tempo • É necessário descrever o domínio em forma de tabelas -- distribuído -- message_count nos chats limite de 100 --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );
Fala de forma geral sobre o projeto — o que foi para o utilizador final?
Como matar um processo no Linux? O que fazer se kill pid não ajudar?
Escreva uma consulta SQL para listar autores com mais de 10 livros (tabelas: autores, livros, relação muitos-para-muitos)
O que é uma condição de corrida em Go? Dê um exemplo.
O que são EXPLAIN e EXPLAIN ANALYZE no PostgreSQL, qual é a diferença?
Existem 3 entidades: utilizador, chat, mensagem • O utilizador tem um nome e uma data de registo • O chat tem um nome e uma data de criação • A mensagem tem texto, autor e data de criação • Um utilizador pode estar em vários chats ao mesmo tempo • Uma mensagem pertence obrigatoriamente a um chat, e não pode pertencer a mais de um chat ao mesmo tempo • É necessário descrever o domínio na forma de tabelas
Fala sobre um problema técnico interessante/difícil que resolveste
Revisão de código: cache em Go com mutex. Encontre problemas e proponha melhorias. Condição: carga de leitura/escrita 80/20.
Com quais bases de dados trabalhou mais de perto?
Com que pilha trabalhou com mais frequência?
Quais métodos HTTP existem? Quais deles são idempotentes?
pacote principal importar ( "crypto/md5" "fmt" ) var alfabeto = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecuperarSenha(h []byte) string { return "" } func hashSenha(entrada string) []byte { h := md5.Sum([]byte(entrada)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashSenha(exp) act := RecuperarSenha(h) if act != exp { fmt.Printf("Erro: esperava %q, obteve %q\n", exp, act) ok = false } } if ok { fmt.Println("Todos os testes passaram com sucesso") } }
Descreva a estrutura de uma requisição e resposta HTTP. Como são classificados os códigos de resposta?
package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecuperarPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecuperarPassword(h) if act != exp { fmt.Printf("Erro: esperava %q, obtive %q\n", exp, act) ok = false } } if ok { fmt.Println("Todos os testes passaram com sucesso") } } Para a execução correta do código: ponto de entrada -- função main no pacote main Tarefa: Implementar a função RecuperarPassword, que restaura a senha original a partir do hash MD5, que consiste em caracteres do alfabeto dado.
Por que consideras novas propostas? Procura ativa ou passiva?
Como implementar uma desligamento gracioso de um serviço Go no Kubernetes ao fazer o deploy de uma nova versão?
O que queres agora — quais são as tuas expectativas para o novo trabalho?