Реальные задачи с собеседований | Java
3.53K subscribers
278 photos
36 videos
474 links
Буду сюда выкладывать реальные задачи и вопросы с собеседований, без копипаста с интернета и других каналов)

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

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

Какая сложность для операций?

public class HashmapTimeComplexity {

public static void main(String[] args) {
Map<KeyMap, String> msg = new HashMap<>();
KeyMap key = new KeyMap(200, "foo");


//в map добавляются 1...N разных элементов
//какая сложность алгоритма добавления ключа ниже
map.put(key, "123");
map.remove(key);
map.get(key);

}
}
record KeyMap(int first, String second) {

@Override
public int hashCode() {
return 42;
}
}

#sber | Подписаться
👍3
Точка банк (стажировка)

Вывести названия всех книг и фамилии их авторов (title, surname)
-- Создание таблицы авторов  
CREATE TABLE authors ( 
    id INT PRIMARY KEY AUTO_INCREMENT, 
    surname VARCHAR(255) NOT NULL, 
    name VARCHAR(255) NOT NULL, 
    patronymic VARCHAR(255) NOT NULL, 
    birth_date DATE, 
    country VARCHAR(100), 
    biography TEXT 
); 

-- Создание таблицы книг 
CREATE TABLE books ( 
    id INT PRIMARY KEY AUTO_INCREMENT, 
    title VARCHAR(255) NOT NULL, 
    author_id INT NOT NULL, 
    publish_date DATE, 
    isbn VARCHAR(20) UNIQUE, 
    pages INT, 
    FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE 
);

Далее доп задание - убирают NOT NULL у  author_id и FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE и спрашивают как теперь вывести все книги с авторами (даже если у книги нет автора)

#sql | Подписаться
3
Точка банк (стажировка)

Провести код-ревью

boolean containsStringInData(String csvFile, String str) throw IOException {

    BufferedReader reader = new BufferedReader(new FileReader(csvFile);
    ArrayList<String> list = new ArrayList();

    String line;
    while ((line = br.readLine()) != null) {
        list.add(line);
    }

    boolean result;
    for (String s : list) {
        if (s == str) {
            result = true;
        }
    }

    return result;
}


Подписаться
🤯42👍1😁1
ВК

import java.util.*;

public class MaxConsecutiveRepeats {

/**
* Функция принимает на вход строку и возвращает карту символов и максимального количества
* их последовательных повторений.
*
* @param input Входная строка.
* @return Карта, где ключ — уникальный символ строки, а значение —
* максимальное количество его последовательных повторений.
*
* Input: "aaffbaaaafcz"
* Output: {a=4, b=1, c=1, f=2, z=1}
*/
public static Map<Character, Integer> maxConsecutiveRepeats(String input) {


}

// Тестирование функции
public static void main(String[] args) {
String testString = "aaffbaaaafcz";
Map<Character, Integer> output = maxConsecutiveRepeats(testString);
System.out.println(output);
}


}

#vk| Подписаться
Иннотех

Вычислить средний возраст n лучших студентов. В age и avg могут прийти невалидные строки.

/**
* public class Student {
* public String name; // имя
* public String age; // возраст - это число типа "30", "54".
* public String avg; // средний балл - число с плавающей точкой "4.6", "1.0". Интервал оценок от "1.0" до "5.0".
* }
*/
public class StudentUtils {

// Вычислить средний возраст лучших n студентов.
public static double foo(List<Student> students, int n) {

return 0.0;
}
}


#innotech | Прислать задачу | Подписаться
1👍1
Иннотех

Решить проблему циклической зависимости

@lombok.RequiredArgsConstructor
@org.springframework.stereotype.Controller
class LeController {

private final AService a;

@GetRequest("/")
public String doGet() {
a.foo2();
return "ok";
}
}

@lombok.RequiredArgsConstructor
@org.springframework.stereotype.Service
class AService {

private final BService b;

public void foo() {
b.bar();
}

public void foo2() {
// ...
}
}

@lombok.RequiredArgsConstructor
@org.springframework.stereotype.Service
class BService {

private final CService c;

public void bar() {
c.barK();
}
}

@lombok.RequiredArgsConstructor
@org.springframework.stereotype.Service
class CService {

private final AService a;

public void barK() {
a.foo2();
}
}

#innotech | Прислать задачу | Подписаться
Магнит

Сделать рефакторинг

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Logger;

public final class Cat4 {

private static final int jumpsCount = 0;

private final DataSource dataSource;
private final String name;

public Cat4(String name, DataSource dataSource) {
this.name = name;
this.dataSource = dataSource;
}

public void doJumps(int jumpsCount) {
for (int i = 0; i < jumpsCount; i++) {
new Thread(new Runnable() {
public void run() {

doJump();

}
}).start();
}
}

public void doJump() {

jumpsCount++;
Logger.getLogger(Cat4.class.getName()).fine("Jump!");
}

public void doMeow() {
Logger.getLogger(Cat4.class.getName()).fine("Meow!");
}

public void doQuery(byte[] parameters) throws SQLException {
Connection conn = null;
Statement stmt = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
stmt.execute("insert into cats (name) values(" + new String(parameters) + ")");
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}

}

protected int getJumpsCount() {
int result = jumpsCount;
jumpsCount = 0;
return result;
}

public void finalize() {
jumpsCount = 0;
}

@Override
public boolean equals(Object otherCat) {
if (otherCat == this) {
return true;
}
if (!(otherCat instanceof Cat4)) {
return false;
}
Cat4 cat4 = (Cat4) otherCat;
return name.equals(cat4.name);
}

@Override
public String toString() {
try {
return "Cat4{" +
"name='" + name + '\'' +
", url=" + dataSource.getConnection().getMetaData().getURL() +
'}';
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}

#magnit | Прислать задачу | Подписаться
СБЕР

Сделать рефакторинг кода

@Transactional
public void process(String oldName, String newName) {
Long id = exec("select id from file where name='" + oldName + "'"); //выполнение запроса к БД
insert
processFile(oldName, newName); //переименование файла на диске
exec("update file set name='" + newName + "' where id = " + id);
}

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

*
Дан массив целых чисел, нужно найти непустой подотрезок (непрерывную подпоследовательность)
с заданной суммой target, либо сказать, что это невозможно.
findTarget([9, -6, 5, 1, 4, -2], 10) -> (2, 4)
(-1, -1) если такого нет
*

#yandex | Прислать задачу | Подписаться
👍31😱11
Инсайрес

Задача 1
Требования:
есть 2 связанные таблицы
1) таблица User; поля Id, Name;
2) таблица UserTask; поля Id, UserId, Name
Задание:
написать SQL запрос который вернет в обратном алфавитном порядке имена всех пользователей у которых более 5 задач
Условия:
без вложенных селектов

#sql
🔥1
ВК

/*
* Есть список событий, у которых в наличии поля с id этого события, временем старта события и временем завершения события.
* Нужно составить алгоритм выяснения, есть ли среди этих событий конфликтующие, то есть интервалы времени которых пересекаются.
* Если время старта одного события совпадает со временем окончания другого, то такие события будем считать пересекающимися.
* Примеры:
*
* Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=4, endTime=7}]
* Output: true
*
* Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=7, endTime=9}, {id="3", startTime=4, endTime=7}]
* Output: true
*
* Input: [{id="1", startTime=1, endTime=5}, {id="2", startTime=6, endTime=7}]
* Output: false
*
* Input: []
* Output: false
*/

public class ConflictFinder {

public boolean findConflicts(List<Event> events) {
return false; // TODO
}

public static class Event {
private final String id;
private final long startTime;
private final long endTime;

public Event(String id, long startTime, long endTime) {
this.id = id;
this.startTime = startTime;
this.endTime = endTime;
}

public String getId() {
return id;
}

public long getStartTime() {
return startTime;
}

public long getEndTime() {
return endTime;
}
}
}

#vk| Подписаться
👍1😱1
Реальные задачи с собеседований | Java
Инсайрес Задача 1 Требования: есть 2 связанные таблицы 1) таблица User; поля Id, Name; 2) таблица UserTask; поля Id, UserId, Name Задание: написать SQL запрос который вернет в обратном алфавитном порядке имена всех пользователей у которых более 5 задач…
Инсайрес

Задача 2
Требования:
Создать консольное приложение со следующей функциональностью:
- предлагает ввести размер массива сообщением "введите размер массива:"
- инициализирует целочисленный массив с заданным размером случайными значениями
- выводит массив в консоль с заголовком "инициализированный массив:"
- сортирует массив от меньшего к большему методом пузырька
- выводит массив в консоль с заголовком "отсортированный массив:"
Требование к коду:
- код должен соответствовать принципу единой ответственности

Задание:
- уточнить требования если необходимо
- оценить время выполнения задания
- написать и продемонстрировать код
👍1
Очень мало задач😏
1😁14
KVANDO Technologies

Напишите функцию, которая принимает на вход словарь, содержащий ключи и значения, и возвращает список всех пар "ключ-значение". Если значение является вложенным словарем, функция должна рекурсивно извлекать ключи и значения из него.

Вход:
data = {'a': 1, 'b': {'c': 2, 'd': {'e': 3}}, 'f': 4}

Выход: [('a', 1), ('с', 2), ('e', 3), ('f', 4)]

Подписаться
🤯1
Сбер #sql #repeat?

-- Две таблицы
-- Company: id, title, sector
-- Vacancy: id, id_company, name, salary

-- Написать запрос, который выведет список компаний из отрасли IT,
-- со средним доходом по вакансиям, названия которых содержат слово Java, более $1000

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