Собес

топ 100 блогов brotherflame11.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;
}
}
}

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

Предыдущие записи блогера :
Архив записей в блогах:
Только что пришел пресс-релиз от Белоярской АЭС с пометкой "СРОЧНО!". Он короткий и очень важный. Я его просто процитирую (без технических деталей): 10 декабря 2015 г., в 21:21 по местному времени (19:21 мск) энергоблок №4 Белоярской АЭС с реактором БН-800 был включен в сеть и выработал ...
Живой журнал замечателен тем, что позволяет вести диалог, включая возможность ответить всем сразу. Часть людей по итогам прочтения предшествующей записи о катастрофе Ту-154 под Сочи высказалась, что "так не бывает", "не могут они так" (врать, поступать и т.д.). Вот рассказ о том, как ...
1 июня 1933 года состоялось открытие Челябинского тракторного завода. Диапазон объектовых номеров – 700-799. В годы Великой Отечественной войны ЧТЗ был переименован в Кировский завод Наркомтанкопрома в городе Челябинске и, вместе с семью частично или полностью передислоцированными ...
Серия книг Solutions от издательства Oxford Какие бывают книги и из каких компонентов состит серия Solutions   Каждый из нас ставит перед собой определенные цели, которые соответствуют нашим интересам и увлечениям. Мы пытаемся найти свою нишу, стать на верную стезю, ...
в ленте девочки развлекаются). вот действительно,мы не зная друг друга в реале,часто рисуем в своей голове образ не соответствующий действительности.ведь такие вещи ,как голос,рост,мимика делают образ. мой рост 176 и среди своих подруг я самая ...