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

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

Прислать задачи, реклама - @privatevoidmain
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Тинькоф

/**
* API поиска авторов и их книг по имени автора (полное ФИО или часть имени в любом регистре).
* Также компонент при каждом поиске обновляет статистику по частоте использования поисковой строки (сбрасывается раз в сутки другой системой)
* При обнаружении популярного запроса (> 1000 запросов в сутки), по которому находится много авторов, отправляется алерт.
* Алерт должен отправляться не более 1 раза за сутки для каждого запроса
* Все классы на самом деле находятся в разных файлах, однако здесь представлены в одном месте для удобства
*/
@RestController
public class AuthorController {
@Autowired
private AuthorSearchService service;

@GetMapping("/authors")
public List<AuthorDto> readAllAuthors(@RequestParam String query) {
List<Author> authors = service.search(query);
return authors.stream().map(el -> {
return new Mapper().map(el);
}).collect(Collectors.toList());
}
}

@Component
public class AuthorSearchService {

@Autowired
private AuthorsRepository authorsRepository;
@Autowired
private StatisticsRepository statisticsRepository;

private AlertRestClient arc = new AlertRestClient();

// В query может быть как полностью ФИО, так и часть имени, например "Вадим Панов" или "панов"
@Transactional
public List<Author> search(String query) {
List<Author> authors = authorsRepository.findByNameContainingIgnoreCase(query);
Statistics s = statisticsRepository.findById(query).orElse(null);
if (s == null) s = new Statistics(query);
s.setNumbers(s.getNumbers() + 1);
statisticsRepository.save(s);
if (s.getNumbers() > 1000 && authors.size() > 1000) {
System.out.println("too popular search with too much data, sending an alert...");
arc.send(query, s.getNumbers(), authors.size());
}

return authors;
}
}


@Entity
@Data
public class Author {
@Id
@GeneratedValue
private Long id;

private String name;

@OneToMany(mappedBy = "author")
private List<Book> books;

public Author(String name) {
this.name = name;
}
}

@Entity
@Data
public class Statistics {
@Id
private String query;
private int numbers;

public Statistics(String query) {
this.query = query;
}
}


@Data
public class AuthorDto {
private Long id;
private String name;
private List<Book> books;
}


@Entity
@Data
public class Book {
private Long id;
private String name;
}

#tbank | Подписаться
Открытые решения (#repeat)

Что будет выведено на экран?
#opensolution | Подписаться
Астон

Получить из листа students лист books

public class Student {
private String name;
private List<Book> books;
}

List<Student> students;

List<Book> books =

#aston | Прислать задачу | Подписаться
ВКонтакте
// Нужно написать функцию, которая принимает на вход строку, 
// а на выходе возвращает для каждого уникального символа максимальное число его
// беспрерывных повторений.

// Input: aafbaaaaffc
// Output: a:4 b:1 f:2 c:1


class Solution {
public String solve(String input) {
}
}

#vk | Подписаться
Лига цифровой экономики #repeat

Найти первый неповторяющийся элемент
int[] arr = {9, 4, 9, 9, -1, 0, 6, 7, 4, 5, -1, 0};

#digitalleague | Подписаться
IT ONE (#repeat)
public class Main {

//Найти первый неповторяющийся элемент в массиве целых чисел
public static void main(String[] args) {
int[] arr = {9, 4, 9, 6, 7, 4, 5};
int[] arr2 = {9, 4, 9, 6, 6, 4, 5};

System.out.println(nonRepeatable(arr)); //6
System.out.println(nonRepeatable(arr2)); // 5

}

#itone
Авито

Напишите функцию генерирующую все возможные правильные скобочные последовательности из n пар скобок.

#avito | Подписаться
Астон

Что будет выведено при вызове методов?

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