Тестовое интервью в Сбер на Middle Java с лайв-кодингом

preview_player
Показать описание
Интервьюер: Роман Половинцев, работал TeamLead'ом в Сбер, Т-Банк, Райффайзенбанк и ВТБ

Вопросы в собесе:
00:00:00 - Секция лайв-кодинга
00:26:13 - Как ORM взаимодействует с базами данных?
00:27:35 - Что такое JDBC?
00:27:54 - Что такое проблема N+1 в Hibernate и как ее избежать?
00:28:22 - Базы данных в широком смысле
00:30:50 - Что такое индексы в базах данных и для чего они используются?
00:31:12 - Можно ли поставить индекс на каждую колонку?
00:31:31 - Какие критерии следует учитывать при выборе индекса в базе данных?
00:33:16 - Решение задачи
00:36:18 - Spring Framework
00:36:54 - Что происходит при запуске Spring-приложения?
00:37:36 - Что такое общий контекст?
00:37:56 - Как Spring определяет, какие бины нужно создать, а какие нет?
00:41:06 - Аннотация @ComponentScan
00:42:39 - Как работают транзакции в базах данных?
00:43:38 - Что делает аннотация @Transactional?
00:45:43 - Что такое авторизация и как она работает?
00:46:20 - Как работает авторизация через JSON Web Token (JWT)?
00:47:24 - Что такое Garbage Collector и как он работает?
00:49:10 - Какие существуют коллекции и как они используются?
00:50:15 - В чем разница между ArrayList и LinkedList?
00:52:19 - Что такое HashSet и как он работает?
00:53:21 - Что такое стримы (Streams) и как они используются?
00:54:20 - Какие бывают промежуточные и терминальные операции?
00:55:27 - Что такое исключения и как они обрабатываются?
00:57:07 - Что такое ‘try’ с ресурсами (try-with-resources)?
00:58:12 - Какой у вас был опыт работы с Apache Kafka?
00:58:48 - Что такое Apache Kafka и для чего она используется?
01:03:25 -Что такое ШОРТКАТ
01:07:45 - Обратная связь после интервью
01:10:56 - Нужно ли что-то оплачивать после мок-интервью?
01:11:38 - Учитывается ли опыт работы 1С разработчика при собеседовании на позицию Java-разработчика?
01:12:10 - Опыт Григория
01:13:19 - Проводятся ли собеседования на английском?
01:13:55 - Какие технологии нужно знать для уровня Middle и Middle+ Java-разработчика?
01:15:45 - Задают ли эти вопросы на собеседовании для уровня Middle+?
01:16:37 - Что еще можно спросить про Apache Kafka?
01:17:46 - Имеет ли значение сертификат от Oracle по Java (OCA)?
01:17:58 - В каких случаях @Transactional не откатит транзакцию назад?
01:19:15 - Какие требования предъявляются к позиции Senior Java Developer?
01:20:04 - Спрашивают ли на собеседовании про виды индексов в базах данных?
01:21:27 - На что делать упор при подготовке к собеседованию в финтех-компанию?
01:22:56 - Какие преимущества и недостатки использования Spring Cloud?
01:23:31 - Какие шаблоны проектирования должен знать разработчик уровня Middle?
Рекомендации по теме
Комментарии
Автор

Обратная связь после собеса и полезные статьи для Middle-разработчика

Делимся обратной связью после этого собеседования от ментора Романа.

Что понравилось после открытого собеседования:
- Хорошо рассуждал на темы которые не знаешь
- Быстро решил задачу
- Хорошие знания по Java Core

Темы которые надо подтянуть:
- Java Core, надо погрузиться в Stream API, Functional Interface
- Работу с БД (JBDC, ORM, Hibernate, проблема N+1 и как ее решать, SQL, ACID)
- Spring Boot (Как работает, какие аннотации за что отвечают, как работает аннотации Transactional)
- Spring Security (Как работает, на каком паттерне все построено, какие есть видны авторизации, JWT)

Что посмотреть:

Что почитать:
- Философия Java. 4-е полное изд. | Эккель Брюс
- Apache Kafka. Потоковая обработка и анализ данных, 2-е издание | Шапира Гвен, Палино Тодд
- Микросервисы. Паттерны разработки и рефакторинга | Ричардсон Крис
System Design. Подготовка к сложному интервью | Сюй Алекс

shortcut_sh
Автор

Первая задача. Мой вариант:
1. Считаем сумму всех чисел в массиве.
2. Считаем ожидаемую сумму исходя из длины входного массива ( ? = n * (n + 1) / 2, где n = длина массива)
3. Вычитаем первое из второго.
3.1 В ответе 0, значит удалено число n+1
3.2 В ответе искомое.

Alex.Polyakov
Автор

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

MarselGaisin
Автор

по первой задачке 5:29 решение на основе суммы врифметической прогрессии 17:12 public int findNumber(int[] array) {
int N = array.length+1;
int sum1 = (1+N)*N/2;
int sum2 =0;
for(int i=0; i < N-1; i++) {
sum2= sum2 + array[i];
}
return sum1 - sum2;
} правда опять же надо вывести/знать форму суммф арифм прогрессии (a1+an)*n/2

RuslanMurzin-uzfj
Автор

Хороший набор вопросов для Java-собеса, спасибо)
Жаль, интервьюер не ответил на часть вопросов, ответы на которые не знал собеседуемый.

И укажите в описании что-то, кроме формы заявки на интервью (телеграм канал или что-то аналогичное) - а то есть ощущение, что новые записи собесов появляются как будто из ниоткуда

hurricane-rus
Автор

Почему сложность первого решения первой задачи О(N) ? Когда в цикле перебираются элементы от 1 до N. Ещё внутри цикла неявный цикл в .contains. Вроде, сложность будет O(N^2) с хэшсетом.

nikolaygolosin
Автор

Вызывает удивление, что кандидат на мидл позицию так решает алгоритмическую задачу. Волнение разве что.

Ilya_voin
Автор

К алгоритмическим задачам никто не готовился, очевидно.

ЕвгенийП-дл