Сбер
#sber
Прислать задачу | Подписаться
// Сервис определения типа мяча по ID мяча
// Известно, что:
// * Вызываемый сервис BallPropertiesService возвращает список свойств (List<BallProperty>) для одного мяча. Размер списка от 0 до 2^30.
// * Значения BallProperty.code от 0 до 9 описывают размер мяча (т.е. 0 - микроскопический, 9 - гигантский).
// * Значения BallProperty.code от 100 до 129 описывают материал мяча.
// * Значения BallProperty.code в других диапазонах существуют, но бизнес ценности в данном случае не несут.
// * Если в списке:
// - пришел проперти с кодом 7, то считаем, что мяч баскетбольный
// - пришел проперти с кодом 6, то считаем, что мяч футбольный
// - пришел проперти с кодом 5, то считаем, что мяч тенисный
// - пришел проперти с кодом 5 и еще проперти 102, то считаем, что это ядро
// - не пришло что-то из выше описанного, то считаем, что это мяч для пингпонга
// * Гарантируется, что если в списке присутствует BallProperty с кодом из какого-то диапазона, то не может
// быть в этом же списке BallProperty с другим кодом из этого диапазона (т.е. в одном списке не будет
// одновременно кодов 1 и 2)
// Что не так?
@Service
@RequiredArgsConstructor
public class BallTypeService {
private final BallPropertiesService ballPropertiesService;
public BallType getType(Long ballId) {
List<BallProperty> ballProperties = ballPropertiesService.getBallProperties(ballId);
ballProperties.sort(Comparator.comparing(BallProperty::getCode).reversed());
return resolveType(ballProperties);
}
private BallType resolveType(List<BallProperty> ballProperties) {
long propertyNum = ballProperties.get(0).getCode();
long propertyNext = ballProperties.get(1).getCode();
if (propertyNum == 102 && propertyNext == 5) {
return BallType.CANNON_BALL;
}
if (propertyNum == 7) {
return BallType.BASKET_BALL;
}
if (propertyNum == 6) {
return BallType.FOOT_BALL;
}
if (propertyNum == 5) {
return BallType.TENNIS_BALL;
}
return BallType.PING_PONG_BALL;
}
}
public enum BallType {
BASKET_BALL,
FOOT_BALL,
CANNON_BALL,
TENNIS_BALL,
PING_PONG_BALL;
}
// библиотечный код
@Data
public class BallProperty {
private Integer group;
private Integer code;
private String description;
}
public interface BallPropertiesService {
List<BallProperty> getBallProperties(Long itemId);
}
#sber
Прислать задачу | Подписаться
🤯4
Прошли 3 месяца 2026 года. Кто в этом году искал работу, как у вас дела?
❤️ - нашел работу
👍 - есть офферы, выбираю
🤔 - есть офферы, но не подходят, ищу дальше
👎 - есть собесы, офферов нет
😢 - нет ни собесов, ни офферов
🤯 - ушел/ухожу из айти
❤️ - нашел работу
👍 - есть офферы, выбираю
🤔 - есть офферы, но не подходят, ищу дальше
👎 - есть собесы, офферов нет
😢 - нет ни собесов, ни офферов
🤯 - ушел/ухожу из айти
😢96❤51👎51🤯15🤔12👍9
Кто устроился в 2025-2026 гг, сколько вы искали новую работу
(с момента выхода на рынок и до трудоустройства) ?
❤️ - меньше 2-х недель
👍 - меньше месяца
🤔 - два месяца
🤷♂️ - 4 месяца
👎 - 6 месяцев
😢 - 1 год
🤯 - больше года
(с момента выхода на рынок и до трудоустройства) ?
❤️ - меньше 2-х недель
👍 - меньше месяца
🤔 - два месяца
🤷♂️ - 4 месяца
👎 - 6 месяцев
😢 - 1 год
🤯 - больше года
🤔63🤷♂31👍30👎21❤12😢12😱11
WB #kotlin
#wilberries
Прислать задачу | Подписаться
@Component
class InterviewService(
private val scoreRepository: ScoreRepository,
private val transactionTemplate: TransactionTemplate,
private val interviewScoreMLService: InterviewScoreMLService,
) {
private val objectMapper = ObjectMapper()
/**
* Метод считает сколько очков заработал кандидат,
* сохраняет результат в базу и кидает callback об этом во внешний сервис
*/
fun process(c: Candidate) {
transactionTemplate.executeWithoutResult {
val s: Score = interviewScoreMLService.compute(c)
val request: Mono<ResponseEntity<Void>> = WebClient.create()
.post()
.body(BodyInserts.fromValue(objectMapper.writeValueAsString(c.name to s)))
.retrieve()
.toBodilessEntity()
scoreRepository.saveScore(s)
}
}
}
data class Candidate(
val name: String,
val tasksSolvedId: List<Int>,
)
data class Score(
val name: String,
val score: Int,
)
#wilberries
Прислать задачу | Подписаться
x5тех
#x5
Прислать задачу | Подписаться
public interface ProductCategoryService {
/**
* Метод вызывается 1 раз,
инициализирует сервис всеми товарами и категориями.
*/
void init(List<Product> products, List<Category> categories);
/**
* Проверяет принадлежность товара к категории,
может вызываться много раз и часто.
*
* @param productId идентификатор товара
* @param categoryId идентификатор категории
* @return {@code true} если товар принадлежит к категории,
в остальных случаях {@code false}и товар принадлежит к к
*/
boolean isProductInCategory(Long productId, Long categoryId);
/**
* Возвращает список товаров по категории.
* Товары должны быть отсортированы по имени.
* Может вызываться много раз и часто.
*
* @param categoryId идентификатор категории
* @return список товаров, принадлежащих к категории
или пустой список,
если к категории не принадлежит ни один товар
*/
Collection<Product> getProductsByCategory(Long categoryId);
}
public interface Category {
Long getId();
String getName();
}
public interface Product {
Long getId();
String getName();
List<Category> getCategories();
}
public class ProductCategoryServiceImpl implements ProductCategoryService {
/**
* Метод вызывается 1 раз,
инициализирует сервис всеми товарами и категориями.
*/
@Override
public void init(List<Product> products, List<Category> categories) {
//TODO implement
}
/**
* Проверяет принадлежность товара к категории,
может вызываться много раз и часто.
*
* @param productId идентификатор товара
* @param categoryId идентификатор категории
* @return {@code true} если товар принадлежит к категории,
в остальных случаях {@code false}
*/
@Override
public boolean isProductInCategory(Long productId, Long categoryId) {
//TODO implement
return false;
}
/**
* Возвращает список товаров по категории.
* Товары должны быть отсортированы по имени.
* Может вызываться много раз и часто.
*
* @param categoryId идентификатор категории
* @return список товаров, принадлежащих к категории
или пустой список,
если к категории не принадлежит ни один товар
*/
@Override
public Collection<Product> getProductsByCategory(Long categoryId) {
//TODO implement
return null;
}
}
#x5
Прислать задачу | Подписаться
❤1
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
Яндекс
#yandex
Прислать задачу | Подписаться
# Нужно посчитать скалярное произведение двух векторов, заданных в RLE‑виде: список пар (value, count).
#
# Пример из условия:
# [(1, 3)] — это вектор [1, 1, 1].
# [(1, 2), (10, 1)] — это [1, 1, 10].
#yandex
Прислать задачу | Подписаться
🤔13👎6
WB #sql #repeat
#wilberries
Прислать задачу | Подписаться
Есть таблица "employee" в которой записи про сотрудников, которые знают языки программирования
Name Lang
Nick C#
Nick SQL
Eva Rust
Vika Kotlin
Vika SQL
.... .....
Надо написать запрос? который выберет имена сотрудников, которые знают SQL и ещё хотя бы один любой язык. Считать, что один сотрудник — одно имя
#wilberries
Прислать задачу | Подписаться
👍2
Дижитал Сектор Поддержка
Прислать задачу | Подписаться
Есть сервис A и сервис авторизации B.
Чтобы вытащить аккаунты из сервиса B по REST используется класс DataService. У него есть 3 метода:
1. dataService.getCount() - возвращает кол-во аккаунтов (int)
2. dataService.getPersons(int from, int to) - возвращает упорядоченные по индексу аккаунты (Person) из сервиса B от from до to.
3. dataService.getAllPersons() - возвращает упорядоченные по индексу все аккаунты из сервиса
(Эти методы изменять нельзя)
Известно, что некоторые аккаунты имеют дополнительную нагрузочную информацию (Person.description), из-за чего ответ сервиса блокируется прокси-сервисом gateway по ограничению для тела ответа.
Реализовать получение всех валидных Persons, максимально быстро
Прислать задачу | Подписаться
❤1
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
cdit
Необходимо написать функцию, выполняющий сортировку массива пузырьковым методом
(сеньоры на месте?)
Прислать задачу | Подписаться
Необходимо написать функцию, выполняющий сортировку массива пузырьковым методом
Прислать задачу | Подписаться
😁20❤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
Сбер
#sber
Прислать задачу | Подписаться
/**
* Написать бинарное дерево Node с целочисленными значениями в узлах.
* Реализовать метод sum, принимающий на вход дерево и возвращающий сумму
* значений листьев.
*
* Пример дерева:
*
* 3
* / \
* 1 2
* /
* 4
*
* Листья: 2 и 4
* Ответ: 2 + 4 = 6
*/
class Main {
public static void main(String[] args) {
}
static class Node {
static int sum(Node node) {
return 0;
}
}
}
#sber
Прислать задачу | Подписаться
Тбанк
#tbank
Прислать задачу | Подписаться
Найти симметрическую разность двух отсортированных массивов целых чисел.
a = [1, 2, 3, 4]
b = [2, 4, 5, 6]
результат = [1, 3, 5, 6]
public static int[] getSymmetricDifference(int[] a, int[] b) {
}
#tbank
Прислать задачу | Подписаться
Реальные задачи с собеседований | Java
MerlionTech Что будет выведено? public class ExceptionTask { public static void main(String[] args) { testException(); } public static void testException() { try { throw new RuntimeException("Main Exception"); …
MerlionTech
Что будет выведено?
Прислать задачу | Подписаться
Что будет выведено?
public class LargeFileTask {
public static void main(String[] args) {
String fileName = "src/main/resources/static/EstimatedDeliveryTimeReport.xlsx";
FileInputStream bigFileInputStream = null;
try {
bigFileInputStream = new FileInputStream(filePath);
System.out.println("File opened successfully: " + fileName);
}
catch (IOException e) {
System.err.println("Error opening or reading the file: " + e.getMessage());
}
}
}
Прислать задачу | Подписаться
👍2
Райффайзен
Классические вопросы про работу транзакшнал
#raif | Прислать задачу | Подписаться
Классические вопросы про работу транзакшнал
@Service
final class PaymentService {
public void process(Payment payment) {
// ...
pay(payment.amount, payment.account);
}
@Transactional
private void pay(Amount amount, Account account) {
//....
}
}
#raif | Прислать задачу | Подписаться
😁6❤3👍1