Είναι ο αντιδραστικός κώδικας με συγχρονικές συναλλαγές καλά συμβατός;
Java
Σε ποιες περιπτώσεις πρέπει να χρησιμοποιείτε εγγενείς ερωτήματα SQL και σε ποιες Hibernate;
select name from employee group by name having COUNT(DISTINCT lang) >= 2;
Πώς να λύσετε το πρόβλημα της ασυνέπειας δεδομένων: η εξωτερική κλήση ήταν επιτυχής, αλλά η αποθήκευση στη βάση δεδομένων απέτυχε;
/** * Διεπαφή για αλληλεπίδραση με το υλικό του αυτόματου ταμείου. */ interface Hardware { /** * Επιστρέφει έναν πίνακα με τον αριθμό των χαρτονομισμάτων ανά ονομασία 50, 100, 500, 1000, 5000. * Η μέθοδος λειτουργεί αργά και παράγει θόρυβο. * * @return πίνακας όπου κάθε στοιχείο αντιστοιχεί στον αριθμό των χαρτονομισμάτων μιας συγκεκριμένης ονομασίας. * Για παράδειγμα, [10, 20, 30, 40, 50] σημαίνει: * - 10 χαρτονομίσματα των 50 ρουβλίων * - 20 χαρτονομίσματα των 100 ρουβλίων * - 30 χαρτονομίσματα των 500 ρουβλίων * - 40 χαρτονομίσματα των 1000 ρουβλίων * - 50 χαρτονομίσματα των 5000 ρουβλίων */ int[] getBillsCounts(); /** * Φορτώνει στο κουτί εξόδου τα αναφερόμενα χαρτονομίσματα. * * @param billsCounts πίνακας με τον αριθμό των χαρτονομισμάτων ανά ονομασία [50, 100, 500, 1000, 5000]. * Για παράδειγμα, [0, 1, 0, 2, 0] σημαίνει: * - 0 χαρτονομίσματα των 50 * - 1 χαρτονόμισμα των 100 * - 0 χαρτονομίσματα των 500 * - 2 χαρτονομίσματα των 1000 * - 0 χαρτονομίσματα των 5000 */ void giveBills(int[] billsCounts); } /** * Κλάση για την υλοποίηση της λογικής του αυτόματου ταμείου. * Εδώ πρέπει να γραφεί ο κώδικας */ class MyATM { /** * Υλικό του αυτόματου ταμείου. */ Hardware hardware; public boolean withdraw(int amount) { int[] counts = hardware.getBillsCounts(); int[] nom = {50, 100, 500, 1000, 5000}; int[] toGive = new int[5]; for (int i = 4; i >= 0; i--) { int needed = amount / nom[i]; int use = Math.min(needed, counts[i]); toGive[i] = use; amount -= use * nom[i]; } if (amount != 0) { return false; } hardware.giveBills(toGive); return true; } }
Πες μου για το τελευταίο σου έργο: με τι ασχολήθηκες, ποια ήταν τα καθήκοντα, ποια τεχνολογία χρησιμοποίησες;
Πώς αξιολογείτε την πρωτοβουλία της VK να δημιουργήσει τη δική της βάση δεδομένων και πώς θα αξιολογούσατε την ποιότητα και την αποτελεσματικότητά της;
Ποια είναι τα αποτελέσματα της δημιουργίας ενός ObjectMapper ως πεδίο κλάσης (όχι μέσω Spring);
Ποιες ήταν οι ενδιαφέρουσες εργασίες στο έργο;
/** * Ο μεθοδος υπολογίζει πόσους βαθμούς κέρδισε ο υποψήφιος, * αποθηκεύει το αποτέλεσμα στη βάση δεδομένων και καλεί ένα callback σε μια εξωτερική υπηρεσία */ public void process(Candidate c) { transactionTemplate.executeWithoutResult(status -> { Score s = interviewScoreMLService.compute(c); String body = objectMapper.writeValueAsString(Map.of(c.getName(), s)); Mono<ResponseEntity<Void>> request = WebClient.create() .post() .body(BodyInserters.fromValue(body)) .retrieve() .toBodilessEntity(); scoreRepository.saveScore(s); }); }
Ποια είναι τα μειονεκτήματα της υλοποιημένης λύσης για το ATM;