Реальные задачи с собеседований | Java
Open in Telegram
Буду сюда выкладывать реальные задачи и вопросы с собеседований, без копипаста с интернета и других каналов) Ссылка для друга - https://t.me/+K4vJFdalwlthYTQy Прислать задачи, реклама - @privatevoidmain
Show more4 354
Subscribers
+324 hours
+47 days
+2030 days
Posts Archive
WB #sql
Создать таблицу автор(id, name, age), книга(id, title, author_id), какие есть ограничения? + Если нужно, таблица связей для отношения многие‑ко‑многим. Cделать запросы на получение автора по книге, где возраст автора меньше 40. Решить через JOIN.#wilberries Прислать задачу | Подписаться
Лига цифорвой экономики
Описание задачи и код по ссылке -
online-ide.com/rmF4kxy7d8
#digitalleague | Подписаться
Сбер #repeat #sql
Вывести имена клиентов, у которых на активных(status = open) счетах больше 10000
CREATE TABLE clients ( client_id int primary key, name varchar(100), manager varchar(255) ); CREATE TABLE accounts ( account_id int primary key, client_id int, account_number varchar(255), balance decimal(10, 2), created_at date, status varchar(10), foreign key (client_id) references clients (client_id) );#sber Прислать задачу | Подписаться
Тбанк
Программист Изосим хочет в отпуск, длительностью не меньше, чем k дней подряд. Тимлид Иннокентий не отпускает Изосима в отпуск, если в день отсутствия Изосима будет релиз. На вход получаем k — минимальную продолжительность отпуска, на который согласен Изосим, и список дней в виде массива из чисел 0 (релиза не будет) и 1 (запланирован релиз). Найти количество вариантов для отпуска Изосим, с учетом того, что отпуск не должен прерываться рабочими днями. findDayoffs(2, [0,0,1,0,0]) -> 2 findDayoffs(1, [0,0,1,0]) -> 4 // Три варианта продолжительностью 1 день и один вариант 2 дня findDayoffs(3, [0,0,1,0,0]) -> 0 #include <stdio.h> int main(void) { printf("Hello, world!"); return 0; }#tbank Прислать задачу | Подписаться
Яндекс
/** * Постамат - автоматическая станция приёма/выдачи посылок. * В маркете формируются заказы, и хочется добавить возможность получения через постамат. * Запускаем MVP: небольшая аудитория пользователей, несколько постаматов в Москве. * При заказе пользователь сможет выбрать, что хочет получить заказ в постамате. * * В рамках задачи нужно реализовать код для MVP решения: * - курьер привозит заказ и пробует положить его в ячейку, указывая номер заказа. Постамат сам выбирает ячейку и возвращает в ответ. Она откроется вызывающим этот метод кодом. * - после того, как заказ положили в ячейку, пользователю отправляется СМС c кодом получения. Заказ будет ждать вечно * - в случае любых ошибок - курьер забирает заказ назад и попробует положить заказ в ячейку на следующий день (для MVP это ок) * - пользователь может получить заказ по коду выдачи из СМС. При вводе кода выдачи постамат должен вывести на экран текст "ваш заказ ХХХ в ячейке YYY", ячейка откроется сама. * * Ограничения: * - все ячейки одного размера, но их может быть разное количество, зависит от конкретного постамата * - один заказ - одна коробка, она влезает в ячейку * - ячейки каждого постамата пронумерованы * - каждый постамат сам хранит своё состояние * * Для отправки сообщения пользователю надо использовать клиент UserNotificationApi. */ class PostalBox { private final UserNotificationApi notificationApi; // нужно реализовать методы хранения и выдачи заказа } /** * Синхронный клиент, вызывающий postalbox.notify.market.yandex.net * Реализацию интерфейса описывать не нужно. */ interface UserNotificationApi { // нужно описать метод(ы) для отправки сообщения с кодом выдачи // в ответ придёт код выдачи, который был отправлен пользователю }#yandex Прислать задачу | Подписаться
Озон
interface Cache { // Метод для обновления каша через мутацию void bulkUpdate(Updater updater); // Метод, который принимает индексы для чтения long[] bulkRead(int[] indices); } // Интерфейс, через который пользователи каша обновляют его interface Updater { void updateCurrentState(long[] currentCacheState); } public void main() { var cache = new SimpleCache(); cache.bulkUpdate(arr -> { arr[0] = 123; arr[1] = 456; }); var cacheValues = cache.bulkRead(new int[]{1, 2}); System.out.println(Arrays.toString(cacheValues)); } Нужно реализовать "кэш", который хранит лонги по индексу. Размер кэша - 10 элементов. Реализует два метода: void bulkUpdate(Updater updater) и long[] bulkRead(int[] indices). bulkUpdate обновляет значения пачкой в текущем состоянии кэша, in-place. bulkRead получает пачкой необходимые лонги из кэша по индексам. Условия: - Есть N (константа) потоков которые кэш читают. - Есть 1 поток, который кэш обновляет. - Читатель должен быть защищён от dirty-read. То есть, если происходит мутация A -> B, то читатель должен видеть только конечное состояние (A или B), но никогда промежуточное. - Чтение должно быть неблокирующим. - Запись может быть блокирующей. - Входные данные можно считать всегда валидными (не null; индексы только от 0 до 9 включительно).#ozon Прислать задачу | Подписаться
ребята, порекомендуйте плиз, какой ноут взять до 200т.р., чтобы и работать можно и было, и в игры поиграть
у нас ибшники требуют установить на макос софт, который все логирует и делает скрин экрана каждую минуту🫡, или предлагают работать через rdp. ну или можно перейти на винду
Как у вас в компании с этим?
👍- нет следящего софта
👎- есть следящий софт
🤔- есть тайм-трекер
web tech
Сделать ревью
public class UserUpdater { @Autowired private CompanyRepository companyRepository; @Autowired private UserRepository userRepository; @Autowired private RemoteUserInfoProvider remoteUserInfoProvider; private Logger logger = Logger.getLogger(UserUpdater.class.getName()); public void fillUsersData() { try { companyRepository.findAll().forEach(company -> updateUsersData(company.getUsers()) ); } catch (Exception e) { logger.error("Error"); } } @Transactional private void updateUsersData( List<User> users ) { // tx.begin userRepository.lockUsers(users); users.parallelStream().forEach(user -> { UserInfo userInfo = remoteUserInfoProvider.getUserInfo(user.getId()); user.updateData(userRepository); // update user fields userRepository.save(user); } ); } }Прислать задачу | Подписаться
когда знаешь, что у подписчиков есть задачи, но не можешь доказать
за 3 недели было 5 задач от 2 подписчиков🫡
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
Озон
Реализовать свой перечислимый тип (enum), как если бы до появления современного enum в Java 1.5.
Нужно реализовать контракт современного Java-enum: - можно легко получать любое значение энума - безопасное сравнение значений по ссылке (==) - каждое значение имеет строковое имя, совпадающее с названием значения - каждое значение имеет целочисленный идентификатор ordinal, который содержит номер значения в порядке его объявления в энуме - можно получить список всех значений энума - можно получить значение по его ordinal - можно получить значение по его имени Для примера можно взять список валют. Важно, чтобы список был потенциально расширяемым, потому что качество кода будет определять, насколько беспроблемно в будущем пройдет добавление значений в энум. class Currency { // TODO } // Currency.USD == Currency.USD true#ozon Прислать задачу | Подписаться
Озон
Дана строка s. нужно найти первый не повторяющийся символ в строке и вернуть его индекс. Если такого символа нет, вернуть -1 Пример: input: abcbaad output: 2#ozon Прислать задачу | Подписаться
Озон #sql
### Есть две таблицы - tab1 id 1 2 3 - tab2 id 1 1 2 2 Скажите количество строк в результирующей таблице при 1. inner join 2. left join 3. cross join#ozon Прислать задачу | Подписаться
Газпромбанк
Написать метод для разворота списка
// node1->node2->node3 ---> node3->node2->node1 class Node{ Node left; Node right; int value; }#gazprombank Прислать задачу | Подписаться
Статистика зарплат с хабра
можно посмотреть как меняются зп, выбрать разные языки и уровни (но нужно заполнить анкету и внести данные о своей зарплате)
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
Available now! Telegram Research 2025 — the year's key insights 
