Bază de date lentă: cum găsești interogările lente și ce să faci cu ele?
Java
Spune-mi despre experiența ta cu serviciile financiare / tranzacționale.
De ce este nevoie de NoSQL? De ce nu sunt suficiente bazele de date relaționale? Exemple de utilizare, avantaje, structuri de stocare.
Poți oferi un exemplu de situație în care utilizarea ThreadLocal este justificată?
Serviciul pică la fiecare câteva ore cu un OutOfMemoryError. De unde începi analiza problemei?
Cum evaluați experiența dvs. cu Spring, Spring Boot? Ce ați fost nevoit să faceți? Știți cum funcționează în spate?
Cum funcționează adnotarea @Transactional imbricată dacă metoda internă se află într-un alt serviciu?
Cum se configurează dimensiunea pool-ului de fire pentru solicitările HTTP paralele?
Care este diferența dintre indexurile hash și cele B-tree? Care este mai potrivit pentru căutarea după nume de familie?
Ce este o clasă imutabilă? Care sunt dezavantajele sale?
Dacă există cache de date, cum să înțelegi că cauza OOM este exact în ea?
Probleme la deploy: erorile apar în timpul deploy-ului și dispar după. De ce?
În ce formă v-au fost prezentate cerințele legate de sarcini?
Care este diferența dintre un bloc synchronized și atomici? Cum funcționează CAS?
Spune-mi mai multe despre implementarea CQRS în cazul tău.
Cum se confirmă o eroare de memorie insuficientă în producție și ce trebuie făcut? Cum se face un dump de heap în momentul OOM?
Câte încercări sunt necesare pentru a garanta că obții o pereche de aceeași culoare, dacă ai un teanc de șosete de trei culori (roșu, alb, negru) și le scoți câte una?
Ce anume ai ajustat exact în Kafka? Ce parametri specifici ai configurat?
Citiți codul și evidențiați greșelile @Component public class AuthorSearchService { @Autowired private AuthorsRepository authorsRepository; @Autowired private StatisticsRepository statisticsRepository; private AlertRestClient arc = new AlertRestClient(); // În interogare poate fi atât numele complet, cât și o parte a numelui, de exemplu "Vladimir Panov" sau "panov" @Transactional public List<Author> search(String query) { List<Author> authors = authorsRepository.findByNameContainingIgnoreCase(query); Statistics s = statisticsRepository.findById(query).orElse(null); if (s == null) s = new Statistics(query); s.setNumbers(s.getNumbers() + 1); statisticsRepository.save(s); if (s.getNumbers() > 1000 && authors.size() > 1000) { System.out.println("căutare prea populară cu prea multe date, trimitere alertă..."); arc.send(query, s.getNumbers(), authors.size()); } return authors; } } @Entity @Data public class Author { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "author") private List<Book> books; public Author(String name) { this.name = name; } }
Povesti-ne cum era distribuită sarcinile și luarea deciziilor arhitecturale în echipa ta?