Реальные задачи с собеседований | Java
4.32K subscribers
288 photos
53 videos
2 files
574 links
Буду сюда выкладывать реальные задачи и вопросы с собеседований, без копипаста с интернета и других каналов)

Ссылка для друга - https://t.me/+K4vJFdalwlthYTQy

Прислать задачи, реклама - @privatevoidmain
Download Telegram
Сбер #sql

Какие индексы нужны для этих запросов?
CREATE TABLE products (
id SERIAL NOT NULL,
name TEXT(255) NOT NULL,
price FLOAT NOT NULL,
creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN
);

SELECT * FROM products WHERE price > 100 AND creation_time >= CURDATED - IN
SELECT * FROM products WHERE price > 1000;
SELECT * FROM products WHERE creation_time >= CURDATED - INTERVAL 1 WEEK;

#sber
Прислать задачу | Подписаться
Тбанк

1 Задачка с матрицей ин-тов найти максимальную сумму пересечения столбца и строки(все элементы из строки + все элементы из столбца) была аналогия типо ладья в какой-то клетке нужно максимум посчитать

2 проверить что односвязный список является палиндромом

#tbank
Прислать задачу
| Подписаться
😁4👍1
it one

1. классика с массивом

2. Как избежать дедлока?
private void move(Account a1, Account a2, int summa) {
synchronized (a1) {
synchronized (a2) {
// Проверки
a1.money = a1.money + summa;
}
a2.money = a2.money + summa;
}
}

Прислать задачу | Подписаться
Статистика для java-миддлов с hh🫡

Количество вакансий сократилось в два раза по сравнению с 2024 и в 5 раз по сравнению с 2021
😢54😁5👎2🔥1🤯1
статистика с hh для java-сеньоров🫡
😱26👎3🔥1
Альфа-банк

//1. напишите свою реализацию метода equals
class Person {
private String firstName;
private String surName;
private String secondName;

@Override
//напишите свою реализацию
}
}

#alfabank | Подписаться
👍1
Реальные задачи с собеседований | Java
Альфа-банк //1. напишите свою реализацию метода equals class Person { private String firstName; private String surName; private String secondName; @Override //напишите свою реализацию } } #alfabank | Подписаться
Альфа банк

//2. написать код чтобы найти чего нехватает, что лишнее и что поменялось
var old = Map.of("Коля", 1, "Петя", 5, "Таня", 4);
var fresh = Map.of("Коля", 3, "Вика", 7, "Таня", 4, "Ваня",9);


#alfabank | Подписаться
IT ONE #repeat


Найти всех сотрудников, у которых общий размер начислений превышает 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
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
Anonymous Poll
60%
Посмотреть результат
27%
0
9%
1-2
2%
3-5
1%
6-10
2%
больше 10
1
Реальные задачи с собеседований | Java
Альфа-банк //3. Что напишет программа? var al = Arrays.asList(1, 2, 3, 4, 5); var ll = new LinkedList<>(al); ll.add(6); al.add(6); log.info("al.equals(ll) = {}", al.equals(ll)); #alfabank | Подписаться
Альфа-банк

//4. сколько байт будет вынужден копировать процессор?
public static void main(String[] args) {
Random rand = new Random();
var list = new ArrayList<byte[]>(10);
for (int i = 0; i < 10; i++) {
ByteBuffer buffer = ByteBuffer.allocate(1 << 20);
rand.nextBytes(buffer.array());
list.add(buffer.array());
}
//превышаем capacity, сколько байт будет вынужден копировать процессор
ByteBuffer buffer = ByteBuffer.allocate(1 << 20);
rand.nextBytes(buffer.array());
list.add(buffer.array());
}

#alfabank | Подписаться
👎13🤔5👍2
Реальные задачи с собеседований | Java
Альфа-банк //4. сколько байт будет вынужден копировать процессор? public static void main(String[] args) { Random rand = new Random(); var list = new ArrayList<byte[]>(10); for (int i = 0; i < 10; i++) { ByteBuffer buffer = ByteBuffer.allocate(1…
Альфа-банк
//5. За какое время выполнится программа на машине с 1 cpu без HT?
static void sleepOneSecond() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args) {
try(var pool = new ThreadPoolExecutor(
/*core pool size*/ 2,
/*maximum pool size*/ 10,
/*keepAliveTime value and unit*/ 30, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(10))) {
var start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
pool.execute(Pool::sleepOneSecond);
//а если вот так?
/*
var t = new Thread(Pool::sleepOneSecond);
t.setDaemon(true);
pool.execute(t);
*/
}
Runtime.getRuntime().addShutdownHook(new Thread(() ->
log.info("Time taken: " + (System.currentTimeMillis() - start))));
}
}

#alfabank | Подписаться
👍1🤔1
Реальные задачи с собеседований | Java
Кто ищет работу, сколько у вас было техсобесов за эту неделю?
тооо есть... у вас в общем было как минимум 200 собеседований за эту неделю,
но мне прислали всего 4 задачи от двух подписчиков?🫡😆

Прислать задачу - @privatevoidmain
😁273🤔2
Альфа-банк
//6. провести ревью - всё ли здесь хорошо?
class Scratch {
private static final Logger log = getLogger(Scratch.class);
private static volatile boolean ready = false;
private static final Lock rLock = new ReentrantLock();
private static final Condition readyCondition = rLock.newCondition();

private static void waitAndLog() {

try {
rLock.lock();
log.info("rLock acquired, ready: {}", ready);
if(!ready)
readyCondition.await();
log.info("ready was awaited: {}", ready);
}
catch (InterruptedException e) {
throw new RuntimeException(e);
}
finally {
rLock.unlock();
}
}

public static void main(String[] args) {
new Thread(Scratch::waitAndLog).start();

try {
rLock.lock();
ready = true;
log.info("signal about ready");
readyCondition.signal();
}
finally {
rLock.unlock();
}
}
}

#alfabank | Подписаться
6
Какая-то контора из Казани, криптопроект

Набрали 80 человек в зум в одно время, всем дали задание на час, и кто смог, в конце включал демку и показывал результат и проходил на след. этап.

#unknown
Прислать задачу | Подписаться
😁34👎11🤯5😱1
Сбер

/**
* Описание задачи: Требуется реализовать REST endoint для получения списка страховых полисов, которые принадлежат заданному клиенту и являются оплаченными.
* Поскольку в системе существует очен (дальше он не дописал)
* требуется предусмотреть параметр для ограничения результата
**\

#sber
Прислать задачу | Подписаться
1🤔11😁41
Альфа банк

1) написать, что будет выведено в консоль

public class MainJava {

public static void main(String[] args) {
List.of("d2", "a2", "b1", "b3", "c")
.stream()
.map(s -> {
System.out.println("map: " + s);
return s.toUpperCase();
})
.anyMatch(s -> {
System.out.println("anyMatch: " + s);
return s.startsWith("A");
});
}
}

#alfabank
Прислать задачу | Подписаться
😁4
itone
На вход приходит список чисел, мы хотим посчитать сумму всех этих чисел,
хотим считать это быстро, из-за того, что список большой,решено считать сумму так:
мы изначально разбиваем входной список на части, используя для этого метод split
(на него время тратить не нужно, он здесь просто чтобы библиотеку никакую не тянуть).
Для чего это нам нужно: для того, чтобы каждый подсписок закинуть в отдельный поток где будет посчитана сумма и так 10 раз, когда 10 потоков отработают, мы просто собираем результаты, складываем и получаем итоговую сумму. Вот такая задачка (орфография сохранена)

/**
* Посчитать сумму элементов списка (более 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
Прислать задачу | Подписаться
2