Технические вопросы на собеседовании.

Привет всем, Джаварашовцы!

Так уж случилось, что недавно я проходил собеседование и хотел бы рассказать, какие вопросы мне задавали предполагая, что идет позиция Junior++. Т.е. еще не мидл, но уже и не зеленый джун.

Так вот, собеседование проходило по такому плану
  1. JavaCore
  2. ООП
  3. REST
  4. Базы данных.
  5. Инструменты, которыми пользуешься.

JavaCore

  • Вначале меня попросили нарисовать иерархию интерфейсов у Коллекций.(Это было не сложно, там всего их несколько(Collection,List,Set,Queue,Map). )
  • В чем различие ArrayList и LinkedList(это один из замых заезженных вопросов и ответов в инетах просто тьма). Обсудили скорость выполнения запросов в них и какая разница между листами.
  • Вопрос про класс Object. какие у него методы, что они делают.
  • Рефлексия. что делает метод getClass(). Очень интересный вопрос, разберите его. Особенно про то, как получить всё про класс, пусть даже там приватные методы или переменные.
  • Спросили за многопоточность. Слабенько, как я считаю, так рассказать как ты понимаешь что такое многопоточность. Что нужно, чтоб запустить новый поток. Реально, если вы 20+ уровень, то эти вопросы для вас покажутся смешными.
  • Что можешь сказать про Stream. Это имеется в виду не про Java 8. Имеется в виду потоки ввода и вывода. Как базовые интерфейсы, какие они (символьные и байтовые). На понимание, никакой конкретики.
  • Исключения. Здесь опять-таки попросили нарисовать иерархию исключений, какие бывают, какие из них checked, а какие unchecked. Что нужно делать с Runtime исключениями. Назовите самое часто попадающее(NullPointerException)
  • Вопрос с тем, что нужно делать с checked исключениями(пробрасывать дальше или обработать — понятно и то и другое.)

ООП

  • Что такое ООП в двух словах?
  • Какие еще есть парадигмы программирования? В чем их различие от ООП
  • Какие основные принципы ООП?(наследование, полиморфизм и инкапсуляция) Рассказать про каждый из них. Пока всё абстракатно, не привязываясь к какому-то языку.
  • Задача на понимание проектирования систем: есть Лошадь и Птица. Нужно получить Пегаса. принцип «has a» и «is a»

REST

  • Что такое REST. В википедии об этом говориться очень круто. Реально статьи из википедии для ознакомления хватит
  • HTTP. Здесь тоже общие фразы. Его методы, для чего каждый из них.
  • Коды состояния HTTP. на какие пять частей делиться, расскажите про самые известные (200,204,404,500,501). Зачем они. Спросили еще про 401 и 403. Но я не знал их. Сказали они важные.

Базы данных

Здесь я рассказал, что знаю MySQL. Рассказал про три нормальные формы. Рассказал про Join'ы, какие бывают и нарисовал пересечение областей, в котором используются разные джоины. Рассказал про то, как я понимаю реляционную БД. Не забыл еще о про MongoDB — это NoSQL база данных. Через некоторе время я напишу и про это.

Другие Инструменты
Здесь мы прошлись по моем резюме. У меня было написано, что использую Maven/Gradle для сборки, использую JIRA для тасков, git, Docker, Swagger. Для Continuous Integration — Stash, Bamboo, Puppet. Для тестирования JUnit, Mockito, JMeter.


Я мог что-то забыть, поэтому если интересно — спрашивайте в комментариях постараюсь ответить.

Это была первая часть собеседования. Теперь жду результаты и если да, то будет вторая часть. Напишу о ней как только так сразу.
Всем кому статья понравилась и была полезна — ставьте "+". Пишите в комментариях.

См. также мои другие статьи:
Тестовое задание: «Написать Интерпретатор на язык BrainFuck»
Тестовое задание «Image Comparison»
Java — быстрее, сильнее и выше! Зарплаты украинских программистов.
История успеха спустя 1.5 года от начала обучения
Технические вопросы на собеседовании.
Как найти работу? Рассылка резюме
Профессиональное выгорание. Как устоять?
Английский для IT и для собеседования
Паттерн Command своими словами.
Паттерн Singleton своими словами.
Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA
Помогите, нужна мотивация!

Подписывайтесь на мой блог Паттерны Проектирования пишите в нем статьи!

18 комментариев

imp
  • imp
  • +2
Добрый вечер. Информация оч полезная :)
а на чем применяли инструменты тестирования и как ими овладевали?
Roman_kh
Да все по необходимости. Нужно было тестировать проект — начал использовать. Почитай в JUnit что делают аннотации и все будет понятно как использовать.
Cargeh
Вот тут поподробнее можно: Задача на понимание проектирования систем: есть Лошадь и Птица. Нужно получить Пегаса. принцип «has a» и «is a»?

Такое точно было на одной из лекций, но я уже ничерта не помню :)

И как-то не так трудно было, по-моему, для Джуна+ то.
Cargeh
И еще в добавок: это ты уже имея опыт работы подавал на эту вакансию или вообще с нуля?
Roman_kh
Не с нуля. Это первый жтап собеседования. Модет на втором будет слоднее, пока не знаю. В любом случае, если буду на нем — напишу после этого)
Cargeh
Ты все еще не ответил на первоначальный вопрос :)

Как именно подавалась «задача» про ООП? «Задача на понимание проектирования систем: есть Лошадь и Птица. Нужно получить Пегаса. принцип «has a» и «is a»?»
Roman_kh
Был вопрос про этот принцип, что он значит, как его объяснить.
А Построение Пегаса с ООП использовало и has a и is a)
Torin
честно, не гуглил ничего, да иногда и не хочется сильно к этому привыкать и полезно раскинуть самому мозгами. Лошадь и Птица это ведь классы с реализацией? ведь мы не можем наследоваться от обоих. потому что это будет множественное наследование (о нет, только не это!). Если Лошадь реализует интерфейс Скакэйбл, а Птица Летэйбл, то пегас мог бы просто реализовать оба этих интерфейса и стать летэйбл и скакэйбл одновременно. Но ведь в условии ты ничего не сказал про это, я правильно мыслю вообще?
Roman_kh
отчасти. Как ты думаешь в Пегасе что больше от Лошади или от птицы?
Torin
от лошади. Тогда наследуемся от Лошади и реализуем летейбл, да это логично, согласен
Roman_kh
Мы именно к такому и пришли)
karl93rus
Добавил в закладки. Спасибо! Я так понял, что ты уже работал ДО этого собеседования? То есть это не первое собеседование и не первое место работы?
Roman_kh
Не, не первое место. Я чейчас работаю уже Java разработчиком. Я это описал в статье про историю успеха
Torin
Было бы еще круто услышать про вопросы на собеседование андроид! в инетах сильно много данных, которые разняться, интересны локальные реалии
Roman_kh
К сожалению андроидом я не интересуюсь и не могу тебе что-то сказать явное.
valera7979
Всем кому статья понравилась и была полезна — ставьте "+".

обязательно поставлю, как только пойму как это делается))
Roman_kh
  • Roman_kh
  • 0
  • Комментарий отредактирован 2017-01-28 00:11:26 пользователем Roman_kh
В конце статьи рядом со значком поделиться)
valera7979
спс. за почти 2 года на форуме сам не смог найти эту волшебную кнопку))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.