Kotlin
Rozprávaj o partíciách v PostgreSQL
Vysvetli replikáciu v PostgreSQL: master-slave, čo sa stane pri zlyhaní repliky
Povedaj mi viac o službe fakturácie: čo sa ukladal, ako komunikovali s dodávateľom?
Boli použité transakcie Kafka (semantika presne raz)?
Použil si HQL, Native Query, JDBC priamo? Batching v Hibernate?
Ako vyriešiť problém konkurentného aktualizovania jednej entity z dvoch Kafka-topikov (jeden topik prepíše zmeny iného)?
// rezervácia(sedadlo_id, používateľ_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("Sedadlo nie je dostupné") 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()
Povedz mi o úrovniach izolácie transakcií
Aká bola záťaž na služby? Aké optimalizácie boli použité?
Prečo optimalizátor dopytov Postgres môže použiť Seq Scan v produkcii, ale Index Scan v dev/ft s rovnakými indexmi?
Povedajte mi o sebi in svoji delovni izkušnji
Ako funguje mechanizmus Dirty Checking v Hibernate?
Čo robí VACUUM v PostgreSQL a prečo sa objavujú mŕtve riadky?
Porozprávaj o optimistickom a pesimistickom blokovaní, kedy ich použiť?
Porozprávaj o monitorovaní a metrikách v projekte (Prometheus, Grafana)
/* VÝBER vľavo.K, vľavo.V1, vpravo.V2 Z vľavo JOIN vpravo ON vľavo.K = vpravo.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> vľavo, List<Pair<K, V2>> vpravo) { return null; } private static class Pair<A, B> { private A prvé; private B druhé; Pair(A prvé, B druhé) { this.prvé = prvé; this.druhé = druhé; } } private static class Triple<A, B, C> { private A prvé; private B druhé; private C tretie; Triple(A prvé, B druhé, C tretie) { this.prvé = prvé; this.druhé = druhé; this.tretie = tretie; } }
Vieš, čo je Service Mesh v Kubernetes?
Použil si Kotlin? Máš skúsenosti?
/*Daný je reťazec, je potrebné implementovať funkciu na kontrolu správnosti označovania zátvoriek. Každá otváracia zátvorka musí mať zodpovedajúcu zatváraciu zátvorku. Otváracie a zatváracie zátvorky musia byť v správnom poradí. Typy zátvoriek: "{", "}", "(", ")", "[", "]". Vstup: "([]){}[(()())()]" Výsledok: true Vstup: "[(])" Výsledok: false Pretože zátvorky 2 a 3 sú nesprávne uvedené, zatváracia ']' sa objavuje skôr ako zatváracia '(' */ 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(); }