Τι είναι η ιδανική ομάδα για εσάς; Ποιες είναι οι απαιτήσεις για τους αναλυτές;
Java
Αναφέρετε ένα δύσκολο σφάλμα ή μια δύσκολη βελτίωση στο τελευταίο σας έργο
Πώς βελτιστοποίησαν αργές ερωτήσεις SQL; Πώς αντιμετώπισαν το πρόβλημα N+1 στο Hibernate;
Ποια ORM χρησιμοποιήθηκαν; Πότε Hibernate, πότε JDBC; Υπήρχαν Liquibase/Flyway;
Γιατί επιλέξατε το Cassandra; Ποιες εναλλακτικές εξετάσατε; Πώς τις ελέγξατε;
Πείτε μας για την εμπειρία σας και το τελευταίο έργο σας
Ποια εργαλεία παρακολούθησης, καταγραφής και μετρήσεων χρησιμοποιήθηκαν; Ποια προσέγγιση στα μικροϋπηρεσίες;
Πώς δουλεύατε με το Kafka; Χρειάστηκε να ρυθμίσετε τις κατατμήσεις, τις διαμορφώσεις; Τι συμβαίνει αν οι καταναλωτές είναι λιγότεροι από τις κατατμήσεις;
Ποιο έργο θεωρείτε πιο σημαντικό για εσάς και γιατί;
Σε τι καταφέρατε να επηρεάσετε στις αρχιτεκτονικές αποφάσεις της τελευταίας σας έργου;
Αναφέρετε το πρόβλημα με το hotspot στο Cassandra και πώς λύθηκε
Υπήρχε πρόσβαση στην παρακολούθηση σε διαφορετικούς κύκλους; Πώς έγινε η διαδικασία κυκλοφορίας;
Περιγραφή εργασίας: Απαιτείται η υλοποίηση ενός REST endpoint για την λήψη της λίστας ασφαλιστικών συμβολαίων που ανήκουν σε έναν δοσμένο πελάτη και είναι πληρωμένα. Δεδομένου ότι στο σύστημα υπάρχει πολύ μεγάλος αριθμός συμβολαίων, πρέπει να προβλεφθεί παράμετρος για τον περιορισμό του αποτελέσματος. @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(); }