Озон
#ozon
Прислать задачу | Подписаться
Дана строка s. нужно найти первый не повторяющийся символ в строке и вернуть его индекс. Если такого символа нет, вернуть -1
Пример:
input: abcbaad
output: 2
#ozon
Прислать задачу | Подписаться
Озон
Реализовать свой перечислимый тип (enum), как если бы до появления современного enum в Java 1.5.
#ozon
Прислать задачу | Подписаться
Реализовать свой перечислимый тип (enum), как если бы до появления современного enum в Java 1.5.
Нужно реализовать контракт современного Java-enum:
- можно легко получать любое значение энума
- безопасное сравнение значений по ссылке (==)
- каждое значение имеет строковое имя, совпадающее с названием значения
- каждое значение имеет целочисленный идентификатор ordinal, который содержит номер значения в порядке его объявления в энуме
- можно получить список всех значений энума
- можно получить значение по его ordinal
- можно получить значение по его имени
Для примера можно взять список валют. Важно, чтобы список был потенциально расширяемым, потому что качество кода будет определять, насколько беспроблемно в будущем пройдет добавление значений в энум.
class Currency {
// TODO
}
// Currency.USD == Currency.USD true
#ozon
Прислать задачу | Подписаться
💩8🤔4
Реальные задачи с собеседований | Java
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
Anonymous Poll
51%
Не ищу работу
24%
0
6%
1
2%
2
2%
3-5
0%
6-10
1%
больше 10
13%
.
This media is not supported in your browser
VIEW IN TELEGRAM
когда знаешь, что у подписчиков есть задачи, но не можешь доказать
за 3 недели было 5 задач от 2 подписчиков🫡
😁16👍2
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);
}
);
}
}
Прислать задачу | Подписаться
у нас ибшники требуют установить на макос софт, который все логирует и делает скрин экрана каждую минуту🫡, или предлагают работать через rdp. ну или можно перейти на винду
Как у вас в компании с этим?
👍- нет следящего софта
👎- есть следящий софт
🤔- есть тайм-трекер
Как у вас в компании с этим?
👍- нет следящего софта
👎- есть следящий софт
🤔- есть тайм-трекер
👍118👎34🤔24😱5
Реальные задачи с собеседований | Java
у нас ибшники требуют установить на макос софт, который все логирует и делает скрин экрана каждую минуту🫡, или предлагают работать через rdp. ну или можно перейти на винду Как у вас в компании с этим? 👍- нет следящего софта 👎- есть следящий софт 🤔- есть…
ребята, порекомендуйте плиз, какой ноут взять до 200т.р., чтобы и работать можно и было, и в игры поиграть
Озон
#ozon
Прислать задачу | Подписаться
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
Прислать задачу | Подписаться
🤔5
Яндекс
#yandex
Прислать задачу | Подписаться
/**
* Постамат - автоматическая станция приёма/выдачи посылок.
* В маркете формируются заказы, и хочется добавить возможность получения через постамат.
* Запускаем MVP: небольшая аудитория пользователей, несколько постаматов в Москве.
* При заказе пользователь сможет выбрать, что хочет получить заказ в постамате.
*
* В рамках задачи нужно реализовать код для MVP решения:
* - курьер привозит заказ и пробует положить его в ячейку, указывая номер заказа. Постамат сам выбирает ячейку и возвращает в ответ. Она откроется вызывающим этот метод кодом.
* - после того, как заказ положили в ячейку, пользователю отправляется СМС c кодом получения. Заказ будет ждать вечно
* - в случае любых ошибок - курьер забирает заказ назад и попробует положить заказ в ячейку на следующий день (для MVP это ок)
* - пользователь может получить заказ по коду выдачи из СМС. При вводе кода выдачи постамат должен вывести на экран текст "ваш заказ ХХХ в ячейке YYY", ячейка откроется сама.
*
* Ограничения:
* - все ячейки одного размера, но их может быть разное количество, зависит от конкретного постамата
* - один заказ - одна коробка, она влезает в ячейку
* - ячейки каждого постамата пронумерованы
* - каждый постамат сам хранит своё состояние
*
* Для отправки сообщения пользователю надо использовать клиент UserNotificationApi.
*/
class PostalBox {
private final UserNotificationApi notificationApi;
// нужно реализовать методы хранения и выдачи заказа
}
/**
* Синхронный клиент, вызывающий postalbox.notify.market.yandex.net
* Реализацию интерфейса описывать не нужно.
*/
interface UserNotificationApi {
// нужно описать метод(ы) для отправки сообщения с кодом выдачи
// в ответ придёт код выдачи, который был отправлен пользователю
}
#yandex
Прислать задачу | Подписаться
💩14👍2
Тбанк
#tbank
Прислать задачу | Подписаться
Программист Изосим хочет в отпуск, длительностью не меньше, чем 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
#tbank
Прислать задачу | Подписаться
💩2😁1
Сбер #repeat #sql
Вывести имена клиентов, у которых на активных(status = open) счетах больше 10000
#sber
Прислать задачу | Подписаться
Вывести имена клиентов, у которых на активных(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
Прислать задачу | Подписаться