Kotlin
Jak rozwiązać problem konkurencyjnej aktualizacji jednej encji z dwóch tematów Kafka (jeden temat nadpisuje zmiany drugiego)?
Co robi VACUUM w PostgreSQL i dlaczego pojawiają się martwe wiersze?
Jak działa mechanizm Dirty Checking w Hibernate?
Czy używałeś HQL, zapytań natywnych, JDBC bezpośrednio? Batchowanie w Hibernate?
Opowiedz o monitorowaniu i metrykach w projekcie (Prometheus, Grafana)
Czy użyto transakcji Kafka (semantyka dokładnie raz)?
Opowiedz o replikacji w PostgreSQL: master-slave, co się dzieje w przypadku awarii repliki
Opowiedz więcej o usłudze rozliczeniowej: co było przechowywane, jak współpracowali z wykonawcą?
// rezerwacja(siedzenie_id, user_id) PostgreSQL Begin Transaction(read_commited) seat = select * from seats where id = seat_id for update if(seat == null || seat.status == "booked") rollback return error("Miejsce niedostępne") insert into bookings (user_id, seat_id, status, created_at) values (user_id, ...) update seats set status = 'booked' where id = seat_id commit return success()
/* WYBIERZ lewy.K, lewy.V1, prawy.V2 Z lewy DOŁĄCZ prawy NA lewy.K = prawy.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> lewy, List<Pair<K, V2>> prawy) { return null; } private static class Pair<A, B> { private A pierwszy; private B drugi; Pair(A pierwszy, B drugi) { this.pierwszy = pierwszy; this.drugi = drugi; } } private static class Triple<A, B, C> { private A pierwszy; private B drugi; private C trzeci; Triple(A pierwszy, B drugi, C trzeci) { this.pierwszy = pierwszy; this.drugi = drugi; this.trzeci = trzeci; } }
Czy wiesz, czym jest Service Mesh w Kubernetes?
Opowiedz o partycjonowaniu w PostgreSQL
Opowiedz o poziomach izolacji transakcji
Jaki był obciążenie usług? Jakie optymalizacje zostały zastosowane?
Opowiedz o blokadach optymistycznych i pesymistycznych, kiedy ich stosować?
Opowiedz o sobie i swoim doświadczeniu zawodowym
Jak kontrolować obciążenie na rękojeściach (limitowanie szybkości)?
/*Dany jest ciąg znaków, konieczne jest zaimplementowanie funkcji do sprawdzania poprawności wskazania nawiasów. Każdy nawias otwierający musi mieć odpowiadający mu nawias zamykający. Nawiasy otwierające i zamykające muszą występować w poprawnej kolejności. Typy nawiasów: "{", "}", "(", ")", "[", "]". Input: "([]){}[(()())()]" Wynik: true Input: "[(])" Wynik: false Ponieważ nawiasy 2 i 3 są niepoprawnie wskazane, zamykający ']' pojawia się przed zamykającym '(' */ public boolean check(String s){ Deque<Character> stack = new ArrayDeque<>(); Map<Character, Character> map = Map.of( ')', '(', ']', '[', '}', '{' ); // ((( for( char c : s.toCharArray()){ if(map.containsValue(c)){ stack.push(c); } else if(map.containsKey(c)){ if( stack.isEmpty() || stack.pop() != map.get(c)){ return false; } } } return stack.isEmpty(); }
Czy używałeś Kotlin? Masz doświadczenie?