• 5.91

  • +39.19

Моя история трудоустройства.

Привет, джаварашовец! В это зимнее дождливое утро хочу поделится с сообществом радостью) Вот уже вторую неделю я работаю программистом!) И это круто! Не много опишу свой путь от обычного сисадмина до программиста.

История

Сейчас будет много мыла о том как долго я искал работу, как было тяжело и бла бла бла. Поэтому если не интересно листай вниз до советов).

Где то 2.5 года назад я понял, что хочу что то поменять в своей жизни. На это было достаточно причин. Учился я на проргаммиста, правда на заочке учился(C++, Delphi и то самые верха). Были знания еще со школы — Pascal, Basic. И все. Чем черт не шутит, подумал я. И начал рыскать по форумам в поисках инфы. Выбор мой пал на Java. Начал читать книжки. Чего я только не читал. Thinking in Java, Java. The Complete Reference, Head First Java. Все это начиналось читатся. Первые две книги написаны в стиле справочника. И мне было очень тяжело их читать. А вот последняя мне понравилась. Написана легко, на, практически, понятном языке и есть картинки) Прочитал я ее. Но минус всех этих книг — отсутствие достаточного количества практических задач. И тут я натыкаюсь на этот пост — Я переучиваю людей на Java-программистов. Я благодарен судьбе за эту встречу)
Я узнаю о джавараше. Тогда проект был еще сырой. Было реализовано уровней 10-15. Их я прошел достаточно быстро. Начал помогать людям в группе в ВК. Потом, спасибо hubert-у, меня взяли волонтером в «тех. поддержку». Помощь новичкам — стало моей работой) Иногда засиживался до поздней ночи, объясняя новичку что к чему. Эти объяснения тоже мне очень помогли. Объясняя, я сам лучше понимал материал и основы Java. Когда достиг 19 уровня первый раз пошел на собеседование. Почитал статьи на хабре и других ресурсах о собеседованиях, написал резюмеху и начал всем разсылать. После первого собеседования, я понял, что это было слишком опрометчиво искать работу) Да я знал основы ООП, коллекции, многопоточность, разницу между ArrayList и LinkedList. Но что такое TomCat, Maven, Servlet, JUnit даже не слышал. Я чуть подзабил. На JR не появлялись уровни, с чего начать изучение J2EE я не знал. Да и ленился попросту. Какое то время я просто отвечал на вопросы в группе ВК и в этом сообществе. Появились новые задания. Они были сложнее. Появились большие задачи. Я снова вернулся к Java. Я подошел к вопросу обучения более серьезно. Нашел пару знакомых программиство. Они мне помогли начать изучение J2EE. Начал учить JS, CSS, HTML, Servlet API, Spring, Hibernate, JDBC. Пытался делать что то дома. Где-то месяца через три опять составил резюме и начал ходить по собеседованиям. Прошел штук 10, но так и не получилось устроится. Где то нехватало знаний, где то наглости, где то слишком много приврал о опыте работы). Участвовал в Ua Web Challenge. Короче говоря, результаты были неутешительны. В реальные проекты от JR тоже не получалось попасть. Нехватало времени и бла бла бла. Короче, напридумывал себе отмазок). Я уже почти опустил руки. Но жизнь всегда вносит свои коррективы. И так вышло, что мне кровь из носу, но надо было поменять работу. Я на два месяца засел в книгах. Подтянул теорию и практику. Опять составил резюме и разослал. В стране сейчас не самые легкие времена. Поэтому было всего два собеседования. На крайнем меня попросили сделать еще тестовое задание, потом было техническое собеседование. И я наконец то получил предложение. Свершилось! И вот я уже вторую неделю работаю программистом. Поток информации просто колосальный. Сейчас я на испытатльеном сроке. По окончании его, я напишу еще одну статью. А теперь хотелось бы дать пару советов будущим программистам.

Советы

  1. Не тратьте зря время. Учитесь в любом месте, в любое время дня и ночи. Читайте книги, смотрите лекции, решайте задачи. Не ленитесь. Я реально понимаю, если бы я не ленился, то работу бы нашел намного быстрее.
  2. Учите английский.У меня английский чуть ниже среднего. Книжки читать могу, но в словарь посматриваю. Так вот я думал, что этого хватит. Читайте с самого начала книги в оригинале. Смотрите видео на английском. Если английский на низком уровне — подтягивайте.
  3. Начните свой проект. Свой проект поможет Вам понять как работает J2EE. В проекте желательно использовать и web, базы данных, и многопоточность, и фреймворки.
  4. Never give up! Не сдавайтесь. Я прошел около 20 собеседований. В одной конторе HR-ка рассказала о парне который к ним ходил 8 на собеседование и на 9тый его взяли.
  5. Врать/Не врать о опыте работы. Это извечная тема для холиваров на форумах. Я пробовал и так, и сяк. Если указать, что нет опыта работы — количество собеседований падает где то 40-60%. Если указать, что есть — шанс пройти собеседование падает на 70-80%. Если все таки указываете — мой совет подготовтесь к тому, что вас будут спрашивать о технологиях, которые вы использовали на проекте. Надо очень хорошо разбиратся в них.
  6. Все ок!Будьте спокойными. Не нервничайте перед собеседование, и на нем.
  7. Ходите на собеседования. Вы ничего не теряете. Если вы не прошли — спросите у того кто вас собеседовал о своих пробелах. Если были тесты — попросите листочек с заданиями взять домой (мне дали задания только 1 раз), или как только вышли из здания, сразу запишите по памяти задания которые не смогли решить. Собеседование укажет вам на ваши пробелы.

Что в идеале надо знать.


  1. Spring — мне помогла книга Спринг в действии. Кучу туториалов есть и на хабре и на других ресурсах.
  2. Hibernate — книга из этой же серии Hibernate in action. Тоже уйму туториалов можно найти в инете как юзать спринг и хибернейт вместе.
  3. JDBC — очень нужная штука. Я брал инфу тоже с гугла + лекция от Головача. Это первая. Всего их там 7 штук.
  4. SQL — без него никуда. Вот отличный ресурс.
  5. HTML&&CSSвот неплохой ресурс(да простят меня Зепп и Компания за ссылки на чужие проекты =) ) Бесплатного курса вполне хватит — для старта.
  6. JS — есть на codeacademy курс. Но курс не очень объемный. Рассказываются самые основы. Вот неплохая книга Да на английском. Да это очень хорошо) Там же можете найти другие интересующие Вас курсы.
  7. Servlet — даже не знаю что подсказать. Книжек я по ним не читал. Все брал из все тех же туториалов.
  8. TomCat — контейнер для сервлетов. Поднимает ваше веб-приложение. Все те же туториалы. Не поленитесь — запустите его с командной строки. Поэксперементируйте с настройками. Если вы его просто подключили к IDE и жмете кнопочку Run — вы не умеете с ним общаться)
  9. Maven, Ant — это сборщики проектов. Maven, конечно, сейчас больше распространен. Но если вы поработаете и с Ant-ом это будет большой плюс. Инфу брал с тех же туториалов. На хабре куча туториалов по связкам Spring+Hibernate+TomCat+Maven/Ant.
  10. Паттерны — не обязательно знать 23 паттерна от GOF(Gang of Four — Банда четырех.) 5-6 нужно знать. В принципе тех что идут на javarush — достаточно.
  11. Лекции Головача. Я просмотрел 1 курс Core и почти весь курс на Junior-a. Практически все пункты, которые я описал выше, есть в его лекциях. Да и javarush частенько на него ссылается.

Послесловие


Пока Вы перевариваете список советов, технологий и ресурсов, хочу Вас успокоить. Вы не зря на JR. Все эти технологии, без Java просто набор технологий. Java их объединяет в нечто большее. Она их объединяет в проекты. Такое количество разных технологий не должно Вас пугать. Это общий список. Где-то чего-то не будет, где-то будет что-то другое. Но это основной костяк. Продолжайте учить Java и параллельно изучайте другие технологии. Если получилось у такого лентяя как я, тогда и у Вас получится)

Спасибо JavaRush!

Хотелось бы сказать спасибо Зеппу и Компании за такой замечательный ресурс. Вы проделали огромный труд. Впереди как я понимаю — еще больше. Главный плюс — это практика. Без нее — любая теория не принесет особых результатов. Спасибо еще раз)

level25.lesson05.task02

/* Без дураков
1. Создай private class MyUncaughtExceptionHandler, который на перехват исключения должен подождать половину секунды,
а затем вывести на экран secretKey, имя трэда и сообщение возникшего исключения.
Используй String.format(...). Пример:
super secret key, Thread-0, it's an example
2. Разберитесь в последовательности выполняемого кода и обеспечьте логирование возникновения исключения в п.1.
3. Метод main в тестировании не участвует.
*/

два вопроса.
1)каким то еще образом можно передать в MyUncaughtExceptionHandler secretKey?
2)что именно значит логирование? вывод в консоль?

level26.lesson15.big01

Задание 4
1. Выберем операцию, с которой мы сможем начать.
Подумаем. В банкомате еще денег нет, поэтому INFO и WITHDRAW протестить не получится.
Начнем с операции DEPOSIT — поместить деньги.
Считаем с консоли код валюты, потом считаем номинал и количество банкнот, а потом добавим их в манипулятор.

2. Чтобы считать код валюты, добавим статический метод String askCurrencyCode() в ConsoleHelper.
Этот метод должен предлагать пользователю ввести код валюты, проверять, что код содержит 3 символа.
Если данные некорректны, то сообщить об этом пользователю и повторить.
Если данные валидны, то перевести код в верхний регистр и вернуть.

3. Чтобы считать номинал и количество банкнот, добавим статический метод String[] getValidTwoDigits(String currencyCode) в ConsoleHelper.
Этот метод должен предлагать пользователю ввести два целых положительных числа.
Первое число — номинал, второе — количество банкнот.
Никаких валидаторов на номинал нет. Т.е. 1200 — это нормальный номинал.
Если данные некорректны, то сообщить об этом пользователю и повторить.
Пример вводимых данных:
200 5

4. В классе CurrencyManipulator создайте метод void addAmount(int denomination, int count),
который добавит введенные номинал и количество банкнот

5. Пора уже увидеть приложение в действии.
В методе main захардкодь логику пункта 1.
Кстати, чтобы не было проблем с тестами на стороне сервера, добавь в метод main первой строчкой Locale.setDefault(Locale.ENGLISH);
Запускаем, дебажим, смотрим.
вопрос по 3 пункту. просят создать метод который принимает код валюты а возвращает… я так понимаю стринговый массив из двух строк, в котором первая строка — номинал купюры, второя — количество таких купюр.
правильно ли я понял условие?
  • ,

level22.lesson09.task03

/* Составить цепочку слов
В методе main считайте с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставить все слова в таком порядке,
чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Метод getLine должен возвращать любой вариант.
Слова разделять пробелом.

Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн

Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
*/
  • ,

level24.lesson14.big01

Задание 10
Что мы будем делать с Canvas?
Мы будем рисовать на нем (в его матрице).
Поэтому нам понадобятся два метода
public void setPoint(double x, double y, char c)
public void drawMatrix(double x, double y, int[][] matrix, char c)
  • ,

питание...

я перестал нормально обедать! раньше я успевал за обед поесть и посмотреть пару серий какого то ситкома по 20 минут серия. А теперь я сажусь обедать на работе и начинаю решать задачи. И хорошо если задачи более менее легкие, тогда вполне успеваю решить и поесть. А если я не могу решить задачу то уже и не до обеда.

P.S.
Спасибо JavaRush что следишь за моим весом!))))
  • ,

level23.lesson08.task01

сделал минимум изменений. добавил только super вот здесь:
void printName() {
    System.out.println(super.getName());
}

не проходит. вывод правильный
/* Напряги извилины!
Метод printName должен выводить свое собственное имя, т.е. «sout»
Сделайте минимум изменений.
*/

Преобразование ссылочных типов, или спящий волк на клавиатуре

Доброго времени суток, джаварашовец. Начали мне поступать вопросы о приведение ссылочных типов в Java. Что бы каждый раз не пересказывать одно и то же, решил написать маленькую статью.
  • ,

level22.lesson05.task01

/* Найти подстроку
Метод getPartOfString должен возвращать подстроку начиная с символа после 1-го пробела и до конца слова,
которое следует после 4-го пробела.
Пример: «JavaRush — лучший сервис обучения Java.»
Результат: "- лучший сервис обучения"
На некорректные данные бросить исключение TooShortStringException (сделать исключением).
Сигнатуру метода getPartOfString не менять.
*/