Sobes.tech

Java

Papaskinkite apie sudėtingą klaidą ar sudėtingą patobulinimą jūsų paskutiniame projekte

179

Kaip optimizavo lėtas SQL užklausas? Kaip sprendėte N+1 problemą Hibernate?

164

Kokius ORM naudojote? Kada Hibernate, kada JDBC? Ar buvo Liquibase/Flyway?

160

Kodėl pasirinkote Cassandra? Kokias alternatyvas svarstėte? Kaip jas patikrinote?

160

Kokius stebėjimo, žurnalo ir metrikos įrankius naudojote? Koks požiūris mikroservisuose?

144

Kaip dirbote su Kafka? Reikėjo koreguoti partijas, konfigūracijas? Kas nutiks, jei vartotojai bus mažiau nei partijos?

138

Į ką galėjote paveikti savo paskutinio projekto architektūrinius sprendimus?

126

Ar buvo prieiga prie stebėjimo skirtinguose kontūruose? Kaip vyko leidimo procesas?

122

Užduoties aprašymas: Reikia įgyvendinti REST galinį tašką, kuris leis gauti konkretaus kliento priklausančių ir apmokėtų draudimo polisų sąrašą. Kadangi sistemoje yra labai daug polisų, būtina numatyti parametrą rezultatui apriboti. @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(); }

108