Kotlin
Fale sobre si e a sua experiência de trabalho
Qual foi a carga nos serviços? Quais otimizações foram aplicadas?
// reservar(sit_id, user_id) PostgreSQL Begin Transaction(read_commited) seat = select * from seats where id = seat_id for update if(seat == null || seat.status == "booked") rollback return error("Assento não disponível") insert into bookings (user_id, seat_id, status, created_at) values (user_id, ...) update seats set status = 'booked' where id = seat_id commit return success()
Por que no Map a chave é o parêntese de fechamento e o valor o de abertura? O que mudaria se invertêssemos? Qual é a complexidade de containsValue versus get por chave?
Fala sobre particionamento no PostgreSQL
O que faz o VACUUM no PostgreSQL e por que aparecem linhas mortas?
Fale sobre replicação no PostgreSQL: master-slave, o que acontece em caso de falha da réplica
Foram utilizadas transações Kafka (semântica exatamente uma vez)?
Usaste HQL, consulta nativa, JDBC diretamente? Batch em Hibernate?
Fale mais sobre o serviço de faturação: o que era armazenado, como interagiam com o contratante?
Fala sobre bloqueios otimistas e pessimistas, quando usá-los?
Fale sobre os níveis de isolamento de transações
Como funciona o mecanismo de Verificação de Sujidade no Hibernate?
Por que o otimizador de consultas do Postgres pode usar Seq Scan em produção, mas Index Scan em dev/ft com os mesmos índices?
Fale sobre monitoramento e métricas no projeto (Prometheus, Grafana)
Sabes o que é Service Mesh no Kubernetes?
/* SELECIONAR esquerda.K, esquerda.V1, direita.V2 DE esquerda JUNTE direita EM esquerda.K = direita.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> esquerda, List<Pair<K, V2>> direita) { return null; } private static class Pair<A, B> { private A primeiro; private B segundo; Pair(A primeiro, B segundo) { this.primeiro = primeiro; this.segundo = segundo; } } private static class Triple<A, B, C> { private A primeiro; private B segundo; private C terceiro; Triple(A primeiro, B segundo, C terceiro) { this.primeiro = primeiro; this.segundo = segundo; this.terceiro = terceiro; } }
Já usaste Kotlin? Tens experiência?
/*Dada uma string, é necessário implementar uma função para verificar a correção na indicação de parênteses. Cada parêntese aberto deve corresponder a um parêntese fechado. Os parênteses abertos e fechados devem estar na ordem correta. Tipos de parênteses: "{", "}", "(", ")", "[", "]". Entrada: "([]){}[(()())()]" Resultado: true Entrada: "[(])" Resultado: false Porque os parênteses 2 e 3 estão indicados incorretamente, a fechadura ']' aparece antes da fechadura '(' */ public boolean check(String s){ Deque<Character> stack = new ArrayDeque<>(); Map<Character, Character> map = Map.of( ')', '(', ']', '[', '}', '{' ); // ((( for( char c : s.toCharArray()){ if(map.containsValue(c)){ stack.push(c); } else if(map.containsKey(c)){ if( stack.isEmpty() || stack.pop() != map.get(c)){ return false; } } } return stack.isEmpty(); }