IT ONE #repeat
Стандартные вопросы по работе транзакшнал -
#itone
Прислать задачу | Подписаться
Стандартные вопросы по работе транзакшнал -
public class BeanA() {
private BeanB b;
}
@Transactional
public void m1(List list) {
for (Integer i : list) {
b.m2();
}
}
public class BeanB() {
@Transactional
public void m2(Integer i) {
// Добавляем запись в таблицу
}
}
#itone
Прислать задачу | Подписаться
❤4
IT ONE #repeat
Найти всех сотрудников, у которых общий размер начислений превышает 20
#sql
#itone | Прислать задачу | Подписаться
Найти всех сотрудников, у которых общий размер начислений превышает 20
-- Persons со списком работников
-- id | name
-- ------------
-- 1 | Petya
-- 2 | Vasya
-- 3 | Kolya
-- Payments с зарплатными начислениями ежемесячно.
-- id | person_id | amount
-- -----------------------------
-- 1 | 1 | 10
-- 2 | 1 | 20
-- 3 | 3 | 15
#sql
#itone | Прислать задачу | Подписаться
❤1👍1
cdti #repeat
Необходимо написать функцию, которая проверяет, является ли заданная строка палиндромом.
Прислать задачу | Подписаться
Необходимо написать функцию, которая проверяет, является ли заданная строка палиндромом.
Прислать задачу | Подписаться
😁6❤1🔥1
Яндекс #repeat (чуть изменили описание задачи, убрали название "рога и копыта") )
#yandex
Прислать задачу | Подписаться
Вы — backend-разработчик в интернет-магазине.
Дела идут в гору и магазин решил повысить лояльность покупателей, предоставляя им персональные скидки.
К вам обратился product owner с задачей создать простую систему лояльности,
которая предоставляет процентную скидку на корзину.
Размер скидки зависит от покупателя.
Аналитики уже определили, какие скидки должны быть предоставлены покупателям.
## Определения
Корзина - список покупок покупателя.
Покупка:
- id товара
- цена
- итоговая стоимость c учетом скидки
Скидка. Для покупателя может быть задан % скидки (целое число).
## Задача
Написать часть новой системы лояльности, которая:
- на вход получает id покупателя и корзину
- вычисляет и применяет скидки
- возвращает корзину, в которой учтены скидки. Скидка учитывается в стоимости покупки
#yandex
Прислать задачу | Подписаться
❤6
WB #repeat(была подобная задача, но не вб)
#wilberries
Прислать задачу | Подписаться
Есть матрица n на m. 1-суша, 0-вода. Нужно сосчитать кол-во островов.
Остров - это произвольный фрагмент суши, не соединенный с другими участками суши.
Связь по диагонали - не считается. Все, что за пределами матрицы - вода
Example 1:
Input: grid = [
["1", "1", "1", "1", "0"],
["1", "1", "0", "1", "0"],
["1", "1", "0", "0", "0"],
["0", "0", "0", "0", "0"]
]
Output: 1
Example 2:
Input: grid = [
["1", "1", "0", "0", "0"],
["1", "1", "0", "0", "0"],
["0", "0", "1", "0", "0"],
["0", "0", "0", "1", "1"]
]
Output: 3
#wilberries
Прислать задачу | Подписаться
👍1 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
Прислать задачу | Подписаться
😁2
Тбанк
#tbank #repeat
Прислать задачу | Подписаться
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//Отработает ли CountDownLatch нужное количество раз?
public class Increment {
private static int counter1 = 0;
private static int counter2 = 0;
Lock lock = new ReentranLock();
public static void main(String[] args) throws InterruptedException {
int tasksCount = 100_000;
CountDownLatch latch = new CountDownLatch(tasksCount);
ExecutorService executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < tasksCount; i++) {
executor.submit(() -> {
counter1++;
counter2++;
latch.countDown();
});
}
latch.await();
//сколько будет выведено?
System.out.println(counter1);
System.out.println(counter2);
System.exit(0);
}
}
#tbank #repeat
Прислать задачу | Подписаться
👍2😱1
Яндекс #repeat
#yandex
Прислать задачу | Подписаться
Вы — backend-разработчик в интернет-магазине.
Дела идут в гору и магазин решил повысить лояльность покупателей, предоставляя им персональные скидки.
К вам обратился product owner с задачей создать простую систему лояльности, которая предоставляет процентную скидку на корзину.
Размер скидки зависит от покупателя.
Аналитики уже определили, какие скидки должны быть предоставлены покупателям.
## Определения
Корзина - список покупок покупателя.
Покупка:
- id товара
- цена
- итоговая стоимость c учетом скидки
## Задача
Написать часть новой системы лояльности, которая применяет скидку покупателя к корзине.
- на вход получает id покупателя и корзину
- вычисляет и применяет скидки
- возвращает корзину, в которой учтены скидки
- все расчёты в рублях, точность до копеек. Округления по математическим правилам
Есть два вида скидки (не могут прийти одновременно):
- процент от суммы корзины
- фиксированная скидка
Сумма скидки распределяется равномерно между товарами, пропорционально цене товара.
Примеры:
- скидка 50%, в корзине товары на 50р и 100р. Скидка 25р и 50р
- скидка 10р, в корзине товары на 20р и 30р. Скидка 4р и 6р
- скидка 10р, в корзине товары на 1р и 99р. Скидка 10коп и 9р 90коп
#yandex
Прислать задачу | Подписаться
❤3
ВК ( #repeat было от какой-то другой компании)
#vk| Подписаться
/**
Дан массив целых чисел, повторяющихся элементов в массиве нет.
Нужно преобразовать в строку, сворачивая соседние по числовому ряду числа в диапазоны.
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| Подписаться
❤3
Иннотех, втб
Объяснить, что здесь происходит (#repeat)
#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 | Прислать задачу | Подписаться
👍6
WB #repeat
Сделать ревью #repeat
#wilberries
Прислать задачу | Подписаться
Сделать ревью #repeat
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
Прислать задачу | Подписаться
❤2
WB #sql #repeat
#wilberries
Прислать задачу | Подписаться
Есть таблица "employee" в которой записи про сотрудников, которые знают языки программирования
Name Lang
Nick C#
Nick SQL
Eva Rust
Vika Kotlin
Vika SQL
.... .....
Надо написать запрос? который выберет имена сотрудников, которые знают SQL и ещё хотя бы один любой язык. Считать, что один сотрудник — одно имя
#wilberries
Прислать задачу | Подписаться
👍2
itone #repeat
#itone
Прислать задачу | Подписаться
/**
* Посчитать сумму элементов списка (более 1 млн. элементов),
* используя для этого 10 потоков
*/
public static long sum(List<Long> numbers) {
final int threads = 10;
List<List<Long>> subLists = split(numbers, threads);
// TODO: make it work!
return ???;
}
private static List<List<Long>> split(List<Long> numbers, int parts) {
int size = numbers.size();
int subListSize = (int) Math.ceil((double) size / parts);
List<List<Long>> result = new ArrayList<>(parts);
for (int i = 0; i < parts; i++) {
int fromIndex = i * subListSize;
if (fromIndex >= size) {
result.add(Collections.emptyList());
} else {
int toIndex = Math.min((i + 1) * subListSize, size);
List<Long> sublist = numbers.subList(fromIndex, toIndex);
result.add(sublist);
}
}
return result;
}
#itone
Прислать задачу | Подписаться
❤1
Иннотех #repeat #sql #innotech
Прислать задачу | Подписаться
Даны две таблицы:
EMPLOYEES
-EMP_ID | NUMBER PK
-SURNAME | VARCHAR
-SALARY | NUMBER
-DEPARTMENT_ID | NUMBER FK
DEPARTMENTS
-DEPARTMENT_ID | NUMBER PK
-DEPARTMENT_NAME | VARCHAR
Получить список департаментов и среднюю з/п по департаменту, где средняя з/п по департаменту больше 5000.
Ожидаемый рез-т:
DEPARTMENT_NAME AVG_SALARY
HR 8000
IT 12000
Прислать задачу | Подписаться
❤1👍1