public class Accumulator { private Map<String, Object> data = new HashMap<>(); // set de date curente private List<Map<String, Object>> dataList = new ArrayList<>(); // lot de date private Map<Instant, String> responses = new HashMap<>(); // răspunsurile serverului care primește datele private int dataId; /** * Adaugă un câmp field cu valoarea value în set */ public void add(String field, String value) { data.put(field, value); } /** * Returnează valoarea după numele câmpului field */ public <T> T get(String field) { return (T) data.get(field); } /** * Returnează răspunsurile serverului care primește datele */ public String getResponses() { String out = ""; for (String resp : responses.values()) { out += "; " + resp; } return out; } /** * Încheie colectarea setului curent de date și îl trimite în lot */ public synchronized void push() { dataList.add(data); if (dataList.size() == 100) { send(); dataList.clear(); } data = new HashMap<>(); data.put("id", dataId++); } /** * Trimite lotul către serverul care primește date */ 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()); } }
Java
Aveți experiență în utilizarea multithreading în proiecte Java?
public static void main(String args[]) { checkMap(new HashMap<>()); checkMap(new LinkedHashMap<>()); checkMap(new TreeMap<>()); } private static void checkMap(Map<Person, String> map) { System.out.println("Verificare " + map.getClass()); Person ivan = new Person("Иван"); Person peter = new Person("Пётр"); Person maria1 = new Person("Мария"); Person maria2 = new Person("Мария"); map.put(ivan, ivan.name); map.put(peter, peter.name); map.put(maria1, maria1.name); map.put(maria2, maria2.name); // iterează și afișează for (Map.Entry<Person, String> entry : map.entrySet()) { System.out.println(entry); } // maria1.setName("Анна-Мария"); // maria2.setName("Анна-Мария"); System.out.println(map.get(maria1)); System.out.println(map.get(maria2)); System.out.println("==================================="); }
Ce este o scurgere de memorie în Java? Care este algoritmul pentru detectarea acesteia?
Explicați conceptul de fluxuri paralele în API-ul Stream și caracteristicile lor
Care este diferența dintre WHERE și HAVING?
//Găsește primul element care nu se repetă într-un array de numere întregi int[] arr = {9, 4, 9, 6, 7, 4, 5}; int n = ...;
Cum implementați metodele de comparare a obiectelor și calcularea codurilor lor hash în codul dumneavoastră?
Ce abilități sau cunoștințe dorești să dezvolți în viitorul apropiat?
Ce colecție să folosești pentru a stoca istoricul paginilor vizitate fără duplicate, păstrând ordinea?
Ce colecție ai folosi pentru a implementa structura de date stivă?
//Se oferă două beans. În timpul celei de-a treia iterații în metoda m1 a apărut o excepție. Câte înregistrări vor fi în baza de date? public class BeanA() { private BeanB b; @Transactional public void m1(List<Integer> list) { for (Integer i : list) { b.m2(i); } } } public class BeanB() { @Transactional public void m2(Integer i) { // Adaugă o înregistrare în tabel } }
În ce condiții blocul finally nu va fi apelat în timpul execuției programului?
Cum te abonezi la Flux/Mono în programarea reactivă? Care sunt opțiunile disponibile?
Care este diferența dintre adnotările @Bean și @Service în Spring Framework?
Ce face metoda reduce?
Care este restricția privind numărul de utilizări ale Stream în Java?
Cum au fost structurate procesele dvs. de dezvoltare la locul anterior de muncă? Cum ajungeau sarcinile?
Câte fire de execuție paralele sunt în mod implicit în parallelStream?
Ce abordări și mecanisme permit utilizarea în siguranță a Map în condiții de multi-threading?