Обзор курсов по Java от NetCracker в КПИ

О курсах компании Netcracker мне рассказал друг с просьбой сходить раньше его на собеседование и рассказать, как там и что спрашивали. В итоге меня взяли, а его – нет.

На собеседовании в основном спрашивали основы ООП и базы данных (SQL), также были вопросы по синтаксису Java. Спрашивали об опыте написания каких-либо проектов и о технологиях, которые я использовал и изучил.

Бекграунд до этого

Заинтересовался программированием и начал активно изучать Java в 2015 году. Летом 2015 создал аккаунт на github, стараюсь выкладывать туда все, над чем работаю. Кроме различных книг по разработке, очень помогают онлайн курсы на платформах coursera/udemy/pluralsight. До курсов у меня были различные проекты с использованием таких технологий, как JavaEE/Servlets/JSP/JDBC, Spring, Hibernate, Thymeleaf, Spock, Maven, Gradle, AngularJS, Angular 2, Docker, MySQL, PostgreSQL, Oracle, Git, JUnit.

Основные критерии отбора

Основным критерием, на мой взгляд, была адекватность и компетентность желающих пройти отбор. Уверенные знания Java SE и способность писать простые SQL запросы. Думаю, плюсом было наличие pet-projects в открытом доступе на GitHub/BitBucket.

Как проходили курсы

По результатам собеседования я попал в сильную группу, занятия проходили по сокращенной программе (без повторения синтаксиса Java). Курсы проходили один раз в неделю, занятие длилось 3 часа. Рассказывали в основном о базе данных Oracle, также о Java EE и архитектуре Enterprise Java приложений. По программе курсов самой интересной для меня частью было изучение работы Oracle и написание SQL запросов под эту базу данных. По части Java EE ничего нового не узнал, в основном это были JSP/Servlets и EJB. На каникулах в январе выслали задание написать небольшой проект, залить его на хостинг и скинуть ссылку на проверку. Цель – самостоятельное изучение Spring и практика написания Java web-приложения.

Интересной задачей было написание проекта на защиту в конце курсов. Группу advanced поделили на две команды, обе команды получили одинаковое задание. Единственным ограничением был запрет использования каких-либо ORM, для того чтобы проявить умение составлять SQL запросы. Так что это был шанс проявить все накопленные навыки и применить изученные технологии. Я вызвался исполнять роль тимлида и предложил стек технологий для проекта, сошлись на backend: spring, maven; frontend: angular2, webpack. Решили написать single-page app с ajax обработкой запросов. Этим и обоснован выбор технологий. В моей команде над проектом активно работало 9 человек, мы использовали git/github для распределения задач и контроля проекта, heroku для хостинга приложения. В начале работы за нашей командой были закреплены два куратора, которые активно помогали советами и отвечали на все наши вопросы, поддерживали общение с командой в slack. Мы работали по agile принципу с недельным спринтом, после каждого спринта презентовали работающий функционал приложения. После чего обсуждали с кураторами ошибки и планировали задачи на следующую неделю. Всего работа над проектом продолжалась 6 недель. В конце мы презентовали и защищали готовое приложение, дальше - собеседование на работу. Меня на работу пригласили на 4 неделе проекта, сейчас я Junior Software Engineer в Netcracker.

Напутствие желающим попасть на курсы

Развивайтесь, изучайте новые технологии, пишите много кода и улучшайте его качество. Активно используйте github – это очень поможет презентовать свои практические навыки. Следите за объявлениями на сайте и подавайте свои заявки. Всем желаю успехов, Bohdan Bachkala.

Литература, которая поможет подготовиться к собеседованию:

Java: Философия Java. Брюс Эккель.

ООП: Приемы объектно ориентированного проектирования. Паттерны проектирования. Эрик Гамма, Ричард Хелм.

UML: Язык UML. Руководство пользователя. Греди Буч, Джеймс Рамбо.

SQL: Введение в SQL. Мартин Грабер.