Sobes.tech

Java

Pastāstiet par sarežģītu kļūdu vai grūtu uzlabojumu jūsu pēdējā projektā

179

Kā optimizēt lēnas SQL vaicājumus? Kā risinājāt N+1 problēmu Hibernate?

164

Kāpēc izvēlējāties Cassandra? Kādas alternatīvas apsvērojāt? Kā tās pārbaudījāt?

161

Kuras ORM tika izmantots? Kad Hibernate, kad JDBC? Vai bija Liquibase/Flyway?

160

Kuras monitoringa, žurnāla un metriku rīkus jūs izmantojāt? Kāds pieeja mikroservisos?

146

Kā jūs strādājāt ar Kafka? Vai bija nepieciešams pielāgot partīcijas, konfigurācijas? Kas notiks, ja patērētāji būs mazāk nekā partijas?

139

Ko jūs varējāt ietekmēt savā pēdējā projektā arhitektūras risinājumos?

126

Vai bija piekļuve uzraudzībai dažādos kontūros? Kā norisinājās izlaišanas process?

123

Uzdevuma apraksts: Ir nepieciešams īstenot REST galapunktu, lai iegūtu konkrēta klienta piederīgo un apmaksāto apdrošināšanas polisi sarakstu. Tā kā sistēmā ir ļoti liels polisiņu skaits, ir jāparedz parametrs rezultāta ierobežošanai. @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