Обратная связь после собеса и полезные статьи для Middle-разработчика Делимся обратной связью после этого собеседования от ментора Романа. Что понравилось после открытого собеседования: - Хорошо рассуждал на темы которые не знаешь - Быстро решил задачу - Хорошие знания по Java Core Темы которые надо подтянуть: - Java Core, надо погрузиться в Stream API, Functional Interface - Работу с БД (JBDC, ORM, Hibernate, проблема N+1 и как ее решать, SQL, ACID) - Spring Boot (Как работает, какие аннотации за что отвечают, как работает аннотации Transactional) - Spring Security (Как работает, на каком паттерне все построено, какие есть видны авторизации, JWT) Что посмотреть: - Лекции по Java (th-cam.com/video/QGHGR0xEcFA/w-d-xo.html, th-cam.com/video/q-d40ZWGcJQ/w-d-xo.html) - Лекции про многопоточность (th-cam.com/video/kbERSWTGtKw/w-d-xo.html) - Видео по Spring Boot (th-cam.com/video/rd6wxPzXQvo/w-d-xo.html, th-cam.com/video/DKNDU7OjyJs/w-d-xo.html) - Лекции по Kafka ((Базовая информации про кафку: th-cam.com/video/hbseyn-CfXY/w-d-xo.html), th-cam.com/video/4pWAgB4wzhU/w-d-xo.html, th-cam.com/video/QvIM_SJzS5M/w-d-xo.html, th-cam.com/video/FQnPMb0jit0/w-d-xo.html) Что почитать: - Философия Java. 4-е полное изд. | Эккель Брюс - Apache Kafka. Потоковая обработка и анализ данных, 2-е издание | Шапира Гвен, Палино Тодд - Микросервисы. Паттерны разработки и рефакторинга | Ричардсон Крис System Design. Подготовка к сложному интервью | Сюй Алекс
по первой задачке 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
Почему int N = array.length+1? Ведь если на входе [1, 2, 3, 5], то получится у тебя (1 + 5) * 5 / 2 = 15, сумма чисел в массиве 10. 15 - 10 = 5, а это неверный ответ.
Первая задача. Мой вариант: 1. Считаем сумму всех чисел в массиве. 2. Считаем ожидаемую сумму исходя из длины входного массива ( ? = n * (n + 1) / 2, где n = длина массива) 3. Вычитаем первое из второго. 3.1 В ответе 0, значит удалено число n+1 3.2 В ответе искомое.
Почему сложность первого решения первой задачи О(N) ? Когда в цикле перебираются элементы от 1 до N. Ещё внутри цикла неявный цикл в .contains. Вроде, сложность будет O(N^2) с хэшсетом.
Хороший набор вопросов для Java-собеса, спасибо) Жаль, интервьюер не ответил на часть вопросов, ответы на которые не знал собеседуемый. И укажите в описании что-то, кроме формы заявки на интервью (телеграм канал или что-то аналогичное) - а то есть ощущение, что новые записи собесов появляются как будто из ниоткуда
Обратная связь после собеса и полезные статьи для Middle-разработчика
Делимся обратной связью после этого собеседования от ментора Романа.
Что понравилось после открытого собеседования:
- Хорошо рассуждал на темы которые не знаешь
- Быстро решил задачу
- Хорошие знания по Java Core
Темы которые надо подтянуть:
- Java Core, надо погрузиться в Stream API, Functional Interface
- Работу с БД (JBDC, ORM, Hibernate, проблема N+1 и как ее решать, SQL, ACID)
- Spring Boot (Как работает, какие аннотации за что отвечают, как работает аннотации Transactional)
- Spring Security (Как работает, на каком паттерне все построено, какие есть видны авторизации, JWT)
Что посмотреть:
- Лекции по Java (th-cam.com/video/QGHGR0xEcFA/w-d-xo.html, th-cam.com/video/q-d40ZWGcJQ/w-d-xo.html)
- Лекции про многопоточность (th-cam.com/video/kbERSWTGtKw/w-d-xo.html)
- Видео по Spring Boot (th-cam.com/video/rd6wxPzXQvo/w-d-xo.html, th-cam.com/video/DKNDU7OjyJs/w-d-xo.html)
- Лекции по Kafka ((Базовая информации про кафку: th-cam.com/video/hbseyn-CfXY/w-d-xo.html), th-cam.com/video/4pWAgB4wzhU/w-d-xo.html, th-cam.com/video/QvIM_SJzS5M/w-d-xo.html, th-cam.com/video/FQnPMb0jit0/w-d-xo.html)
Что почитать:
- Философия Java. 4-е полное изд. | Эккель Брюс
- Apache Kafka. Потоковая обработка и анализ данных, 2-е издание | Шапира Гвен, Палино Тодд
- Микросервисы. Паттерны разработки и рефакторинга | Ричардсон Крис
System Design. Подготовка к сложному интервью | Сюй Алекс
по первой задачке 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
один проход и никаких сравнений
тоже это первое в голову пришло
Не обязательно знать формулу прогрессии, можно просто в цикле складывать все числа, увеличивая последующее на 1
Почему int N = array.length+1? Ведь если на входе [1, 2, 3, 5], то получится у тебя (1 + 5) * 5 / 2 = 15, сумма чисел в массиве 10. 15 - 10 = 5, а это неверный ответ.
да, однозначно стоит отвечать коротко на вопросы которые не знает собеседуемый) прям буквально парой слов
Приятный интервьюер
Первая задача. Мой вариант:
1. Считаем сумму всех чисел в массиве.
2. Считаем ожидаемую сумму исходя из длины входного массива ( ? = n * (n + 1) / 2, где n = длина массива)
3. Вычитаем первое из второго.
3.1 В ответе 0, значит удалено число n+1
3.2 В ответе искомое.
Почему сложность первого решения первой задачи О(N) ? Когда в цикле перебираются элементы от 1 до N. Ещё внутри цикла неявный цикл в .contains. Вроде, сложность будет O(N^2) с хэшсетом.
Хороший набор вопросов для Java-собеса, спасибо)
Жаль, интервьюер не ответил на часть вопросов, ответы на которые не знал собеседуемый.
И укажите в описании что-то, кроме формы заявки на интервью (телеграм канал или что-то аналогичное) - а то есть ощущение, что новые записи собесов появляются как будто из ниоткуда
Вызывает удивление, что кандидат на мидл позицию так решает алгоритмическую задачу. Волнение разве что.
К алгоритмическим задачам никто не готовился, очевидно.