Java Developer
Открыть в Telegram
7 899
Подписчики
Нет данных24 часа
Нет данных7 дней
Нет данных30 день
Архив постов
7 899
Вопрос про исключения. Какие из этих фраз верны?
A. Checked исключения могут быть обработаны или проброшены.
B. Checked исключения должны быть обработаны или проброшены.
C. Errors могут быть обработаны или проброшены.
D. Errors исключения должны быть обработаны или проброшены.
E. Runtime исключения могут быть обработаны или проброшены.
F. Runtime исключения должны быть обработаны или проброшены.
7 899
Работа в Германии ч.2
Часть 1 https://t.me/java_developer/144
Часть 3 https://t.me/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://t.me/java_developer/144
Часть 3 https://t.me/java_developer/149
#интервью #переезд #компании
7 899
Работа в Германии ч.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://t.me/java_developer/146
Часть 3 https://t.me/java_developer/149
#интервью #Германия #переезд
7 899
Есть несколько способов сделать так, чтобы класс мог использоваться, а переменная нет. Нужно создать специальный синтаксический контекст.
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)
}7 899
Как сделать так, чтобы вывелось на экран Black? Нельзя использовать рефлекшн и менять классы X и C
7 899
Ответ: 2. Почему: в классе
X переменная Y и класс Y находятся в одном скоупе. По спецификации в таком случае переменная имеет больший приоритет.7 899
Что произойдёт, если раскомментировать 3-ю строчку и запустить приложение?
1. Программа напечатает Black
2. Программа напечатает White
3. Код не с скомпилируется
4. Код скомпилируется, но при запуске выкинет исключение
7 899
Два правильных ответа:
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.*; нельзя импортировать методы, только классы7 899
Какой импорт нужно добавить, чтобы следующий код скомпилировался?
public class Imports {
public void read(Files files) {
Paths.get("name");
}
}
Классы Files и Paths находятся в одном пакете java.nio.file7 899
Подготовка к сертификации по Джаве
Мне и ещё двум Джавистам на аттестации, про которую рассказывал вчера, поставили задачу - получить сертификат 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/
7 899
Испытательный срок
У меня в компании испытательный срок длится три месяца. После трудоустройства Тимлид ставит разработчику задачи на этот период: познакомиться с системой, на которой будет работать, изучить используемые фреймворки, разработать конкретные модули.
После испытательного НR проводит встречу с разработчиком и Тимлидом. Это своего рода аттестация. Цель – подвести итоги испытательного срока: оценить работу сотрудника, посмотреть с какими задачами справился, дать обратную связь HR-у.
Оценка сотрудника проводится по следующим параметрам: результативность работы, соответствие занимаемой должности, ответственность, инициативность, вовлечённость. Сначала разработчик ставит себе балл от 1 до 5, затем Тимлид, и оба объясняют свой выбор. Таким образом происходит открытое обсуждение плюсов и минусов работы сотрудника.
При успешном прохождении испытательного срока после встречи разработчик получает задачи на следующие пол года. Например: изучить новые технологии, попробовать внедрить их в проект, разработать новые сервисы, провести митап.
#компании
7 899
Effective Java
Книга рассказывает тонкости базовых принципов Джавы. Её написал один из авторов языка Джошуа Блох. Подходит тем, кто изучил синтаксис, написал пару мини-проектов и хочет глубже изучить Джаву. Также отличная книга для желающих укрепить знания и перейти с позиции Джуниор на позицию Мидл.
Второе издание состоит из 77 полезных правил и тонкостей. Автор описал решение ежедневных задач разработчика. На примерах подробно объясняет, как нужно и не нужно кодить, чтобы получился надёжный и эффективный код.
Ниже публикую скрины содержания и саму книгу в формате djvu.
#книги
7 899
Что посмотреть на выходных
Курс по Джаве для начинающих от Вячеслава Ковалевского
https://www.youtube.com/playlist?list=PLsQAG1V_t58AKvV5v4NVXxo68OyLdNX3j
Интервью разработчика, который родился в Краснодарском крае, а сейчас переехал в Америку и работает в Tesla
https://youtu.be/QXjzP-zndrE
Доклад Евгения Борисова о Spring Data
https://youtu.be/nwM7A4TwU3M
#чтопосмотреть
7 899
Молодой против опытного
Проводил опрос "Если бы вы были Тим лидом, кого бы выбрали к себе в команду" https://t.me/java_developer/112. Выбрать можно было одного из двух кандидатов. Первый - молодой разработчика с горящими глазами, который знает только основы. Второй - опытный дорогостоящий разработчик. Голоса в процентах распределелились 70 на 30. Публикую ответы ребят, почему они выбрали свой вариант.
Молодой разработчик
— приносит свежие идеи в проект
— как воспитаешь, так и будет кодить
— стремится стать хорошим спецом и не бежит за зарплатой
— не нужно переубеждать в правильности решения
— в перспективе принесет реальную отдачу, если не жмут сроки проекта и есть кому обучать
Опытный разработчик
— начинает приносить пользу сразу
— быстрее и правильнее решает задачи
— когда горит проект, уменьшает риски срыва проекта
— уже знает необходимые технологии
— сложно находить общую точку зрения
7 899
Посты о Git
Пока все обсуждают, что Microsoft купила GitHub, сделал подборку постов о Git.
Что такое Git
https://t.me/java_developer/15
Жизненный цикл файлов
https://t.me/java_developer/19
Состояния файлов
https://t.me/java_developer/20
Ресурсы для изучения
https://t.me/java_developer/21
Популярные команды
https://t.me/java_developer/30
Частые проблемы и их решения
https://t.me/java_developer/56
#git
7 899
Правильные ответы: B, C, E, F
Вариант A не подходит. Абстрактный класс может содержать реализацию метода, а интерфейс с восьмой Джавы может содержать статический и дефолтный метод.
Вариант B верный. В интерфейсе все переменные
public static final, а абстрактный класс тоже может их содержать.
Вариант C верный. И абстрактный класс и интерфейс могут использовать extends. Но в отличие от класса, интерфейс поддерживает множественное наследование.
Вариант D не подходит. Только интерфейс может иметь default метод.
Вариант E верный. И абстрактный класс и интерфейс могут содержать static методы.
Вариант F верный. Нужно иметь конкретную реализацию абстрактного класса или интерфейса, чтобы создать объект такого типа.
Вариант G не подходит. Инстанс класса, который реализует интерфейс, наследник класса Object, но сам интерфейс нет.