Начинающему программисту легко потонуть в массе информации, находящейся в свободном доступе. Легко запутаться в требованиях к Java Junior разработчику. Что же на самом деле нужно знать и понимать, чтобы успешно пройти собеседование?
Java Junior девелопер: необходимые знания
- Как минимум нужно знать три принципа ООП, понимать, как они используются и зачем. Уметь на примерах объяснить, что такое инкапсуляция, полиморфизм и наследование.
- Java Core. Методы объекта Object. Это тот вопрос, который задают практически на каждом собеседовании. Без методов объекта Object вы вообще не можете считаться джава-разработчиком.
- Collections Framework. Здесь вы должны знать 3-4 основных интерфейса, для чего и как они используются. А также их основные реализации — по одной-две, максимум три имплементации, уметь рассказать как каждая из них используется, как работает, зачем и почему. Сюда же я отношу и все что касается работы с хеш-ключем и equals. Выясните, как работает HashMap. Что такое Backets. Если вы сможете детально рассказать про то, как это все работает, вы очень сильно выиграете в глазах вашего собеседователя. Про это все просто обожают спрашивать на собеседованиях.
- Multithreading. Я всегда говорил, что многопоточность — это не то, что нужно Java Junior девелоперу. Сейчас я немного пересмотрел свою точку зрения, так как во многих компаниях часто задают такие вопросы на собеседованиях. По большому счету, если мы говорим про энтерпрайз джава — многопоточность практически не используется, но почему-то многие собеседователи считают просто обязательным задать по этому поводу вопросы. Поэтому нужно разбираться в wait, notify, synchronized и пр. В интернете очень много информации по этой теме, вполне реально разобраться за день — ничего сложного тут нет. Обязательно по всему этому напишите хотя бы по одному примеру, что бы вы попробовали все это руками. Наш мозг запоминает информацию лучше, когда вы что-то попробовали на практике и потом вам будет намного легче это все объяснить.
- SQL. Если вы не знаете SQL вы вообще не джава-разработчик. SQL — наше все, потому что без реляционных баз данных нет даже нереляционных баз данных. Если на вашем проекте только нереляционные базы данных, то все равно знание знание реляционных баз данных абсолютно ультимативно. На чем учить? Я рекомендую PostgreSQL. Бесплатный, хорошо ставится, используется на очень многих энтерпрайз-проектах и с него легко перепрыгнуть на Oracle, который используется на всех остальных энтерпрайз-проектах.
- Hibernate. Вы безусловно должны знать этот фреймворк. Понимать, как пишется HQL, как что связано, что такое хибернейт сейшн и уметь им пользоваться.
- Раньше я говорил, что в вас есть выбор, учить вам стек JavaEE или Java Spring, сейчас выбора практически нет. Если вы джава джуниор — учите спринговый стек: Spring Core, Spring Boot, Spring Data и я бы рекомендовал Spring MVC.
- Rest-сервисы. Сейчас также ультимативным становится знание rest-сервисов. Хотя бы JSON, как на Spring MVC сделать рест-сервис.
На этом, собственно, и все. Этого достаточно для уровня Java Junior девелопер. Как показывает моя практика, это все можно выучить максимум за 3 месяца (если вы, конечно, стараетесь).