Яндекс на стажера
#yandex
Прислать задачу | Подписаться
public interface WeightedRandomPicker {
void add(int value, int weight);
int getRandom();
}
Реализовать структуру, которая добавляет элемент и его вес, и с определенной вероятностью возвращает его.
То есть для элементов
(1,2,3,4) с весом (1,2,3,4)
getRandom() должен вернуть 1 с вероятностью 1/10, 2 с вероятностью 1/5, 3 с вероятностью 3/10 и 4 с вероятностью 2/5
#yandex
Прислать задачу | Подписаться
💩6😁2👍1
x5
#x5tech
Прислать задачу | Подписаться
4) UserService рефакторинг
@Service
public class UserService {
// Стандартный Spring репозиторий
private final UserRepository repo;
// Сервис email оповещений. Для отправки письма делает запрос в сторонний сервис.
private final EmailNotificationService service;
// Сервис аудита, важно чтобы он не влиял на основной flow даже если не смог сохранить информацию
private final AuditService auditService;
@Transactional
public List<User> getAll() {
return repo.findAll();
}
@Transactional
public List<User> saveAll(List<User> users) {
repo.saveAll(users);
try {
users.forEach(user -> service.notify(user));
} catch (Exception ex) {
System.out.println("Error sending email");
}
logCreateOperation(saved);
}
@Transactional()
private void logCreateOperation(List<User> users) {
auditService.log("Users created: " + users.size());
}
}
#x5tech
Прислать задачу | Подписаться
👍4😁3
x5
#x5tech
Прислать задачу | Подписаться
3) Пространственная, временная сложность
var matrix[n][n]
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < 100_000_000; k++) {
sout(matrix[i][j])
}
}
}
#x5tech
Прислать задачу | Подписаться
🤯3
x5
#x5tech
Прислать задачу | Подписаться
2) class User {
String name;
int age;
} // Из List<User> вернуть имена пользователей, которые страше 16 лет, и их имена начинаются на Я
#x5tech
Прислать задачу | Подписаться
😁15👍1
Яндекс
#yandex
Прислать задачу | Подписаться
/*
Реализуйте throttler для ограничения частоты событий от IoT устройств.
Датчики отправляют события, но нужно контролировать их частоту для экономии bandwidth.
Требования:
- Использование sliding window алгоритма
- Потокобезопасность - события приходят из разных потоков
- Очистка устаревших записей
*/
import java.time.*;
import java.util.*;
import java.util.concurrent.*;
class EventThrottler {
private final int maxEventsByDevice;
private final Duration windowDuration;
public EventThrottler(int maxEventsByDevice, Duration windowDuration) {
this.maxEventsByDevice = maxEventsByDevice;
this.windowDuration = windowDuration;
}
/**
* Проверяет, можно ли принять eventCount событий от устройства.
* Каждое устройство имеет свой независимый лимит.
*
* @param deviceId идентификатор устройства
* @param eventCount количество событий для добавления
* @return true если события приняты, false если превышен лимит
*/
public boolean shouldAcceptEvent(String deviceId, int eventCount) {
// TODO: реализуйте sliding window алгоритм
return false;
}
}
@Test
public void testBasicEventThrottling() throws InterruptedException {
EventThrottler throttler = new EventThrottler(3, Duration.ofSeconds(1));
String deviceId = "sensor-temp-01";
assertTrue(throttler.shouldAcceptEvent(deviceId, 1));
assertTrue(throttler.shouldAcceptEvent(deviceId, 2));
// 4-е событие должно быть отклонено
assertFalse(throttler.shouldAcceptEvent(deviceId, 1));
Thread.sleep(1100);
assertTrue(throttler.shouldAcceptEvent(deviceId, 1));
}
#yandex
Прислать задачу | Подписаться
🤯8💩1
Яндекс (стажировка)
#yandex
Прислать задачу | Подписаться
Дана строка.
Найти количество её непрерывных подстрок,
которые содержат все уникальные символы из этой строки хотя бы по одному разу.
#yandex
Прислать задачу | Подписаться
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Всех с окончанием рабочей недели
#fridaymemes
#fridaymemes
❤16😁10
Яндекс🔥
#yandex
Прислать задачу | Подписаться
/**
* Пересечение двух отсортированных массивов.
*
* Даны два отсортированных массива целых чисел.
* Напишите функцию, которая вернёт новый отсортированный список
* с пересечением элементов.
*
* Input: a=[2, 3, 3, 8, 11, 20], b=[5, 9, 9, 11, 13, 20, 24]
* Output: [11, 20]
*/
#yandex
Прислать задачу | Подписаться
🔥9🤷♂6
Реальные задачи с собеседований | Java
Всех с окончанием рабочей недели #fridaymemes
я думал сегодня пятница🥲🤣
😢36😁22
Сбер
#sber
Прислать задачу | Подписаться
// Что выведет данный код? Почему?
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
calculate(a, b);
System.out.println("a = " + a + ", b = " + b);
}
public static void calculate(int a, int b) {
a = a + b;
}
}
#sber
Прислать задачу | Подписаться
😁11🤔1
Сбер
#sber
Прислать задачу | Подписаться
//Напишите метод для подсчета количества конкретных слов в строке (уникальное слово - количество повторений).
Пример строки:
One of the most famous statues in the world stands on an island in New York. This statue is the Statue of Liberty - a woman holding a torch. Visitors can go inside the statue. The statue is so large that as many as twelve people can stand inside the torch.
#sber
Прислать задачу | Подписаться
#itone
Прислать задачу | Подписаться
CREATE TABLE person (
id uuid PRIMARY KEY,
age int2 NOT NULL,
town text NOT NULL,
sex CHAR(1) NOT NULL CHECK(sex IN ('M','F')),
lastName text NOT NULL,
firstName varchar(20) NOT NULL,
middleName text
);
-- 1) Как добавить друзей для person (друзья - та же сущность person)?
-- 2) Самый популярный поисковый запрос
select * from person
where
town = :town
and age between (:min, :max)
and sex = :sex;
-- Запрос сильно тормозит. Как понять причину?
Прислать задачу | Подписаться
👍1
Forwarded from RR | Бегущий по легаси
Вот и мне прилетела верификация от антропика😏
У кого то получилось разрулить и избежать бана?
У кого то получилось разрулить и избежать бана?
😢10👏1
Альфабанк
#alfabank
Прислать задачу | Подписаться
public class StreamQuiz { public static void main(String[] args) { List<Integer> numbers = List.of(4, 3, 7, 4, 2);
Set<Integer> result = numbers.stream()
.peek(n -> System.out.println("Peek 1: " + n))
.filter(n -> n >= 3)
.peek(n -> System.out.println("Peek 2: " + n))
.sorted()
.peek(n -> System.out.println("Peek 3: " + n))
.collect(Collectors.toSet());
System.out.println("Result: " + result);
}
}
#alfabank
Прислать задачу | Подписаться
❤2