2013-05-27
У любого начинающего IT’шника рано или поздно встает вопрос о том, где получить необходимые знания и как найти работу по специальности. В данной статье я бы хотел рассказать о своем опыте обучения java-программированию и получении места в компании.
После поступления в ВУЗ, я, как и большинство других, был разочарован: ожидания никак не совпадали с реальностью. Поняв, что никаких необходимых мне знаний ВУЗ не даст, я поставил перед собой цель изучить программирование и найти работу, чтобы к окончанию обучения уже иметь приличный стаж. Остановился я на java. Почему именно java описывать не буду — каждому свое.
Итак, из списка литературы, в первую очередь, хотелось бы выделить Deitel P.J., Deitel H.M. — Java How to Program. Особенно эта книга подойдет тем, у кого мало опыта в программировании. Параллельно с изучением литературы советую заниматься по видео урокам. Что касается меня, то я выбрал уроки Тимура Батыршинова. В одном своем вебинаре Тимур советовал изучать язык в следующем порядке:
1. Принципы языка;
2. Основные элементы построения программного кода и немного синтаксиса;
3. Среда разработки;
4. ООП;
6. БД или/и графический интерфейс;
7. Многопоточность.
Далее стоит определиться с тем, в какой отрасли вы бы хотели развиваться: мобильная разработка, прикладное или серверное программирование и т. д.
После изучения семи вышеперечисленных пунктов я столкнулся с «творческим кризисом». Университетские задумки — это, конечно, хорошо, но они быстро надоедают. Потому, недолго думая, я решил найти если не работу, то стажировку, после которой смог бы подниматься по карьерной лестнице. В этом мне помог фестиваль профессионального развития BitByte, проходивший в Петербурге (бесценный опыт, обучение и общение с работодателями можно разбавить различными конкурсами и призами от компаний). После фестиваля я отправил резюме в несколько компаний, которые в нем участвовали. В ответ последовали предложения выполнить тестовые задания и одно приглашение на интервью.
Если есть какая-то брешь в знаниях, то она сразу же проявится на собеседовании. И, как и ожидалось, свое первое в жизни собеседование я провалил, зато начал четко представлять, что мне нужно знать, чтобы претендовать на работу в компании.
Поэтому следующим шагом в изучении языка а также в подкреплении уже имеющихся навыков стала всеми известная библия джависта Bruce Eckel, Thinking in Java (в переводе — «Философия Java»). Для новичка она не подойдет, поэтому, если нет никаких навыков в ООП и программировании, советую начать с чего-нибудь полегче.
После выполнения тестовых заданий последовали приглашения на интервью. Ниже небольшой список вопросов, которые мне задавали:
1. Описать процесс компиляции программы на Java;
2. Что находится в .class файле?
3. Что я знаю о коллекциях?
4. Удастся ли скомпилировать программу без явного указания типа коллекции? Зачем его нужно указывать?
5. Что такое генерики и зачем они нужны?
6. Что такое делегация, инкапсуляция, полиморфизм? Примеры использования;
7. Что такое процесс и поток? Основные отличия? Запустить несколько процессов или потоков, что лучше, почему?
8. Как работают внутренние классы и для чего они нужны?
9. Как создать новый поток в программе?
10. Какие потоки бывают? Кратко описать переход от одного типа потока к другому;
11. Что делать, когда несколько потоков пытаются получить допуск к одному и тому же объекту?
12. В каких случаях случается deadlock?
13. Что такое сериализация и десериализация и зачем она нужны?
14. Как получить значение private поля из другого класса?
15. Как работает метод equals для объектов String? Для других типов?
16. Что нужно сделать, чтобы equals работал корректно для объектов не String?
Это все, что смог вспомнить на текущий момент. Но помимо вышеперечисленных вопросов также были и вопросы на знание кода. Чтобы подготовиться к такому мини-тестированию, рекомендую ознакомиться вот с этим очень полезным ресурсом.
Итог — сейчас я только заканчиваю первый курс, но уже сумел получить должность стажера java в крупной международной компании.
Вот и все, чем я хотел поделиться. Искренне желаю достичь таких же успехов тем, кто только встает на путь IT’шника.
Автор: Евгений Мироненко
Актуальные вакансии Java-программистов можно посмотреть здесь.