Java Developer
6.45K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
Effective Java

Книга рассказывает тонкости базовых принципов Джавы. Её написал один из авторов языка Джошуа Блох. Подходит тем, кто изучил синтаксис, написал пару мини-проектов и хочет глубже изучить Джаву. Также отличная книга для желающих укрепить знания и перейти с позиции Джуниор на позицию Мидл.

Второе издание состоит из 77 полезных правил и тонкостей. Автор описал решение ежедневных задач разработчика. На примерах подробно объясняет, как нужно и не нужно кодить, чтобы получился надёжный и эффективный код.

Ниже публикую скрины содержания и саму книгу в формате djvu.

#книги
Испытательный срок

У меня в компании испытательный срок длится три месяца. После трудоустройства Тимлид ставит разработчику задачи на этот период: познакомиться с системой, на которой будет работать, изучить используемые фреймворки, разработать конкретные модули.

После испытательного НR проводит встречу с разработчиком и Тимлидом. Это своего рода аттестация. Цель – подвести итоги испытательного срока: оценить работу сотрудника, посмотреть с какими задачами справился, дать обратную связь HR-у.

Оценка сотрудника проводится по следующим параметрам: результативность работы, соответствие занимаемой должности, ответственность, инициативность, вовлечённость. Сначала разработчик ставит себе балл от 1 до 5, затем Тимлид, и оба объясняют свой выбор. Таким образом происходит открытое обсуждение плюсов и минусов работы сотрудника.

При успешном прохождении испытательного срока после встречи разработчик получает задачи на следующие пол года. Например: изучить новые технологии, попробовать внедрить их в проект, разработать новые сервисы, провести митап.

#компании
Подготовка к сертификации по Джаве

Мне и ещё двум Джавистам на аттестации, про которую рассказывал вчера, поставили задачу - получить сертификат Oracle Certificate Associate и начать готовиться к Oracle Certificate Professional.

Я попросил коллег присылать интересные задачи и материалы, которые попадаются во время подготовки. Буду публиковать их здесь.

Ссылки:
Книга, по которой готовлюсь к экзамену
https://www.amazon.com/dp/1118957407/ref=cm_sw_r_sms_awdb_t1_YC8iBbP3TERAB
Статья, в которой разработчик рассказывает, какие были сертификаты в 2016, и как выглядела сдача экзамена
https://m.habr.com/post/317432/
Какой импорт нужно добавить, чтобы следующий код скомпилировался?

public class Imports {
public void read(Files files) {
Paths.get("name");
}
}


Классы Files и Paths находятся в одном пакете java.nio.file
Два правильных ответа:
1. импорт всего пакета
import java.nio.files.*;
2. импорт обоих классов
import java.nio.files.Files;
import java.nio.files.Paths;

Импорты, которые не подойдут:
import java.nio.*; подпакеты не импортируются
import java.nio.*.*; можно использовать только одно сокращение с символом *
import java.nio.files.Paths.*; нельзя импортировать методы, только классы
Что произойдёт, если раскомментировать 3-ю строчку и запустить приложение?

1. Программа напечатает Black
2. Программа напечатает White
3. Код не с скомпилируется
4. Код скомпилируется, но при запуске выкинет исключение
Ответ: 2. Почему: в классе X переменная Y и класс Y находятся в одном скоупе. По спецификации в таком случае переменная имеет больший приоритет.
Как сделать так, чтобы вывелось на экран Black? Нельзя использовать рефлекшн и менять классы X и C
Есть несколько способов сделать так, чтобы класс мог использоваться, а переменная нет. Нужно создать специальный синтаксический контекст.

1 способ
Привести null к нужному типу и обратиться к статической переменной класса
System.out.println(((X.Y) null).Z);

2 способ
Создать класс, который наследуется от нужного класса
static class XY extends X.Y {};
И вывести на экран переменную
System.out.println(XY.Z);

3 способ
Использовать в методе main дженерики
 public static <T extends X.Y> void main(String[] args) {
System.out.println(T.Z)
}
Работа в Германии ч.1

Взял интервью у Джава-разработчика Александра, которому 26 лет. Он родился на Украине, последние два года работает в Германии.

— Расскажи, как начинал свой путь разработчика?

Увлёкся программированием в 8 классе. Два раза в неделю занимался с учителем Паскалем. Выиграл городскую олимпиаду.

После школы учился на инженера в ХНУРЭ, код почти не писал, да и учился как попало. Уже заканчивая магистратуру, обсуждал с ребятами будущее, узнал какие ЗП в IT, и сразу же подал заявку на бесплатные курсы EPAM. Основным критерием отбора был английский язык, и базовые знания программирования.

Обучение проходило пол года 8 часов в неделю. Мы изучали Java с нуля после пар. Я прошел несколько отборов, выполнил тестовые проекты и попал в офис.

В офисе год работали над тестовыми проектами на маленькой ЗП. Под конец проектов нас собеседовали и отбирали на различные фреймворки. Мне достался Adobe Experience Manager, на котором работаю и сейчас.

— Про курсы EPAM интересно. Что изучали на курсе?

Изучали Java с самых низов, делали домашние задания, писали тесты в аудитории. Довольно нагруженные были полгода, но технологию освоили на отлично.

Когда стали учиться в офисе, больше внимания уделяли клин коду, паттернам, работе в команде, презентациям, связанным технологиям: Git, JS, SQL, Maven, JUnit, Jenkins, Jira. Код проверяли ребята из продакшна с огромным опытом работы. Нам можно было спорить, поэтому code review были очень продуктивными.

Книги особо никто не читал, пользовались более конкретными материалами.

— Класс! Думаю, было крутое время. Ты работал в Епам в Харькове?

Да, около 2-х лет. Отличная фирма для начала карьеры, но зарплата росла медленно, при том что из других фирм приглашали людей на гораздо более высокую ЗП. Поэтому многие поуходили, набравшись опыта.

— В какой момент решил уволиться?

Все примерно знали, какая у кого зарплата у нас и в других фирмах. При переходе из одной фирмы в другую можно было получить в 2 раза больше. В Епаме выбить приличное повышение было нереально.

Поэтому, набравшись опыта, стал искать варианты. С моим фреймворком кроме Епама работала только одна приличная фирма. У них было место на проекте, обещали хорошую зп, частые и долгие командировки в Германию. Но я не прошёл - взяли более опытного коллегу из Епама. Поэтому осталось искать варианты за границей.

— Как выбор пал на Европу?

Читал форумы и сравнивал условия жизни, цены, зарплаты.

Самый очевидный выбор – США. Но там, кроме ЗП, всё плохо. Мало отпускных дней, плохое страхование, преступность, ограниченная виза для жены, нужна машина.

Второй вариант – бедная страна с хорошим климатом, скорее всего на удалёнке, где можно чувствовать себя королём.
Можно купить или снять хороший дом, валяться на пляже, но в остальном всё плохо. Кругом бедность, и быстро надоест.

Третий вариант – соц. страна в ЕС. Плюсы – все кругом счастливы, хорошая ЗП, сервис, инфраструктура, низкая преступность, 30 дней отпуска + больше 10 праздничных дней, отличные визовые условия.

Минусы – дефицит жилья, и зп меньше чем в США из-за налогов и страховок. Но иметь своё жильё – не всегда удобно, а налоги по сути идут на страхование и пенсионные накопления.

— Чем зацепила Германия по сравнению с остальными европейскими странами?

Страховки (В Швейцарии похуже), умеренный климат (Скандинавия – холодно, Испания/Италия – жарко), месторасположение (центр Европы), распространнёный в ЕС немецкий язык, довольно просто получить ПМЖ и затем гражданство, куча мероприятий и пива.

Тут куча промышленности, следовательно много работы. А зарплаты одни из лучших в ЕС, и не только в IT, что актуально для тех, у кого жена не программист.

К тому же Мюнхен – интернациональный город, 99% людей говорят по-английски, да и русских много. Например, можно найти врача любой специальности, говорящего по-русски, что довольно важно, как мне кажется.

После 2-х лет проживания объездил почти все страны ЕС, и всё больше понимаю, что сделал правильный выбор.

Часть 2 https://yangx.top/java_developer/146
Часть 3 https://yangx.top/java_developer/149

#интервью #Германия #переезд
В АйТи каналах тоже должны быть лайки
Работа в Германии ч.2

Часть 1 https://yangx.top/java_developer/144
Часть 3 https://yangx.top/java_developer/149

— Расскажи, как искал работу в Мюнхене?

Создал профили в LinkedIn и Xing (немецкий аналог), набросал простенькое резюме, и отправил в несколько фирм. Обычно интервью назначали на рабочее время, да ещё и по телефону. Приходилось бродить по парку и разговаривать, что было очень неудобно да и по телефону связь не очень. Парочка отпали именно по этой причине, приходилось переспрашивать всё время, с одной фирмой я не захотел продолжать т.к. предложили низкую зп и работу в деревне.

Потом со мной связалась через LinkedIn знакомая одного из разработчиков в моей нынешней компании. Он так же начинал в Харьковском ЭПАМ, и знал что там есть люди с опытом в АЕМ фреймворке и с хорошей базой. Свела меня с HRом, быстро поговорили на стандартные темы, какая хорошая фирма, и как я хочу в ней расти.

Техническое интервью по скайпу проводили после работы. Я и интервьюеры были уставшие. Плюс не подключил веб-камеру, поэтому интервью прошло неважно.

Спрашивали вопросы без подвохов в формате «с чем работал» и «что делал на проектах». Задали пару сложных вопросов - я ответил не на все. Длилось около часа.
Но для них этого хватило, видимо ещё и рекомендация сыграла роль, парень пригласивший меня - хороший работник.

Через пару дней сказали что я прошёл интервью. Хоть я был мидлом в Епам, предложили должность джуниора, т.к. у меня был год опыта в продакшене. Здесь разработчики получают должность мидла после 3-х лет работы, сеньора - к восьми годам.

Поэтому я согласился. Мне оплатили перелёт и отель в Мюнхене, чтобы пообщаться лично. Сделал тур. визу, слетал, поговорил с парочкой программистов о жизни и планах, погулял 3 дня. Очень впечатлился городом и особенно офисом.

— Тяжело было на джуниора перейти после Епама?

Сначала - нет. Была куча забот по переезду и обустройству, поэтому комфортно работал без особой ответственности над не самыми сложными задачами.

Коллеги гораздо опытнее, чем в Епаме, большинству в районе 40 лет. Многие из них скорее учёные, чем формошлёпы, но в то же время просто миддлы пусть и с высокими зарплатами. Поэтому я понимал что должность джуна - это справедливо и не позорно.

— Что самое сложное было при трудоустройстве и поиске работы?

Сделать нормальное резюме, и находить время для общения с рекрутёрами. Но сам переезд гораздо сложнее.

— На что стоит обращать внимание при выборе компании?

Если рекрутеры косячат с самого начала, прерывай общение сразу.

В Германии стоит идти в фирмы, где большинство немцы или европейцы.

Стоит изучить офис и его обитателей. Там будешь проводить 40 часов в неделю. Если люди довольны жизнью и работой, это заметишь сразу.

Контракты простые и короткие, т.к. всё регламентируется законом. Но стоит уделить внимание бенефитам, которые предоставляет компания. Например, если фирма организует курсы немецкого, то это экономит 300 евро/месяц. Большая фирма и жёнам оплачивает. Каждая подобная плюшка экономит много денег.

— Расскажи немного о самой компании

Компании 5 лет, 500 сотрудников. Работаем по системе Holacracy - маленькие группки ответственны сами за себя, и сами принимают решения.

— Какие задачи выполняешь на работе?

Ничего сверхъестественного - делаем новые фичи, расширяя готовые решения. Сложной логики практически нет. Задания после бизнес-аналитиков уже готовые спускаются, так что особой свободы тоже нет.

Всё происходит гораздо спокойнее, чем в Епам: больше свободного времени, а работа как хобби воспринимается.

— Какие технологии используете кроме AEM?

Другие продукты из Adobe Marketing Cloud, частью которого является AEM. Это что-то вроде фотошопа, но для разработчиков - очень мощная, дорогая и массивная платформа. Практически все из Fortune Global 500 с её помощью внутренние и внешние порталы создают. АЕМ по сути состоит из множества технологий: Sling, OSGI, JCR + 2 UI фреймворка: touch и классический.

Часть 1 https://yangx.top/java_developer/144
Часть 3 https://yangx.top/java_developer/149

#интервью #переезд #компании
Вопрос про исключения. Какие из этих фраз верны?

A. Checked исключения могут быть обработаны или проброшены.
B. Checked исключения должны быть обработаны или проброшены.
C. Errors могут быть обработаны или проброшены.
D. Errors исключения должны быть обработаны или проброшены.
E. Runtime исключения могут быть обработаны или проброшены.
F. Runtime исключения должны быть обработаны или проброшены.