Size: a a a

2018 April 23
Java Developer
Ещё задачи с интервью

Что произойдёт, когда запустим код?
psvm(String[] args) {
 char[] ch = null;
 String s = null;
 Object ob = null;
 sout(ch);
 sout(s);
 sout(ob);
}
источник
Java Developer
Вывести на экран надпись "Hello world" два раза. Метод main менять нельзя.

public class Main {
 psvm(String[] args) {
  sout("Hello world");
 }
}

Сокращения:
psvm = public static void main
sout =  System.out.println
источник
Java Developer
Написать многопоточную реализацию счётчика

public interface Counter {
  int get();
  void inc();
}
источник
Java Developer
В чём разница между
synchronized void getS() {}

и
void getS() {
  synchronized (this) {    
  }
}
источник
2018 April 24
Java Developer
Внедрение зависимостей

Плохо
@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/
источник
2018 April 25
Java Developer
Скрыть ненужные чаты в Telegram

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

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

https://ksoftware.livejournal.com/202173.html
источник
Java Developer
источник
2018 April 27
Java Developer
Вопросы с собеседований

— виды циклов
— что такое рекурсия
— отличие final, finally, finalize
— что такое try-with-resource
— отличие wait(100) от sleep(100)
— что такое пул строк
— почему String является immutable
— какие виды деревьев существуют
— примеры применения деревьев
— рассказать, как работает HashMap
— что такое автобоксинг
— рассказать про алгоритмы сортировки и их сложности
— для чего нужны дженерики
источник
2018 April 29
Java Developer
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)
источник
Java Developer
Code style

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

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


Хорошо
for(Foo foo: foos) {
 bar.delete(foo);
}
источник
Java Developer
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);
}
источник
2018 April 30
Java Developer
Дисциплина важнее мотивации

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

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

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

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

#книги
источник
Java Developer
источник
2018 May 03
Java Developer
Как учить 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", "Какой будет результат запроса", "Сколько записей будет выбрано", "Сколько записей будет удалено".
источник
2018 May 06
Java Developer
Как не надо писать сопроводительное письмо

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

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

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

Завтра напишу о том, как правильно составить сопроводительное.
источник
2018 May 07
Java Developer
Как писать сопроводительное письмо

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

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

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

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

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

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

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