Jak je implementována datová struktura HashMap a jak zajišťuje rychlý přístup k prvkům?
Java
Jak určit, zda je výjimka v programovacím jazyce kontrolovatelná nebo nekontrolovatelná?
Jaká je nevýhoda implementace Singleton pomocí ručního kódu a proč je to považováno za špatnou praxi?
Povězte nám o vnitřní struktuře paměti v Javě a jak fungují sběrače odpadků.
Můžete vysvětlit, co znamená pojem 'nezměnitelný objekt' a jaké jsou jeho klíčové vlastnosti?
Vysvětlete koncept paralelních toků v API Stream a jejich vlastnosti
Co zachytíme v catch, pokud dojde k výjimce jak v try, tak při uzavření zdroje (try-with-resources)?
Jak vybrat konkrétní implementaci komponenty Bean pro injekci do projektu Spring?
Jaký je účel používání anotací v programování?
Výhody a nevýhody JPA vs JDBC?
Jaké jsou výhody a nevýhody používání Spring Boot při vývoji Java aplikací?
Jakou roli hrají neměnné objekty v programování a jaké výhody přinášejí?
Jaké hlavní kategorie metod poskytují možnosti zpracování dat v API Stream?
V jakých situacích použití anotace @Transactional ve Springu nezaručuje očekávané chování transakcí?
Jak předat argument funkce odkazem, aby změny uvnitř funkce odrážely na původní proměnné?
Jak se v Javě provádí předávání hodnot při volání metod – podle odkazu nebo podle hodnoty?
Čím se liší mezilehlé a terminální metody v programování?
Jak zjednodušit zpracování, pokud chceme zpracovat několik výjimek stejným způsobem (Multi-catch)?
public class Accumulator { private Map<String, Object> data = new HashMap<>(); // aktuální sada dat private List<Map<String, Object>> dataList = new ArrayList<>(); // dávka dat private Map<Instant, String> responses = new HashMap<>(); // odpovědi serveru přijímajícího data private int dataId; /** * Přidá pole field s hodnotou value do sady */ public void add(String field, String value) { data.put(field, value); } /** * Vrací hodnotu podle názvu pole field */ public <T> T get(String field) { return (T) data.get(field); } /** * Vrací odpovědi serveru přijímajícího data */ public String getResponses() { String out = ""; for (String resp : responses.values()) { out += "; " + resp; } return out; } /** * Ukončí sběr aktuální sady dat a odešle ji */ public synchronized void push() { dataList.add(data); if (dataList.size() == 100) { send(); dataList.clear(); } data = new HashMap<>(); data.put("id", dataId++); } /** * Odešle dávku na server přijímající data */ private void send() { RestTemplate restTemplate = new RestTemplate(); HttpEntity<List<Map<String, Object>>> request = new HttpEntity<>(dataList); String url = "localhost:20808/msg/incoming"; ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class); responses.put(Instant.now(), response.getBody()); } }