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

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

Прислать задачи, реклама - @privatevoidmain
Download Telegram
Альфа-банк

//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
ВТБ #sql

Таблица orders {id, client_id, amount}, таблица client {id, name} -
Как найти клиентов с самой большой суммой?

#vtb
Прислать задачу | Подписаться
😁8🔥1
unknown company #sql

Есть две таблицы:
-таблица department с полями
department_id,
department_name.

- таблица employee с полями
employee_id,
first_name,
last_name,
salary,
department_id


1. Написать запрос, который выводит имя, фамилию сотрудника, название отдела и его зарплату
2. Добавить колонку со средней зарплатой по отделу в котором работает сотрудник
3. Вывести по три наиболее оплачиваемых сотрудников из каждого отдела.

#unknown
Прислать задачу | Подписаться
WB #sql

таблица employee

| name | lang |

——————————-—————————-

| Nick | C# |

| Nick | SQL |

| Eva | Rust |

| Vika | SQL |

| Ivan | Java |

| Ivan | SQL |


Надо написать запрос который выберет имена сотрудников, которые знают SQL и ещё хотя бы один любой язык. Считать, что один сотрудник — одно имя.

#wilberries
Прислать задачу | Подписаться
👍51