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

Мемы: @java_memes
加入频道
В чём разница между
synchronized void getS() {}

и
void getS() {
synchronized (this) {
}
}
Внедрение зависимостей

Плохо
@Autowired
private BeanA beanA;
@Autowired
private beanB beanB;


Хорошо
private BeanA beanA;
private BeanB beanB;

@Autowired
public DI(BeanA beanA, BeanB beanB) {
this.beanA = beanA;
this.beanB = beanB;
}


Почему
https://habr.com/post/334636/
Скрыть ненужные чаты в Telegram

Если используете Telegram Desktop, зайдите в настройки и наберите на клавиатуре "workmode". Приложение предложит перезапустить его. После перезагрузки над чатами появится кнопка для скрытия чатов, у которых вы отключили уведомления.

#telegram
Что такое "сделать"

В статье рассказывается, как правильно работать в проекте, оценивать сроки и никого не подводить.

https://ksoftware.livejournal.com/202173.html
Вопросы с собеседований

— виды циклов
— что такое рекурсия
— отличие final, finally, finalize
— что такое try-with-resource
— отличие wait(100) от sleep(100)
— что такое пул строк
— почему String является immutable
— какие виды деревьев существуют
— примеры применения деревьев
— рассказать, как работает HashMap
— что такое автобоксинг
— рассказать про алгоритмы сортировки и их сложности
— для чего нужны дженерики
Code style. Naming
Пара рекомендаций по наименованиям с одного проекта.

— Переменные сервиса или репозитория следует называть просто "service" и "repository". Полное имя нужно давать, когда в классе используется несколько сервисов или репозиториев.

Плохо
@Autowired
FooFooBarBarRepository fooFooBarBarRepository;


Хорошо
@Autowired
FooFooBarBarRepository repository;


— Если имя реквест параметра совпадает с именем параметра метода, то value для аннотации RequestParam указывать не обязательно.

Плохо
public ResponseEntity<Void> foo(@RequestParam(value = "barType") String barType,
@RequestParam(value = "barUID") String barUID)


Хорошо
public ResponseEntity<Void> foo(@RequestParam String barType, @RequestParam String barUID)
Code style

Не нужно проверять, содержит ли коллекция элементы, когда нужно по ней итерироваться. Просто итерируйтесь.

Плохо
if (!foos.isEmpty() {
for(Foo foo: foos) {
bar.delete(foo);
}
}


Хорошо
for(Foo foo: foos) {
bar.delete(foo);
}
Code style

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

Плохо
public void foobar(List<Bar> bars) { 
if (bars.isEmpty()) {
Bar bar = new Bar();
bar.setA();
bar.setB();
bar.setC();
bar.setD();
repository.save(bar);
}
}


Хорошо
public void foobar(List<Bar> bars) { 
if (!bars.isEmpty()) {
return;
}
Bar bar = new Bar();
bar.setA();
bar.setB();
bar.setC();
bar.setD();
repository.save(bar);
}
Дисциплина важнее мотивации

Мотивация – временный порыв совершать задуманное. В один момент запал утихает и желание достигнуть цели уменьшается.

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

"Почему дисциплина важнее мотивации": https://vc.ru/6801-discipline
"Как дисциплинировать себя" с практическими советами: https://vc.ru/7933-practical-discipline
Robert Martin – Clean code

Роберт Мартин в книге "Чистый код" описывает, как должен выглядеть идеальный код. Код в финальной стадии легкочитаем, понятен коллегам без комментариев и выглядит лаконично. Я бы каждый раз переживал за свой код, если бы моим ревьюером был Роберт. В книге много спорных моментов, но от этого она не становится менее крутой. А первые пять глав обязательны к прочтению каждому разработчику.

#книги
Как учить SQL

Читать книгу "SQL за 24 часа"
Каждый час в книге - отдельная глава. Первые главы рассказывают, что такое база данных, что такое SQL, какие типы данных существуют. Дальше по нарастающей. Последние главы - о создании/изменении вьюх, расширениях стандарта языка. Вся теория сопровождается примерами для MySQL, Oracle, MS SQL. После каждой главы тесты и задания.

Решать упражнения sql-ex.ru
Задачи от самых простых до просто диких. Решайте их в связке с ресурсом sql-tutorial.ru. Для каждой задачи есть линки по нужной теме. Подучив Джаву и решив сотню задач на sql-ex, можно смело идти на собесы.

Проходить тесты quizful.net/test/sql_basic
Случайно выбираются 20 вопросов из 86 и даётся 20 минут на их решение. Примеры вопросов: "Что делает order by", "Какой будет результат запроса", "Сколько записей будет выбрано", "Сколько записей будет удалено".

#sql #книги #обучение
Как не надо писать сопроводительное письмо

Нашёл на headhunter'е своё старое сопроводительное письмо. Я рассылал его после окончания университета, когда устраивался стажером. Тогда я откликался на все вакансии, в которых встречал слово "Java". Это письмо - боль.

Оригинал
Доброго времени суток!
Заинтересовала Ваша компания! Рассматриваете ли Вы выпускников ВУЗов на должности стажера/Java Junior? Готов пройти собеседование с начальником IT-отдела.
Дмитрий, номер телефона.

Что в нем не так
Письмо шаблонное. Видно, что его рассылали многим компаниям. Автор не потрудился указать название организации. Нет информации о себе. "Здравствуйте!" читается приятнее, чем "Доброго времени суток!". "Ваша", "Вы" не нужно писать с заглавной. Вместо вопроса нужно кратко описать свой опыт, который подходит для конкретной вакансии.

Завтра напишу о том, как правильно составить сопроводительное.
Как писать сопроводительное письмо

Пишите адресно. Приятнее видеть Хочу работать в компании "Инновационные технологии", чем шаблонное Заинтересовала ваша вакансия

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

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

Говорите об ограничениях. Но с готовностью решить их. Если не знаете ключевой фреймворк, который указана в вакансии, то напишите об этом и покажите, что быстро изучите его. Например так. Я не работал со Spring, но прошёл курс на Udemy и написал приложение PetShop.

Не надейтесь на оффер. Отошлите сопроводительное и забудьте о нем. У HR может быть миллион причин не отвечать вам. Может компания тестирует, сколько людей откликнутся на вакансию. А может вы слишком хороши для неё.
Как откликнуться на вакансию мечты

Хорошая статья Максима Ильяхова о поиске работы https://megaplan.ru/letters/get-a-job. Примеры взяты про редакторов. Но статья будет полезна всем, кто захочет когда-нибудь пойти на собеседование. Вы узнаете, как правильно читать требования вакансии и откликаться на неё.
Вопросы с собеседований по SQL

— что такое SQL
— какие виды связей бывают
— перечислить виды джоинов
— как используется ключевое слово having
— что такое ACID
— какие есть нормальные формы
— когда может понадобиться денормализация БД
— для чего нужны уровни изоляции
— какие феномены чтения бывают
Книга по многопоточке

Если хотите прокачаться в многопоточке, то прочитайте Java Concurrency in Practice. В ней найдете основные концепции, которые актуальны и сейчас. Авторы книги - разработчики Java. Один из них, Даг Ли – создатель пакета java.util.concurrent. Книга на английском, но читается легко. Все примеры кода советую перепечатывать в Идее.

#книги
Вопросы по многопоточке

100 вопросов с ответами по Java Concurrency
https://github.com/arteam/100-Java-Concurrency-questions
Почему не стоит работать в банке

Недавно кинули пост, в котором разработчик объясняет, почему его не интересуют вакансии в банковской сфере. Вот эти причины:

1. Банковская сфера - это уныло. Весь банковский софт - это либо типичный энтерпрайз со счетами, транзакциями, отчётами и т. п., либо торговля на бирже, сводящаяся к извращённым техникам написания одних и тех же алгоритмов с целью обойти конкурентов.

2. Отсутствие простора для творчества. Это вам не продукт, где я как программист могу сам придумывать и реализовывать фичи, и не социальная сеть, где на миллионах пользователей можно в режиме реального времени провести какое-нибудь исследование.

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

4. Офис. Для меня, к примеру, офис - второй дом. Помимо работы в комфортных условиях я там завтракаю и обедаю, отмечаю праздники, играю в игры, занимаюсь спортом, участвую в семинарах и т. д. В интернете немало прикольных статей на тему "офисы IT компаний". Покажите что-нибудь похожее про офисы банков!

5. Что делает банковский софт? Помогает банку зарабатывать деньги. Только и всего! А я не хочу тратить свою жизнь на то, чтобы писать софт, просто помогающий другим наживаться. В этом смысле даже работа на заводе привлекательней: ведь там производятся реальные блага для человечества. А я хочу делать мир лучше. Совершенствовать сети и протоколы связи, давать людям новые способы общения, улучшать алгоритмы хранения, передачи и поиска информации, автоматизировать повседневную деятельность, разрабатывать открытые решения, которые принесут пользу не только нашей компании, но и другим.

6. Наконец, инновации. Я хочу работать в компании, которая не только использует передовые технологии, но и сама двигает IT индустрию вперёд. Творить будущее. Это делают именно IT компании, банки лишь пользуются плодами их изобретений.

#компании #банки