Тестовое собеседование Java разработчика #18 – Владислав Селицкий



Кандидат – Junior Java разработчик – Владислав Селицкий

00:00 Знакомство
02:41 Как устроена HashMap?
05:57 Отличие примитивных типов данных от ссылочных
07:56 Чем обусловлен диапазон допустимых значений “примитивов”?
09:04 Что такое лямбда?
10:06 С каким функциональным интерфейсом “работает” метод filter?
11:04 Что делает метод peek()?
11:50 Применение метода anyMatch() в Stream API
14:16 Задача по многопоточности
21:39 Как работает механизм CAS?
25:10 Применение принципа инкапсуляции в реальных системах
26:38 Решение алгоритмической задачи
40:06 Партиционирование в БД
40:28 Нормальные формы БД
41:09 Третья нормальная форма
42:24 Что такое ORM?
43:18 Кэширование в ORM?
45:13 Какую проблему решает Spring Framework?
46:04 Заключение

42 thoughts on “Тестовое собеседование Java разработчика #18 – Владислав Селицкий

  1. Собеседун – ты не прав с линейным временем в задаче. Сам факт использования мапы уже делает ее не линейной

  2. Вечер в хату!))) Уже не знаю у кого спрашивать такая задачка. Есть число double как округлять сотые больше меньше пяти
    2,4434 = 23,44
    2,4464 = 23,45
    Извините что не по теме в отчаяние.

  3. Лямбда – это не синтаксический сахар к анонимным классам, а вполне себе самостоятельное понятие.

  4. В решении кандидата критический баг – он кладёт элемент и потом делает contains – положим он положил 5, а сумма должна также 10 равняться, то он бы вернул [5, 5]. Ещё имхо большой косяк в том, что не покрыты эдж кейсы – нет таких элементов, длина входного массива меньше 2-х.

  5. в чем отличие собеседования junior от middle и senior??? Мне кажется вопросы везде одинаковые, разница лишь в глубине погружения в ответ или я не прав?

  6. Вот какой смысл спрашивать человека, который толком не понимает чем volatile отличается от AtomicInteger про механизм CAS? Евгений, мне кажется что видя квалификацию собеседуемого, вопросы нужно подстраивать под его уровень.

  7. set.contains(), скорее всего, работает log(n), в итоге получаем nlog(n) – не является линейной?

  8. Благодарю за работу! Как всегда, узнаю из собеса что-то новое! Однозначно лайк!

  9. какие тестовые очнитесь))) бля уже давно никто нигде никого не ждет тем более разработчиков , либо надо но это единицы!!!!

  10. Если в вузе на 3-м курсе по программистской специальности не рассказывают, что операция инкремента – это не атомарная операция, то чему вообще тогда там учат?

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

  12. Смотрел видео. Все что не знаю учил.
    Смотрю,ставлю на паузу,отвечаю сам,слушаю ответ и так себя анализирую.
    Оффер получил ))
    Евгению спасибо! Очень важное дело.
    Хотел было Евгению написать для собеседования ,но испугался алгоритмической задачи и чтобы сильно не бояться,начал делать и учить алгоритмию каждый день по чуть чуть)

  13. Вариант решения от кандидата не сработает, если массив будет [5, 7, 3, 2, 16].
    set.add нужно поставить после set.contains, иначе результат получится 5, 5.

  14. Будет ли такое решение задачки про многопоточность (14:16) верным?

    public class TestDrive {

    private volatile int i;

    synchronized void increment() {

    i++;

    }

    }

  15. Я же правильно понимаю: "хорошо" – ответ неправильный/неполный, "отлично"/"супер" – правильный? ))

  16. хотелось бы увидеть формат разбора собесодования – как лучше отвечать на какие вопросы, почему это спрашивают, что не так в ответе, как складывается впечатление о кандидате и тп

  17. у парня микрофон громче в 4 раза чем у тебя, когда ты задаешь вопросы приходиться громкость увеличивать, а когда он отвечает, приходится громкость уменьшать

  18. Долгожданное новое видео , прочитал комментарии ,нет жалоб на звук , видимо у меня какая то проблема, Евгения сильно хуже слышно .Ну и присоединюсь к сторонникам фидбэка, хотелось бы услышать результат .

  19. Без HashMap
    public static int[] twoSum(int[] nums, int target) {
    for(int i =0;i< nums.length; i++ ){
    int first =nums[i];
    if(first< target){
    int second = target – first;
    for(int j =i+1;j< nums.length; j++){
    if(second == nums[j]){
    return new int[]{first, nums[j]};
    }
    }
    }

    }
    return new int[]{0};
    }

  20. Отличное видео, спасибо), но задача была решена неверно (вариант Евгения работает), поскольку, если вставить в заданный массив на нулевую позицию 5 – даст неверный результат.

  21. Если готовиться "по рынку" к собесам, то довольно не классическое интервью ) Ибо акценты будут смещены, а это важно, когда впереди как минимум десяток собесов.

  22. Женя, а можешь фидбек сразу давать? Хотя бы краткий типа здесь хорошо, здесь подтянуть, на мидла (джуна) тянешь/не тянешь)))

  23. вопрос к Евгению Сулеймайнову, и чем же твой метод в худшем случае отличается от самого обычного прохода при сравнении (i) элемента от элементов начиная с (i+1) ??

    оберткой в Integer, потом у них высчитывании хэшкода, потом памяти под хэшсет.

    почему в рамке одного массива не пройтись?

Leave a Reply

Your email address will not be published. Required fields are marked *