Реальные задачи с собеседований | Java
Открыть в Telegram
Буду сюда выкладывать реальные задачи и вопросы с собеседований, без копипаста с интернета и других каналов) Ссылка для друга - https://t.me/+K4vJFdalwlthYTQy Прислать задачи, реклама - @privatevoidmain
Больше4 354
Подписчики
+324 часа
+47 дней
+2030 день
Архив постов
Сбер
Ревью и объяснение
@Component class A { @Autowired private SomeRepository repo; @Autowired private MessageService mss; @Autowired private MessageRepository mssRepo; @Transactional void call(String id) { Optional<SomeEntity> entOpt = repo.findById(id) if (!entOpt.isEmpty()) { SomeEntity ent = entOpt.get(); ent.setStatus("catched"); repo.save(ent); } String msgId = mss.sendBroadcast(id+ " catched"); mssRepo.save(new MessageEntity(msgId)); } }#sber Прислать задачу | Подписаться
Сбер
Ревью и объяснение
@Service class Some1 { private Repo1 dao; @Transactional public void update(UUID id, Status st) { dao.updateDocumentStatus(id, st); } public void updateUnchecked(UUID id, Status st) { if (id != null && st != null) { update(id, st); } } }#sber Прислать задачу | Подписаться
Газпромбанк
Сделать код-ревью
public class Parser { File file; public synchronized void setFile(File file) { this.file = file; } public synchronized File getFile() { return file; } public String getContent() throws IOException { InputStream i = new FileInputStream(file); String output = ""; int data; while ((data = i.read()) > 0) { output += (char) data; } return output; } public String getContentWithoutUnicode() throws IOException { InputStream i = new FileInputStream(file); String output = ""; int data; while ((data = i.read()) > 0) { if (data < 0x80) { output += (char) data; } } return output; } public void saveContent(String content) throws IOException { OutputStream o = new FileOutputStream(file); for (int i = 0; i < content.length(); i +=1) { o.write(content.charAt(i)); } } }#gazprombank Прислать задачу | Подписаться
Озон #Systemdesign
Задание:Опишите, как бы вы реализовали отказоустойчивую систему доставки данных из топиков Кафка в распределенное файловое хранилище? Требования: гарантия доставки - Exactly Once выходной формат данных должен позволять читать сообщения (партиция, оффсет, заголовки, ключ, тело сообщения) задержка между временем сообщения в топике и записью в хранилище не должна быть больше 20 мин 100+ топиков и динамическое подключение новых топиков 20 Тб данных с топиков в сутки рекомендуемый минимальный размер файла в хранилище 512Мб#ozon Прислать задачу | Подписаться
Сбер #sber
сделать ревью
class UserService { private UserRepository repo = new UserRepository(); private RegionService regionService; public UserService(final ApplicationContext appCtx) { regionService = appCtx.getBean("regionService", RegionService.class); } public void processNewUsers(final List<User> users, String regionName) { … users = createUsers(users); … users.stream() .foreach(u -> regionService.updateRegionLink(u.getId(), regionName)); } @Transactional public List<User> createUsers(final List<User> users) { return users.stream() .map(u -> repo.saveUser(u)) .collect(Collectors.toList()); } private User getUser(final int userId) { return repo.getUserById(userId); } }Прислать задачу | Подписаться
Иннотех, втб
Объяснить, что здесь происходит
@Component public class StartService { private static final String CEO_USER_ID = "some_id"; @Autowired private NotificationService notificationService; public StartService( NotificationService notificationService) { this.notificationService.notify(CEO_USER_ID, "Service successfully started"); } }Прислать задачу | Подписаться
MerlionTech
Что будет выведено?
public class ExceptionTask { public static void main(String[] args) { testException(); } public static void testException() { try { throw new RuntimeException("Main Exception"); } catch (RuntimeException e) { System.out.println("RuntimeException: " + e.getMessage()); } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); } finally { System.out.println("Inside finally"); } } }Прислать задачу | Подписаться
MerlionTech
Что будет выведено?
public class ExceptionTask2 { public static void main(String[] args) { try { testException2(); } catch (Exception e) { System.out.println(e.getMessage()); } } public static void testException2() { try { throw new IOException("Main Exception"); } catch (RuntimeException e) { throw new RuntimeException("RuntimeException: " + e.getMessage()); } catch (Exception e) { throw new RuntimeException("Exception: " + e.getMessage()); } finally { System.out.println("Inside finally"); } } }Прислать задачу | Подписаться
WB (не точно)
/** * Интерфейс для взаимодействия с аппаратной частью банкомата. */ interface Hardware { /** * Возвращает массив с количеством купюр по номиналам 50, 100, 500, 1000, 5000. * Метод работает медленно и создает шум. * * @return массив, где каждый элемент соответствует количеству купюр определенного номинала. * Например, [10, 20, 30, 40, 50] означает: * - 10 купюр номиналом 50 рублей * - 20 купюр номиналом 100 рублей * - 30 купюр номиналом 500 рублей * - 40 купюр номиналом 1000 рублей * - 50 купюр номиналом 5000 рублей */ fun billsCounts(): IntArray /** * Загружает в бокс выдачи указанные купюры. * * @param billsCounts массив с количеством купюр по номиналам [50, 100, 500, 1000, 5000]. * Например, [0, 1, 0, 2, 0] означает: * - 0 купюр номиналом 50 рублей * - 1 купюру номиналом 100 рублей * - 0 купюр номиналом 500 рублей * - 2 купюры номиналом 1000 рублей * - 0 купюр номиналом 5000 рублей */ fun giveBills(billsCounts: IntArray) } /** * Класс для реализации логики работы банкомата. * Тут нужно писать код */ class MyATM { /** * Аппаратная часть банкомата. */ var hardware: Hardware? = null val nominals = [50, 100, 500, 1000, 5000] fun calcTotal(): Int fun giveMoney(req: OperationRequest): OperationResponse data class OperationRequest(val sum: Int) data class OperationResponse(val status: OperationStatus) }#wilberries Прислать задачу | Подписаться
Иннотех, втб #sql
Доменная модель компании ООО "Рога и копыта” представлена таблицами Department и Employee. Необходимо вывести список сотрудников (id, name), которые получают максимальную ЗП в своем отделе. Department === id name Employee === id department_id name salary#innotech | Прислать задачу | Подписаться
Иннотех, втб
Объяснить, что здесь происходит (#repeat)
@Component public class SomeServiceWithTransactional { @Transactional public void someMethod() { // some logic someMethod1(); } @Transactional(propagation = REQUIRED_NEW) public void someMethod1() { // some logic someMethod2(); } @Transactional(propagation = REQUIRED_NEW) private void someMethod2() { ... } }#innotech | Прислать задачу | Подписаться
Сбер
Сбер // 1. Добавить недостающие аннотации public class OrganizationController { private final OrganizationService organizationService public void create(List<Organization> organizations) { organizationService.create(organizations); } } public interface OrganizationService { void create(List<Organization> organizations); } public class OrganizationServiceImpl implements OrganizationService { @Override public void create(List<Organization> organizations) { // Валидация атрибутов организаций validate(organizations); // Маппинг организаций на сущности Set<OrganizationEntity> entities = map(organizations); // Сохранение организаций в БД save(entities); } private void validate(List<Organization> organizations) { // 2. Проверить что список организаций не пустой // 3. Проверить что нет организаций без счетов // 4. Посчитать общее количество счетов у всех организаций // и проверить что количество счетов не больше 10 // 5. Для каждого счета проверить что // - счет не пустой // - счет содержит только цифры private Set<OrganizationEntity> map(List<Organization> organizations) { // 6. Удалить дубликаты счетов // Organization(accounts=[1, 1]) -> Organization(accounts=[1]) // 7. Из списка организаций составить множество сущностей // Organization(accounts=[1, 2]) -> [OrganizationEntity(account=1), OrganizationEntity(account=2)] return null; } private void save(Set<OrganizationEntity> entities) { } } @Getter @Setter public class Organization { /** Счета */ private List<String> accounts; } @Getter @Setter @Entity @Table(name = "ORGANIZATION") @EqualsAndHashCode(of = "account") public class OrganizationEntity { /** Идентификатор записи */ @Id @GeneratedValue @Column(name = "ID") private UUID id; /** Счет */ @Column(name = "ACCOUNT") private Integer account; }#sber Прислать задачу | Подписаться
WB
1. Сделать ревью
2. Что будет если упадет сеть в строке "//упала сеть"
import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; import java.util.List; import java.util.Map; @Component public class InterviewService { private final ScoreRepository scoreRepository; private final TransactionTemplate transactionTemplate; private final InterviewScoreMLService interviewScoreMLService; private final ObjectMapper objectMapper = new ObjectMapper(); public InterviewService(ScoreRepository scoreRepository, TransactionTemplate transactionTemplate, InterviewScoreMLService interviewScoreMLService) { this.scoreRepository = scoreRepository; this.transactionTemplate = transactionTemplate; this.interviewScoreMLService = interviewScoreMLService; } /** * Метод считает сколько очков заработал кандидат, * сохраняет результат в базу и кидает callback об этом во внешний сервис */ public void process(Candidate c) { transactionTemplate.executeWithoutResult(status -> { Score s = interviewScoreMLService.compute(c); String body = objectMapper.writeValueAsString(Map.of(c.getName(), s)); Mono<ResponseEntity<Void>> request = WebClient.create() .post() .body(BodyInserters.fromValue(body)) .retrieve() .toBodilessEntity(); scoreRepository.saveScore(s); }); //упала сеть } } class Candidate { private final String name; private final List<Integer> tasksSolvedId; public Candidate(String name, List<Integer> tasksSolvedId) { this.name = name; this.tasksSolvedId = tasksSolvedId; } public String getName() { return name; } public List<Integer> getTasksSolvedId() { return tasksSolvedId; } } class Score { private final String name; private final int score; public Score(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public int getScore() { return score; } }#wilberries Прислать задачу | Подписаться
Как вам 2026 в плане поиска работы? Ситуация на рынке лучше, чем в конце 2025?
ВК (#repeat было от какой-то другой компании)
/** Дан массив целых чисел, повторяющихся элементов в массиве нет. Нужно преобразовать в строку, сворачивая соседние по числовому ряду числа в диапазоны. Input: [1,4,5,2,3,9,8,11,0,13] Output: "0-5,8-9,11,13" Input: [3,1,5] Output: "1,3,5" Input: [1,3,5] Output: "1,3,5" Дополнительные примеры: пустой массив, массив из одного элемента. */#vk| Подписаться
Сбер
import java.util.*; public class Main { public static void main(String[] args) { System.out.println(multiply(3, 4) + ", Ожидается 12"); System.out.println(multiply(-2, 3) + ", Ожидается -6"); // Ожидается -6 System.out.println(multiply(2, -3) + ", Ожидается -6"); // Ожидается -6 System.out.println(multiply(-3, -4) + ", Ожидается 12"); // Ожидается 12 System.out.println(multiply(1, 0) + ", Ожидается 0"); // Ожидается 0 System.out.println(multiply(0, 0) + ", Ожидается 0"); // Ожидается 0 System.out.println(multiply(0, 5) + ", Ожидается 0"); // Ожидается 0 System.out.println(multiply(Integer.MAX_VALUE, 1) + ", Ожидается " + Integer.MAX_VALUE); // Проверка на максимальное значение System.out.println(multiply(Integer.MIN_VALUE, -1) + ", Ожидается " + Integer.MIN_VALUE); // Проверка на минимальное значение } public static int multiply(int a, int b) { //TODO Реализовать умножение без использования операнда умножения return a*b; //это для компиляции } }#sber Прислать задачу | Подписаться
Сбер
-- create CREATE TABLE Employees ( id INTEGER PRIMARY KEY, name VARCHAR NOT NULL ); CREATE TABLE EmployeeUNI ( id INTEGER PRIMARY KEY, unique_id INTEGER ); -- insert INSERT INTO Employees VALUES (1, 'Alice'); INSERT INTO Employees VALUES (7, 'Bob'); INSERT INTO Employees VALUES (11, 'Meir'); INSERT INTO Employees VALUES (90, 'Winston'); INSERT INTO Employees VALUES (3, 'Jonathan'); INSERT INTO EmployeeUNI VALUES (3, 1); INSERT INTO EmployeeUNI VALUES (11, 2); INSERT INTO EmployeeUNI VALUES (90, 3); ----------------------------------------------------------------------- -- TODO ----------------------------------------------------------------------- -- Написать запрос, который выведет unique_id для каждого пользователя. -- Если для сотрудника нет записи в таблице EmployeeUNI, то вместо unique_id следует вывести null.#sber Прислать задачу | Подписаться
Если тг заблокируют, где вам было бы удобнее читать канал?(Можно выбрать несколько)
Сбер
Написать метод, который принимает массив целых чисел и число target и возвращает элемент, наиболее близкий к target по модулю#sber Прислать задачу | Подписаться
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
