Подготовка к собеседованию занимает важное место в процессе поиска первой работы. 1. По техскиллам - В интернете много сборников вопросов со собеседований, один из самых ходовых: https://github.com/enhorse/java-interview от ООП до раздела Тестирование включительно. Также я обычно просто гуглю по шаблону: interview + {topic} Hibernate, Spring, SQL, JDBC, Servlet API, Spring Boot, REST API, Git, Maven и тд + есть еще много приложения на мобильные устройства, опять же гуглить по: java interview, {topic} + interview Насчет тем которые наиболее часто встречаются: - сложность алгоритмов, какая у чего сложность, относительно структур данных (например вставка в начало или в средину линкедлиста/аррайлиста, какая сложность) и относительно алгоритмов (quick sort, merge sort, bubble sort какая сложность) - ООП - иерархия коллекций, какие там классы, интерфейсы, что от кого имплементит и наследует. Очень рекомендую 4 статьи: https://habr.com/en/users/tarzan82/posts/ Нужно хорошо понимать и уметь рассказать, можно хоть стене или зеркалу, главное вслух, как работают коллекции под капотом, особенное внимание уделить АррейЛисту, ЛинкедЛисту и особенно с акцентом на ХэшМапе, что и как именно происходит при добавлении, поиске. - equals/hashcode их контракт - методы Objects - иерархия эксепшенов с примерами, если позволяет опыт, уметь ответить зачем кастомные эксепшены, когда писали, от чего наследуете ваш кастомный эксепшен и почему - что такое immutable объекты, зачем они нужны, как их создать -По SQL если нет базовых знаний можно пройти https://www.codecademy.com/learn/learn-sql то что доступно бесплатно. По тренировке к собесам: https://sql-academy.org/en или sqlex, sqlzoo. - JDBC API, Hibernate, Spring Data, желательно реализовать CRUD на них, можно только персистенс лейер, для продвинутых - покройте тестами. - пирамида тестирования, TDD, FIRST, junit, Mockito - Servlet API, сервлет контейнеры, что происходит по шагам, когда веб-сервер получает запрос и до момента, когда отправляет ответ, как это все проходит внутри веб-сервера. - по БД реляционная модель, ACID, нормализация, уметь объяснить первые три нормальные формы, что такое транзакция, уровни изоляции транзакций в БД (read_commited и тд), проблемы чтения (phantom read и тд), оптимистик/пессимистик лок, N+1 и Cartesian product проблемы, если речь о джун позициях - то уметь рассказать о теме производительности БД, как можно ее улучшить. - SOLID принципы разобрать и понять, уметь определить когда они соблюдаются, когда нет. - дизайн паттерны - Stream API, functional interfaces - Spring MVC, Spring Boot, Spring Data, Spring Security - разбирать небольшие практические задачи, написать факториал, рекурсия, сортировку написать, на Stream реализовать обработку коллекции, 2. Не технические факторы Здесь тоже есть над чем работать. Банальные советы, но практика показывает многие их игнорируют: - относитесь к собеседованию не как к экзамену, а как к беседе на тему джава с другим девелопером, чтобы частично разгрузить стресс перед собесом - перед собеседованием настройтесь на доброжелательный и позитивный лад. Ищите и ловите свой дзэн - перед собеседованием всегда старайтесь выспаться, свежая голова очень важно (иными словами, до победного конца всю ночь учить - плохой вариант). Выспались, перед собесом легкое повторение. - развивайте уверенность в себе, классические ошибки по этому пункту выглядят так:
- Можно ли создать экземпляр абстрактного класса?
- Наверное нет..
Это тонкие моменты, но иногда лучше уверенно сказать неправильно, чем сомневаться в правильных, очевидных и очень простых вещах. - Если известна дата собеседования, распланируйте время. Определите те темы, которые вы бы хотели проработать, и сделайте график трезво оценив время на подготовку, чтобы вы успели и хвосты подтянуть (этим задачам больше времени) и повторить то, что хорошо знаете (на это выделить меньше времени). Такой график нужен для того чтобы не получилось так, что вы подтягивали "хвосты" и изучали то, что вас не спросили, а потом на собесе спросили то, что раньше хорошо знали, а вы не успели повторить. Подобный метод позволит вам повторить все темы, правило простое - исчерпался ваш установленный лимит времени на вопрос - переходите к следующему вопросу, чтобы не загрузнуть на каких-то темах. Также в плане подготовки к собеседованиям и систематизации знаний рекомендую каналы: - https://www.youtube.com/c/BobocodeUA/videos [UA] - https://www.youtube.com/c/EugeneSuleimanov [RUS] - https://www.youtube.com/user/KharkovITCourses/videos [RUS] (Иван Головач)