Explique o conceito de consistência de dados em sistemas de armazenamento de informação.
Java
Quais são as principais garantias de entrega de mensagens fornecidas pelo Kafka de acordo com o seu modelo teórico?
O que influencia o tempo ao adicionar um elemento ao final de uma lista ligada?
Que dificuldades e limitações potenciais podem surgir ao usar Kafka em sistemas?
Que problemas podem surgir ao modificar uma coleção durante a sua iteração?
Em que casos e sob quais condições podem ocorrer perdas de dados no Kafka?
Quais componentes a arquitetura do Kafka inclui e como eles interagem entre si?
Tem experiência com o framework Spring para desenvolvimento de aplicações?
Qual é a complexidade temporal de inserir um elemento no meio de uma lista ligada, se você já tiver um array preenchido?
Pode explicar o que é o Gson e como ele funciona com os campos durante a serialização e desserialização?
Em qual servidor ou plataforma foi realizado o deployment da aplicação?
É possível reutilizar fluxos de dados (Streams) já fechados em Java?
Qual é o nível de dificuldade ao aumentar o tamanho do ArrayList ao adicionar cada 1000 elementos?
Como foi possível duplicar o throughput?
Qual é o papel e a finalidade das interfaces funcionais na programação?
Como é avaliada a operação de inserção de um elemento na parte central de uma lista duplamente ligada em termos de complexidade?
Implementar a transferência de fundos entre duas contas. Tenha em atenção que esta é uma solução de produção Parâmetros de entrada: @param fromAccountId identificador único do utilizador que transfere fundos @param toAccountId identificador único do utilizador para quem os fundos são transferidos @param amount quantidade da transferência. Número positivo public void transferMoney(Long fromAccountId, Long toAccountId, BigDecimal amount) { if (amount.compareTo(BigDecimal.ZERO) <= 0) { throw new RuntimeException("A quantidade deve ser > 0"); } if (fromAccountId.equals(toAccountId)) { throw new RuntimeException("A conta não pode ser a mesma"); } Long firstId = Math.min(fromAccountId, toAccountId); Long secondId = Math.max(fromAccountId, toAccountId); Account first = accountRepository.findByIdForUpdate(firstId) .orElseThrow(() -> new RuntimeException("Conta não encontrada")); Account second = accountRepository.findByIdForUpdate(secondId) .orElseThrow(() -> new RuntimeException("Conta não encontrada")); Account from = fromAccountId.equals(firstId) ? first : second; Account to = fromAccountId.equals(firstId) ? second : first; if (from.getBalance().compareTo(amount) < 0) { throw new RuntimeException("Saldo insuficiente"); } from.setBalance(from.getBalance().subtract(amount)); to.setBalance(to.getBalance().add(amount)); accountRepository.save(to); accountRepository.save(from); }
Como medir a eficácia do trabalho com dados e a que ela influencia?
O que o motiva a considerar a possibilidade de mudar de projeto atual?
Consegues nomear dois tipos de métodos utilizados na API Stream?