Sobes.tech

Java

Povězte mi o složité chybě nebo náročném vylepšení na posledním projektu

179

Jak optimalizovali pomalé SQL dotazy? Jak řešili problém N+1 v Hibernate?

164

Proč jste zvolili Cassandra? Jaké alternativy jste zvažovali? Jak jste je ověřovali?

161

Jaké nástroje pro monitorování, logování a metriky byly použity? Jaký přístup v mikroservisech?

145

Jak jste pracovali s Kafka? Museli jste ladit partice, konfigurace? Co se stane, pokud jsou spotřebitelé méně než partice?

139

Na co jste mohli ovlivnit v architektonických rozhodnutích na posledním projektu?

126

Byl přístup k monitorování na různých okruzích? Jak probíhal proces vydání?

123

Popis úkolu: Je třeba implementovat REST endpoint pro získání seznamu pojistných smluv, které patří danému klientovi a jsou zaplacené. Vzhledem k velkému množství smluv v systému je nutné předvídat parametr pro omezení výsledku. @RestController public class ClientController { @Value("policy.limit") private int policyLimit; @Autowired private PolicyService policyService; @RequestMapping(path = "client/{clientId}/policies", method = RequestMethod.POST) public Response getClientPolicies(@PathVariable("clientId") String clientId) { List<PolicyDTO> policies = getPolicies().stream() .limit(policyLimit) .filter(p -> p.getClientIds().contains(clientId)) .filter(p -> p.isPaid()) .toList(); return new Response(policies); } @Transactional private List<PolicyDTO> getPolicies() { return policyService.getPolicies(); } @Data @AllArgsConstructor public class Response { private List<PolicyDTO> policies; } @Data public class PolicyDTO { private String id; private String name; private List<String> clientId; private Boolean isPaid; } @RequiredArgsConstructor @Component public class PolicyService { private PolicyDbRepository repository; List<PolicyDTO> getPolicies() { return repository.getPolicies(); } } public interface PolicyDbRepository { List<PolicyDTO> getPolicies(); }

109