Skip to content

Instantly share code, notes, and snippets.

Implement a service registry, which is a database of services, their instances and their locations.
1 - Register instances
It should be possible to register an instance, identified by an address
Each address should be unique, it should not be possible to register the same address more than once
Service Registry should accept up to 10 addresses
2 - Random invocation
Develop an algorithm that, when invoking the Service Registry's get() method multiple times, should return one backend-instance choosing between the registered ones randomly.
example
class UserDto {
Int id;
String name;
}
Integer threadsNumber = 4;
public class Worker implements Runnable {
### Бинарное дерево
Реализовать простейшее сортированное бинарное дерево интов (без балансировки), у которого есть две операции:
* Вставка
* Нахождение *диаметра*
Где *диаметр* - расстояние между двумя наиболее удалёнными узлами дерева.
Реализовать за приемлемое время/память, обосновать
1. Отличие Future<T> от CompletableFuture<T>
2. Сложность HashMap и TreeMap, когда что выгоднее использовать
3. BTree как устроено, как хранятся индексы, какой размер обычно листа на диске в BTree, как локи работают в BTree
4. Volatile, happens before, mutual exclusion рассказать
5. Задача написать реализацию стека, доп задание сделать стек потокбезопасным без локов (LockFree)
6. Рассказать про реордеринг кода JIT компилятором и процессором
7. Отличие шардирования от репликации
8. Как хранятся данные в колоночных базах данных внутри и зачем они нужны
9. Как устроен редис, как там сделано шардирование, что такое cache consistency in distributed system,
как быстро добавить несколько новых шардов в редис кластер, без перераспределения старых данных
1. как устроен double внутри
2. сколько занимают памяти double, int, char, boolean
3. написать hashMap put и get методы как бы ты писал в продакшене
4. рассказать про ошибки в коде и переписать этот метод, чтобы в однопотчном режиме работало
public class Account {
private long id;
private double amount;
public syncronized void operation(Account to, double amount) {
/*
Есть последовательность запросов пользователей, каждый запрос —
это пара (time, userId), запросы всегда приходят в отсортированном
по времени порядке.
Нужно уметь быстро отвечать: "сколько за последние k секунд было
пользователей, которые задали >= limit запросов".
*/
class UserStatistics {
Map<Long, List<Long>> usersFrequencies;
Anton Skub’ev, [11.05.21 14:58]
Написать аналог Enum (как если бы до Java 1.5) на примере какого-нибудь перечислимого списка, например списка валют.
Нужно:
- самое важное требование, которое следует удовлетворять в процессе всей реализации - расставить как можно меньшее количество граблей для разработчика, который в будущем будет добавлять новые значения
- иметь фиксированный список значений, задаваемый на этапе компиялции
- иметь строгую типизацию значений
- уметь безопасно сравнивать значения по ==
- получать все значения
- иметь неизменяемый ordinal (порядковый номер с 0 в порядке объявления значений)
@1ou
1ou / 123
Created October 10, 2020 19:33
package codeforces;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
/*
https://codeforces.com/problemset/problem/?/?
curl --location --request GET 'http://dev.monopera.com/api/v1/graphics/exchange-rates' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1ODQ2Mjg1NjYsInVzZXJfbmFtZSI6ImtrQGtrLmtrayIsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIl0sImp0aSI6ImQzZmI1NzgwLWNjN2UtNDQyMy1hYTZiLTA3Y2MxOTMzMWMxYyIsImNsaWVudF9pZCI6InVzZXIiLCJzY29wZSI6WyJ1aSJdfQ.UXzr6mZs7QmVuMU_X57ffBpjX5zIU0V83Ye5RVURZW-D5wup0xrYDXBEgmKOl7CHPS83dsaF1xRHzlMSEWUMzMstPADAvp_9nRDO4IR-y6KibGnavaCfQwArV8WA2GMBzwgWUlD19qiW9BbLNIwHtkRt8xpTHFIGik1fBrWuoxg2BXkShkY6TwuuLUwTKw00JTIBhGay-4BuZ9IWYL0B27PjMa5u-HeNb7_lop_9R5pXrd06-k5rNZ9wO5VFB3VCrHVwKPMirdV88A5MMlFcG_v-fdy5D5oUREgvUZJDd8mcH_ntHGKZ2H3nVUl1_PmQIz4OD6P_GkfKLOCira4y8A'
/**
* Дана строка, состоящая из букв A-Z:
* "AAAABBBCCXYZDDDDEEEFFFAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB"
* Нужно написать функцию RLE, которая на выходе даст строку вида:
* "A4B3C2XYZD4E3F3A6B28"
* И сгенерирует любую ошибку, если на вход пришла невалидная строка.
*
* Пояснения:
* 1. Если символ встречается 1 раз, он остается без изменений
* 2. Если символ повторяется более 1 раза, к нему добавляется количество повторений