Пособие для будущего Java разработчика. Собеседование По большому счету, вы можете найти это всё в интернете или поспрашивать у знакомых, но я считаю, что лишним не будет. Внизу пример собеседования на junior Java разработчика таким, каким был бы он сейчас, если бы интервьюером был я. Вопросы могут быть какими угодно, я лишь попробовал собрать что-то среднее по больнице. Представим, что вам повезло. Стандартная схема Шаг 1. Вам звонит рекрутер, и вы договариваетесь с ней об интервью, к примеру, завтра на 11:00. Шаг 2. Вы приходите раньше, так как 11:00 — скорее всего, время не для вас, а для разработчиков, у которых зарезервирована какая то комната, в которой вас будут пытать. Хорошим тоном любого рекрутера будет предупредить об этом. Шаг 3. На самом деле, начиная с шага 3, все пункты можно перемешивать, потому что собеседования могут проходить по-разному. К примеру, здесь вас могут спросить о базовых вещах, откуда вы родом, почему у нас, и так далее. Не исключено, что это может сделать сам HR, и конечно же, не исключено, что на английском. Право, это зависит от компании. Шаг 4. Вас приглашают в митинг-рум, где у вас будет разговор с одним, двумя, тремя людьми, один из которых будет либо сеньор, либо техлид, который в будущем будет работать с вами, среди остальных могут быть Scrum-мастер, другие разработчики либо HR’ы. Вас собеседуют какое-то время, затем жмут руку и отпускают. Шаг 5. Возможно, это будет на следующий день, а возможно, сразу же после шага 4 — у вас будет разговор с иностранным заказчиком (если такой имеется), а может, он сам и проведет интервью. Как видите, вариантов много. Где-то есть заказчики, где-то есть еще телефонное интервью. Это просто пример. Пример технического собеседования для Junior Java разработчика Мне очень жалко недоразработчиков, которые читают что-то умное с целью утопить/задавить/попонтоваться перед соискателем на интервью. Если вы видите, что перед вами такой человек, и чувствуете давление и напряжение с его стороны, незамедлительно посылайте его на три веселых, потому что после успешного прохождения с этим кретином придется работать. Не тратьте свои драгоценные нервы. Интервью, в первую очередь, должно проходить с целью узнать, что знает кандидат, а не то, чего он не знает. Естественно, если вам нужен человек, который знает что-то конкретное — спрашивайте его, не мучайте бесполезными вещами, которые не используете в проекте. Будьте людьми, в конце концов! Внизу приблизительные вопросы, которые могут попасться на интервью. По 5 вопросов для каждой технологии. OOP 1. Приведите пример полиморфизма из реальной жизни? В чем преимущества? Недостатки? Напишите простенький код. 2. Что такое интерфейс? Абстрактный класс? Зачем нужны интерфейсы, если можно тупо всё классами писать (немного провокации)?. То же самое — и про абстрактный класс. Что такое default методы в Java 8? 3. Постройте иерархию классов на конкретном примере воображаемой базы данных или программы (там список разных классов рабочих из базы данных) и взаимодействие между ними (aggregation, composition). 4. Чем composition отличиается от aggregation (is-a, has-a)? 5. Как можно обойти запрет на множественное наследование в Java? JDK/JRE 1. Чем JDK отличается от JRE? Что такое JVM? 2. Что такое classpath и для чего он нужен? Как, к примеру, загрузить другие классы в classpath? 3. Что вы знаете о classloader? 4. Расскажите о javadoc? Для чего он нужен? 5. Что такое JAR, WAR? Java Common 1. В чем отличие статических методов от не статических? Что такое final? 2. Что такое boxing-unboxing? byte b = 127, b++, какой результат и почему? 3. Что такое wrapper’ы, для чего это? 4. Что мне нужно сделать, чтобы создать свою аннотацию? Что такое overriding/overloading? 5. Почему класс String final? Что делает метод intern()? Data Structures 1. Расскажите о структуре Collections API в Java? Вы уже успели поработать с Stream API? 2. В чем отличие между ArrayList и LinkedList? Где лучше использовать ArrayList, а где LinkedList? 3. Расскажите как устроена HashMap? В чем особенности работы с TreeSet, HashSet? Имеете опыт с Guava коллекциями? 4. Массивы в Java, пример двумерного массива. 5. hashCode, equals на примере HashMap? Concurrency 1. Что такое процесс? Поток? Как создать поток? Что такое syncronized? Как понять этот или тот кусок кода thread-safe? 2. Что такое Thread.sleep, а также wait, notify, yield? 3. Приведите пример deadlock? 4. Коллекции при работе с многопоточностью. 5. ThreadLocal и Atomic операции SQL/JDBC 1. На конкретном примере достаньте из базы Users того, у которого salary больше, чем 5000. 2. Примеры INNER JOIN, OUTER JOIN, Order By, Group By. 3. Зачем нужен JDBC Driver? Примеры. 4. Расскажите всё, что знаете о ResultSet, парочка примеров. 5. Напишите простенькое DAO c применением RS. JPA/Hibernate 1. В чем недостатки и преимущества JPA? 2. Что такое EntityManager? Entity? 3. Критерии в JPA/Hibernate. 4. One-To-One, Many-To-Many в JPA/Hibernate 5. Как бы вы сделали JOIN в Hibernate? HQL? Spring 1. Что такое DI/IoC? Преимущества. 2. Что такое Application Context? Bean? 3. Как бывают типы IoC инициализации? 4. Singleton, Prototype в Spring? Annotation-based Spring? 5. Жизненный цикл бинов? Init-method, destroy-method? @PostConstruct, @PostDeploy? Maven 1. Основные фазы maven, жизненный цикл. 2. Как запускать maven с тестами, без тестов? Что такое archetype, mvn dependency? 3. Профайлы в maven, как создавать, как запускать. 4. Что такое snapshot в maven? Central/Remote репозитории? 5. Плагины в mvn, принцип работы, пару примеров. Algo 1. Понятие алгоритма, его скорость, Big-O-Notation. 2. Как найти средний елемент в LinkedList в один заход? 3. Напишите примитивный Stack? В чем разница между Stack и Queue? LIFO, FIFO? 4. Quick Sort, Merge Sort. 5. Напишите програмку, которая проверяет, является ли число палиндромом. Согласен, может, планка загнута чуть больше в сторону миддла, чем джуниора, но я думаю, что такая подготовочка вам точно не помешает. Старайтесь углубляться в каждый вопрос. Кстати, тут не указаны многие направления в Java, прошу учесть.

Теги других блогов: собеседование Java разработчик