Собес

топ 100 блогов brotherflame — 11.06.2021 Потный, захотелось курить. Еще соседи с дрелью за стеной устроили ад не вовремя.
Как обычно, господа разрабы, задачки под катом.
Первую нужно было закодить с шарой экрана в зуме и засунуть туда примеры интервьювера.

1. Есть массив целых чисел длинной X.
В нем значения от 1 до X. Какие-то есть несколько раз, каких-то нет вообще.
Найти все пропущенные за О(n). Нельзя использовать дополнительную память, кроме массива для результата.

Например: {5,2,3,1,1,5} исходный массив.
Результат: {4,6}

2.
(Без темы)
/*
Компонент проведения платежей
Платеж - это сумма в валюте, которая переводится от одного клиента другому
Сумма платежа при сохранении должна быть пересчитана в рубли по курсу ЦБ на текущую дату
При платеже также должна быть выставлена комиссия, которая расчитывается в зависимости от суммы платежа
После платежа надо вызвать сервис нотификаций, который прокинет нотификации пользователям - для клиентов это будет выглядеть как push уведомление в итоге.
Компонент переводит деньги от залогиненного пользователя переданному на вход
*/
@Service
public class PaymentService {
@Autowired
private PaymentRepository paymentRepository;
@Autowired
private FeeRepository feeRepository;
@Autowired
private UserRepository userRepository;

private NotificationRestClient notificationRestClient = new NotificationRestClient();
private CbrRestClient cbrRestClient = new CbrRestClient();

@Transactional
public void processPayment(double amount, Currency currency, Long recipientId) {
double amountInRub = amount * cbrRestClient.doRequest().getRates().get(currency.getCode());

Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = userRepository.findUserById(userId).get();

Payment payment = new Payment(amountInRub, user, recipientId);
paymentRepository.save(payment);

if (amountInRub < 1000) {
Fee fee = new Fee(amountInRub * 0.015, user);
feeRepository.save(fee);
}

if (amountInRub > 1000) {
Fee fee = new Fee(amountInRub * 0.01, user);
feeRepository.save(fee);
}

if (amountInRub > 5000) {
Fee fee = new Fee(amountInRub * 0.005, user);
feeRepository.save(fee);
}

try {
notificationRestClient.notify(payment);
} catch (Throwable t) {
// do nothing
}
}

@Entity
class Fee {
private Double value;

@ManyToOne
private User user;

public Fee () { }

public Fee(Double value, User user) {
this.value = value;
this.user = user;
}

public void setValue(Double value) {
this.value = value;
}

public void setUser(User user) {
this.user = user;
}
}
}

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
   В обществе царит блуд и сексуальная раскрепощенность, развратное поведение стало нормой. То, что еще недавно считалось предосудительным поступком, сейчас не осуждается. В чем же причина? Причину видят в стремлении людей к свободе, в общем падении нравов, в неправильном воспитании, в ...
Ведение здорового образа жизни и занятия спортом сейчас становится особенно популярным в обществе. Большинство людей проживает в городах, передвигается на личном или общественном транспорте, не имея достаточных физических нагрузок. Восполнить этот пробел помогут уличные турники . ...
С многозадачностью у меня хорошо, так что одно другому не мешает. Сегодня снова Стивен Кинг. https://audiobook-mp3.com/audio-33249-gromila-1 На ближайшие дни у меня довольно ...
Завтра у нас новый магазин открывается - Metro. Но как-то станно открывается: официальное открытие будет 3 марта. Интересно, народ опять будет ломиться толпой? Слышала, что там вход по каким-то картам. Вот прям без карты не пустят? Кто знаком с этой сетью, расскажите, чё за магазин, ест ...
Была тут на оффоруме одна забавная темка. Непродолжительно и бурно кипела активностью, всё свое недолгое, но яркое существование весьма доставляла всем участникам. Увы, вскоре её ожидаемо прикрыли. Однако некоторое время назад моё внимание обратили на тот прискорбный факт, что кровавый ...