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

Мемы: @java_memes
加入频道
Как составить резюме, если нет опыта разработки. Часть 2

Если проходили курсы - укажите их. Курсы по Джаве добавьте в опыте работы. Перечислите технологии, которые изучили. Опишите разработанный проект. Остальные курсы и лекции по программированию - отдельно. Например, можно указать sql-ex и w3schools.

Репозиторий. Если изучали язык самостоятельно, то выложите на ГитХаб свои проекты. Например, PatShop и ToDo. Это покажет, что вы работали с Гитом и у вас есть опыт разработки своих приложений. Опишите, что позволяет делать каждый проект.

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

Плохо
Пунктуален, ответственен, отзывчив. По вечерам слушаю Аллегрову

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


Помните, главное - честность. Будьте готовы рассказать на собеседовании подробно о каждом пункте в резюме. Об указанных технологиях - как они работают. О проектах - их функциональность и как разрабатывали.
Настроил VPN для Telegram?
Держи несколько сервисов, если появится желание:

Бот @socks5_bot
Внешние сайты:
http://opentg.us
http://fuckrkn.us
https://tgvpn.com/ru
http://telegram.veesecurity.com
JRE и JDK

Существует две поставки Джавы: Java Runtime Environment(JRE) и Java Development Kit(JDK).

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

Состав JRE:
- Java Class Library
- Java Virtual Machine
- Just-in-time Compiler
- Garbage Collector
- Java application launcher
Подробнее эти пункты я еще распишу.

JDK нужна для разработки приложений на Джаве. С её помощью можем скомпилировать исходный код и запустить его. Посмотреть исходники стандартной библиотеки и её документацию. Промониторить, сколько памяти потребляют объекты внутри приложения, когда оно запущено.

Состав JDK:
- JRE
- Исходники стандартной библиотеки
- Специальные тулзы: для разработки, дебага, мониторинга приложений
#обучение #jdk #jre
JVM

Или Java Virtual Machine - среда для запуска Джава-приложений. Виртуальная машина читает Байт-код и передаёт команды процессору. Байт-код - это скомпилированный исходный код. Он нечитаем для человек и понятен для JVM. Чтобы получить Байт-код, мы должны написать программу на Джаве и отдать её специальному компилятору javac. Например, я пишу код в файле application.java. Передам его компилятору, и получу application.class.

При запуске программы операционная система выделяет необходимый объём оперативной памяти под JVM. И у разработчиков нет прямого доступа к памяти системы.

JVM выполняет ещё программы, написанные на других языках программирования: Scala, Kotlin, Groovy. Их исходники тоже компилируются в Байт-код.

Неплохая статья о JVM и Байт-коде: https://bit.ly/2ENapHC

#обучение #jvm
Write once. Run anywhere
Герберт Шилдт - Java 8. Полное руководство

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

Плюсы: темы удобно структурированы и подробно описаны.
Минусы: примеров иногда не хватает и нет заданий для закрепления материала.

#книги
Вопросы с собеседований

Те, кто ещё в телеге, держите вопросы с собеседований. Их задают джунам почти в каждой компании.

— Перечислить основные принципы ООП.
— Привести пример применения полиморфизма.
— Какие есть модификаторы доступа?
— Что такое интерфейс?
— Какое отличие абстрактного класса от интерфейса?
— Перечислить методы, которые присутствуют во всех объектах java.
— Какие из них не public? Почему?
— Зачем нужен метод finalize?
— Какая связь между equals and hashcode?
— Рассказать иерархию исключений.
— Отличия между ArrayList и LinkedList.
Структуры данных в картинках

Для тех, кто изучает коллекции или хочет освежить знания, рекомендую серию статей с Хабра "Структуры данных в картинках". Автор подробно описывает внутренности ArrayList, LinkedList, HashMap, LinkedHashMap. Он пишет, как происходит создание объекта, вставка элемента в коллекцию, удаление. В конце статей приведены сложности и особенности каждой коллекции.

https://bit.ly/2HOIGK4 ArrayList
https://bit.ly/2vs53Cv LinkedList
https://bit.ly/2qLOZFS HashMap
https://bit.ly/2JaYFkK LinkedHashMap

#обучение
Сегодня буду выкладывать небольшие задачки с собеседований.

Первая. Найдите, где будет ошибка
interface A {
void run();
}

interface B {
void run();
}

interface C {
String run();
}

class Test1 имплементирует A, B
class Test2 имплементирует A, C
Что произойдёт, когда запустим код?

Boolean b = null;
if (b) {
System.out.println("...");
}
Что будет написано в консоли?

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

protected void finalize() {
sout("from Finalize");
}
}
Проблемы с Git

Список частых проблем при работе с Git и их решения. Вопросы разделены по категориям, а ответы написаны понятным языком. Плюс в конце линки на книги, туториалы и GUI-клиенты по Git.

https://bit.ly/1oKguJM #git
Ещё задачи с интервью

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

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

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

public interface Counter {
int get();
void inc();
}
В чём разница между
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/