Java и вино 🍷
678 subscribers
21 photos
18 links
Про Java и мой путь в IT

Связь: @sbv239
Download Telegram
Сколько часов в день заниматься

Тут можно было бы сказать, что все индивидуально и разойтись, но я продолжу настаивать на том, что это авторский блог и на своем праве излагать тут свою точку зрения. В конце концов, кто-то что-то для себя вычленит: или из поста, или из комментариев, а кто-то просто плюнет и отвернется.

Я для себя выделил несколько моментов, которыми хочу поделиться

1. Непрерывность

Непрерывность «подхода» важнее формального количества затраченных часов. Лучше полноценно потратить 3 часа времени за раз, ни на что не отвлекаясь, чем 3 раза в день совершать часовые подходы. Второй вариант превращает материал, который ты пытаешься усвоить, в настоящую кашу.

Каждый раз у меня уходит 30-40 минут только на то, чтобы включиться в тему, вспомнить, что я делал вчера и «разогреться». В этих «3 раза по часу» у меня впустую уйдет часа полтора.

2. Регулярность

Для меня это 5-6 дней в неделю. Можно реже, но тогда и желаемого можно не достичь. Так и останется программирование на уровне хобби.

3. Отдых

Я не умею отдыхать. Каждый раз когда я это делаю, у меня складывается ощущение, что я что-то упускаю, теряю и недополучаю. Еще из спорта у меня это: когда ты отдыхаешь, твой соперник тренируется.

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

Меняем программирование на «научиться играть на скрипке» и все те же правила будут работать и там 😀
👍12
Как относитесь к тестовым заданиям?

На днях отвечал на одну из вакансий и перед отправкой была автоматическая просьба решить задачку.

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

— Во-первых, так мы можем доказать, что мы что-то умеем.
— Во-вторых, это неплохая практика, так как тестовые задачи часто связаны с бизнес-задачами приложений клиента (хоть и отдаленно).

Мне сложно ответить за senior и middle специалистов, но полагаю, и на этом уровне можно придумать какие-то проверочные вещи.
👍8
Всем интересно, какие задачки бывают на собеседованиях и перед ними

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

Первая — на скриншоте — задачка с собеседования в T-Systems в их Java School. Всего было три задачи, эта была не самой сложной, но повозиться пришлось. В первую очередь с тем, чтобы корректно определять, можно ли массив запихнуть в такой треугольник или нельзя. Ну а нарисовать его уже это вопрос аккуратного использования простых операторов, циклов и работы с двумерным массивом

Сложную показывать пока не буду…
👍14
Ребят, а у вас какой язык основной? (можно отвечать даже тем, кто еще не выбрал, но уже склоняется...). На всякий случай сделаю мультивыбор.
Anonymous Poll
70%
Java
21%
Python
7%
JavaScript
7%
Kotlin
1%
R
3%
PHP
1%
Go
1%
Swift
2%
C
4%
C#
Простой (простой?) вопрос

Что напечатает программа? 10 секунд смотрим и отвечаем. Правильный ответ напишу в комментарии к этому сообщению

#практическиеВопросы
👍5
Мне очень нравится эта задачка, поэтому я хочу с вами ей поделиться

public class Test{
public static void main(String[] args){
Integer num1 = 100;
Integer num2 = 100;
if(num1==num2){
System.out.println("true");
}
else{
System.out.println("false");
}
}
}

Собственно, true или false?

Здесь многие, знакомые с понятием "объект" и "ссылка", скажут, что программа напечатает false (ведь объекты разные). Но это не так. Правильный ответ true и вот почему:

Здесь происходит autoboxing примитива и вызов метода Integer.valueOf(100)

Если теперь мы зайдем в реализацию этого метода, то увидим такой код:

public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

Если значение находится в диапазоне от -128 до high (по умолчанию 127), то создание нового объекта не происходит, а просто берется из кэша.

Подробное объяснение и хорошая статья по теме

#практическиеВопросы
👍13🎉2
Немного залип в последнее время в видео-интервью на канале

https://www.youtube.com/channel/UCRxBK1uUONfrU7roM36zuTQ

Не то чтобы смотрю их круглыми сутками, но примерно 1 в два дня посматриваю. И вот у меня появилась идея, а чего бы не поучаствовать? Есть две опции: бесплатно с неясными перспективами по времени и за деньги в ближайшие дней 10.

Выбрал второе, так как если уж делать, то сейчас, пока тепленький 😊 В общем, если пройду на платное и попаду в телевизор, не судите. Боязнь сцены и комплекс самозванца у меня с детства, увы.
👍6
Сегодня «провалил» тестовое собеседование, которое состояло из 30 вопросов

Примерно 20 вопросов взял, 10 с ошибками. Успешным считалось 22 правильных ответа

Если честно, то не понравилось от слова «совсем».

Во-первых, потому что мало времени: 1 вопрос = 1 минута это мало, особенно когда нужно решить задачу на построение SQL-запроса и выбрать 1 из очень похожих 4-х ответов.

Во-вторых, вопросы показались довольно трудными. Если что, я претендую в данной компании на учебно-стажерскую позицию (даже не Junior пока).

Бонусом, пара вопросов имели (как мне кажется) не очень корректно подобранные ответы, что несколько смутило в процессе.

И тем не менее, я доволен, что поучаствовал. Пусть лучше заваливают сложными вопросами - крепче стану. Вопросы с правильными (на мой взгляд) ответами собрал в документ (его можно комментировать), который буду по мере сил дополнять:

https://docs.google.com/document/d/1zmV27b2zZUTHPVArIT-byZzy_HbvtVst18RHVw9r5J0/edit#
👍13🔥3
К вопросу о том, где и кто я сейчас

Завтра делаю тестовое задание для одной компании. По итогу отпишусь и расскажу 💪
👍12🔥3
И снова про тестовые…

Написала девушка на LinkedIn

— Здравствуйте, ищите работу Java разработчиком? Их есть у меня
— Да, здравствуйте. Я смотрю у Вас в вакансии 3-6 лет опыта и позиция Senior

Меня конечно учили все знакомые IT-шники, что в резюме нужно откровенно врать (они это называют словом «приукрашивать», но смысл общий не меняется), но не до такой же степени, согласитесь.

Морально я разумеется к этому готов (приукрашивать), но тратить свое и чужое время на откровенно бестолковую переписку не хочу.

— У меня нет опыта 3-6 лет, резюме выложено на странице и вообще я бы Junior’ом хотел бы попробовать.
— Нет проблем, можно и Junior, но тогда надо сделать тестовое задание

Опа! — подумал я. Не послали и уже хорошо.

— Давайте задание!
— Высылаю

Если кому-то интересно, то задача была следующая:

Есть файл CSV c данными в определенном формате, есть файл JSON с данными в том же формате. Нужно написать консольное приложение с использованием Spring и Maven (обязательно), которое бы конвертировало данные и выводило их в единый JSON-формат. Необходимо проводить обработку и вывод данных с использованием многопоточности.

Вот собственно и ответ на вопрос куда я пропал.

1 день работы + 1 день на переосмысление и рефакторинг. Задачу сделал, в GitHub выгрузил, жду ответа 😀
👍164
А давайте я поделюсь планами на ближайшую неделю

— LeetCode

Хочу порешать алгоритмические задачи. У меня с ними проблемы, как выяснилось — все эти переборы массивов нужно научиться делать по красоте

— Тестирование

Оказалось, что модульное тестирование приложений с большим количеством зависимостей мне дается совсем нелегко. Надо поковыряться с этой темой конкретно.

— Функциональное программирование

Нужно совершить над собой усилие и закончить этот курс (тем более что осталось там не более 20%)

— Базы данных

Тоже висит курс по SQL незаконченный (на пару часов времени) — не люблю такие незакрытые гештальты.

— Если удастся при этом попасть на какое-то собеседование буду рад

Но сегодня никакого программирования. Отдых! Сегодня…

…сегодня я позанимаюсь английским 🙈
👍10
Ситуация на рынке

Я активно пользуюсь двумя источниками: LinkedIn и HH. И вот какое у меня складывается ощущение спустя пару месяцев активного мониторинга и попыток «прижаться» хоть куда-то.

Сейчас всем нужны разработчики уровня middle и senior — за них идет борьба, потому что их мало. Если кому-то нужен Junior то требования к нему применяются такие, что становится немного не ясно, зачем компании с такими джунами миддлы и сеньоры.

Я в некотором недоумении если честно и смущении. Но! я бы не хотел, чтобы вы подумали, что я жалуюсь. Отнюдь. У меня есть цель и я к ней иду, просто путь чуть более холмистый оказался 😀
👍21
Работать ли бесплатно (даже не за еду) новичку?

Хочу сказать сразу, круто изменив свою жизнь и начав фактически с нуля заниматься новой для себя деятельностью, я не рискую умереть с голоду, а мой ребенок остаться в драных носках. Надеюсь.

Да, мы затянули пояса, как это принято говорить, стали чуть меньше тратить на всякое ненужное. Пока хватает и жизнь каленым железом не подгоняет устроиться хоть куда-то хоть хоть за сколько-нибудь делать абы что — не для этого я уходил.

Сейчас у меня есть выбор: продолжать искать место, где в меня поверят (а это в их интересах) и сразу начнут платить или же попробовать устроиться куда-то бесплатно, чтобы через условную стажировку получить опыт и реальный оффер. Одно ограничение — это должно быть мне интересно.

Сейчас я прорабатываю оба варианта, какой из них в итоге вступит в силу покажет время.

Второй вариант немного отодвинет (на пару месяцев) меня от реальной цели, но приведет к ней с большей гарантией (как мне кажется), поэтому мое мнение — да! Я готов поработать бесплатно какое-то время.

А вы что думаете?
👍2
Простите, но я скоро стану парсер-мастером

Прилетело очередное тестовое задание после непродолжительного собеседования.

Необходимо написать программу, импортирующую данные из xml-файла в БД, с учетом следующих ограничений:

— использовать чистую java (без spring)
— для импорта использовать JDBC
— игнорировать дубли. Они могут быть в исходном xml или уже присутствовать в БД. Реализация не должна пропускать дублирующие данные

Тестовые данные я формирую тут: https://www.mockaroo.com/

Для реализации я выбрал PostgreSQL и HikariCP (для работы с пулом соединений)

Вообще мне такой подход (выполнения тестовых) очень нравится последнее время: я через практику осваиваю различные архитектурные паттерны и прикладные возможности библиотек.

Like it 😀
👍17🔥6🎉1
Не успеваю тестовые задания выполнять. Прилетает новая порция "работы" уже по другому направлению 🙈
👍14
Ребят, хочу спросить у вас

Какие курсы вы считаете прямо must-have из тех что проходили? Платные и нет.

Для меня сейчас критичны не новичковые вещи, а погружение: алгоритмы, структуры данных, тестирование, прикладные фреймворки и т.д. Можно прямо со ссылками

Начну: Data Structures and Algorithms: Deep Dive Using Java (есть на рутрекере)
👍3
Сегодня прилетело уведомление в Госуслугах

Можно получить неплохую субсидию (до 100%) от государства (тут я бы сказал «бери пока дают») на обучение. Много IT-специальностей.

По Java:

— Автоматизатор тестирования на Java (Яндекс)
— Java-разработка для начинающих (Нетология)

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

Мне новичковые курсы уже не подходят в силу того, что уровень знаний у меня уже выше, но если кто совсем начинает, то рекомендую озадачиться.
👍4
Про удаленку

Знаете, давно хотел вам рассказать, почему ЕЩЕ я решил «свалить» и уйти в IT с головой. Удаленка!

Меня жутко выбешивала на своей предыдущей работе необходимость появляться в офисе. Желание же остаться дома работодателем удовлетворялось, но с каким-то нарочито одолженческим видом. Раздражало.

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

Я люблю бегать. Знаете, когда лучше всего бегается? Днем! Кто-то обедает, а я бегаю. Потом прихожу, привожу себя в порядок, только потом обедаю и дальше за компьютер. И можно допоздна.

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

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

Будьте счастливы!
👍40🔥74
В общем, я взял два новых курса. Постараюсь до осени в любом случае их как-то пройти

1) Data Structures and Algorithms: Deep Dive Using Java

https://www.udemy.com/course/data-structures-and-algorithms-deep-dive-using-java/

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

2) Testing Spring Boot: Beginner to Guru

https://www.udemy.com/course/testing-spring-boot-beginner-to-guru/

Судя по отзывам, очень неплохой курс. Для меня тестирование оказалось большой проблемой во всех проектах, к которым я прикладывал руку. Нужно повышать скилл.



32 евро можно добавить к моим расходам на обучение
Привет!

Небольшой вопросик из последнего теста (просто разминка для ума и повод повторить теорию, если не знаете). Что будет выведено на экран?

A : 1
B : 2
C : Будет выброшено исключение
D : Не скомпилируется

Правильный ответ:

A

Дело все в том, что Java всегда передает параметры по значению. Метод change работает не с исходной ссылкой value, а с её копией. Это раз.

Два. ++i можно переписать как i = i + 1, что равнозначно созданию "нового" объекта (в силу иммутабельности классов-оберток) внутри области видимости метода change (это видно, если запустить дебаг).
👍18