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

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

Прислать задачи, реклама - @privatevoidmain
Download Telegram
Реальные задачи с собеседований | Java
Кто ищет работу, сколько у вас было техсобесов за прошлую неделю?
Сколько собесов было у подписчков за прошлую неделю: как минимум 100

Сколько задач прислали админу:
😁64❤7😢4🤔1
Тбанк
/*
* Дан массив временных интервалов совещаний intervals,
* где intervals[i] = [start, end].
* Найти минимальное количество переговорных комнат,
* необходимых для проведения всех совещаний без конфликтов.
*
* Примеры:
* [[0,30],[5,10],[15,20]] -> 2
* (первое совещание пересекается со вторым и третьим)
*
* [[7,10],[2,4]] -> 1
* (совещания не пересекаются)
*
* Ограничения:
* 1 <= intervals.length <= 10^5
* 0 <= start < end <= 10^6
*
* Доп. задача: решить за O(n log n)
*/
public int minMeetingRooms(int[][] intervals) {
// TODO
}

#tbank
Прислать задачу | Подписаться
❤1
Сбер
//Дан список слов, удалить дубликаты-анаграммы, оставив первое вхождение.
//Сравнение без учёта регистра.

public static void main(String[] args) {
List<String> anagrams = List.of("Race", "NIgHt", "Angle", "CaRe", "angel", "ThiNG");
System.out.println(removeAnagrams(anagrams));
// Ожидаемый результат: ["Race", "NIgHt", "Angle"]
}

#sber
Прислать задачу | Подписаться
🔥5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Всех с окончанием рабочей недели)

#fridaymemes
😁28😱2😢2
классика со сбера:

1) Написать минимальный код который выведет stackOverFlow
2) Написать свой stack с методами peek, pop, и вывод максимального значения стека

#sber #repeat
Прислать задачу | Подписаться
❤7
Сбербанк.

Дан класс User, который внутри имеет поля String name, int age:
public class User {
private String name;
private int age;
}

Для этого объекта реализованы equals(), hashCode(), а также геттеры и сеттеры. Используется аннотация @Data.

Ниже программный код:
public static void main(String[] args) {
Map<User, String> map = new HashMap<>();
User user = new User("Ivan", 25);

map.put(user, "Premium_Account");
user.setAge(26);

map.put(user, "Ultra_Account");

System.out.println("Result1: " + map.get(user));
System.out.println("Result2: " + map.containsKey(user));
System.out.println("Result3: " + map.size());
}

Расскажи, какие результаты будут отображены на консоль и почему?

#sber
Прислать задачу | Подписаться
😁12❤1👎1
Кукодинг

Всех с окончанием рабочей недели
#fridaymemes
😁27😢1
Сбербанк

Задача на проектирование системы.

Дан файл, который имеет размерность, скажем, более 2 GB.
Содержимое файла - своего рода толковый словарь.
Разделителем между словом и его описанием выступает символ табуляции: "Слово\tОписание".

В файле находятся дубликаты. Нужно его отсортировать и вернуть клиенту обратно.

Пример файла:
Банк Кредитно-финансовое учреждение
Коллапс Внезапное сильное падение кровяного давления
...

Вопросы:
1) Расскажи, какие технологии будешь использовать? Как будешь решать задачу?
2) Напиши программный код на Java.

#sber
Прислать задачу | Подписаться
👍1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Всех с окончанием рабочей недели
#fridaymemes
😁31❤5👏4😱1😢1💩1
яндекс #repeat (прислали 2 подписчика)

Реализовать описанный функционал и тесты к нему.
/**
* Банкомат.
* Инициализируется набором купюр и умеет выдавать купюры для заданной суммы, либо отвечать отказом.
* При выдаче купюры списываются с баланса банкомата.
* Допустимые номиналы:
* - 50₽, 100₽, 500₽, 1000₽, 5000₽.
* - 20 EUR, 100 EUR, 500 EUR
*
* Каждая валюта обрабатывается отдельно, обмен валют банкоматом не поддерживается.
*
* Банкомат может использоваться многопоточно (например, резервирование выдачи денег из приложения).
* Поддержку многопоточности можно вынести в отдельную итерацию.
*/

public class ATM {

public ??? withdraw (???) {
//TODO
}
}


#yandex
Прислать задачу | Подписаться
👍4💩1
This media is not supported in your browser
VIEW IN TELEGRAM
Ситуация, которая может случиться с каждым


Всех с окончанием рабочей недели
#fridaymemes
😁23💩8😢5❤1
x5

Необходимо реализовать сервис для работы с каталогом товаров.
Метод init вызывается один раз модератором для сохранения данных в системе (жестких требований к быстродействию нет).
После отработки метода init пользователи начинают обращаться в два других метода (высокий RPS, требуется быстрый ответ методов)


public interface Category {
Long getId();
String getName();
}

public interface Product {
Long getId();
String getName();
List<Category> getCategories();
}


public class 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
}

/**
* Возвращает список товаров по категории.
* Товары должны быть отсортированы по имени.
* Может вызываться много раз и часто.
*
* @param categoryId идентификатор категории
* @return список товаров, принадлежащих к категории
* или пустой список,
* если к категории не принадлежит ни один товар
*/
@Override
public Collection<Product> getProductsByCategory(Long categoryId) {
//
//TODO implement
}
}

#x5tech
Прислать задачу | Подписаться
❤2👍1
Recordlinker

Write a simple tool to normalize company names that reads stream of lines (one company name per line) and outputs a stream of tab separated pairs (old name\tnormalized name)

Rules do not imply order and case insensitive

Should be lowercase

Trim unnecessary spaces and remove duplicate spaces

Filter out lines prefixed with "xx", "donotuse", "DO NOT USE"

Normalize terms:
"insurance" from "ins", "insur", "insuran", "insuranc"
"company" from "companies", "comp", "co", "corp", "company inc"

spell out year
"2006" as "two thousand six"

fix spelling
"Ameican" -> "American"
"Adminstrative" -> "Administrative"

Remove punctuation

Replace "&" with " and "

Keep only unique results

Sort by normalized names, then by original name



"ABRDN COMPANY TWO THOUSAND SIX",
"PROTECTIVE INSURANCE COMPANY",
"donotuseHULL & COMPANY INC",
"Rochdale Insurance Co.",
"Scottsdale Ins. Co. ",
"CRC- UMB CAMP (2006)",
"ABRDN CO. 2006",
"Adminstrative&Services Group",
" Great Ameican Insurance Co.",
"Fidelity & Deposit Companies",
"DO NOT USE-Less than A rated",
"ROCHDALE INSURANCE CO.",
"Fidelity Investments Institutional Services Co, Inc."

Прислать задачу | Подписаться
🤯7❤3
ВК
/**
* Есть два ступенчатых графика некоторых наблюдаемых величин, заданных отсортированными списками
* координат начала ступенек (<время измерения>, <значение>). Подразумевается, что величина сохраняет
* своё значение между измерениями. До первого измерения величина равна нулю.
* Требуется построить новый график, который будет являться суммой двух представленных.
* Т.е. построить график, на котором для каждой точки (измерения) из первого и второго графика
* есть соответствующая точка.
* <p>
* Напишите функцию, которая по двум заданным массивам измерений вернёт сумму двух представленных
* массивов.
* <p>
* Input: a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}})
* Output: {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}}
*/
public class Template12 {

public static void main(String[] args) {
var res12 = stepSumWithMemory(new int[][]{{1, 2}, {3, 6}, {5, 1}}, new int[][]{{2, 4}, {3, 6}, {9, 7}});
System.out.println(res12.stream().map(Arrays::toString).collect(Collectors.toList()));
}

public static List<int[]> stepSumWithMemory(int[][] first, int[][] second) {
// todo
}
}

#vk
Прислать задачу | Подписаться
💩2
Сбер
@Data
@AllArgsConstructor
public static class Person {

public Integer id;
public String firstName;
public String secondName;
public String lastName;
}




@Test
public void test() {
List<Person> persons = new ArrayList<>();
persons.add(new Person(1,"Ivan","Vasya","Petr"));
persons.add(new Person(2,"Ivan","Vasya","Petr"));
persons.add(new Person(3,"Ivan","Vasya","Petr"));
persons.add(new Person(4,"Ivan","Gupta","Ivan"));
persons.add(new Person(5,"Petr","Rama","Igor"));

Collection<Person> uniquePersons = unique(persons);
assert uniquePersons.size() == 3;
}

//Unique collection by combination first-second-last names
public static Collection<Person> unique(List<Person> persons){
//Реализовать
}

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