#вопросы_с_собеседований
Какие побитовые операции вы знаете?
Какие побитовые операции вы знаете?
~ : Побитовый унарный оператор NOT;
& : Побитовый AND;
&= : Побитовый AND с присваиванием;
| : Побитовый OR;
|= : Побитовый OR с присваиванием;
^: Побитовый исключающее XOR;
^= : Побитовый исключающее XOR с присваиванием;
>> : Сдвиг вправо (деление на 2 в степени сдвига);
>>= : Сдвиг вправо с присваиванием;
>>> : Сдвиг вправо без учёта знака;
>>>= : Сдвиг вправо без учёта знака с присваиванием;
<< : Сдвиг влево (умножение на 2 в степени сдвига);
<<= : Сдвиг влево с присваиванием.
& : Побитовый AND;
&= : Побитовый AND с присваиванием;
| : Побитовый OR;
|= : Побитовый OR с присваиванием;
^: Побитовый исключающее XOR;
^= : Побитовый исключающее XOR с присваиванием;
>> : Сдвиг вправо (деление на 2 в степени сдвига);
>>= : Сдвиг вправо с присваиванием;
>>> : Сдвиг вправо без учёта знака;
>>>= : Сдвиг вправо без учёта знака с присваиванием;
<< : Сдвиг влево (умножение на 2 в степени сдвига);
<<= : Сдвиг влево с присваиванием.
Ozon научит Go бесплатно! Важная новость для всех, кто связывает своё будущее с написанием кода: самый быстрорастущий российский e-commerce запускает бесплатную школу Go. Это возможность за два месяца стать middle-специалистом с опытом решения реальных задач и проектом в портфолио — а лучшие выпускники получат предложение о работе в Ozon. Что нужно, чтобы поступить? Опыт в написании кода, сделанное тестовое задание и, конечно, заявка. Подробности тут: http://ozon.dev/goschool
#вопросы_с_собеседований
В чем отличие между поверхностным и глубоким клонированием?
В чем отличие между поверхностным и глубоким клонированием?
Поверхностное копирование копирует настолько малую часть информации об объекте, насколько это возможно. По умолчанию, клонирование в Java является поверхностным, т.е. класс Object не знает о структуре класса, которого он копирует. Клонирование такого типа осуществляется JVM по следующим правилам:
✔️ Если класс имеет только члены примитивных типов, то будет создана совершенно новая копия объекта и возвращена ссылка на этот объект.
✔️ Если класс помимо членов примитивных типов содержит члены ссылочных типов, то тогда копируются ссылки на объекты этих классов. Следовательно, оба объекта будут иметь одинаковые ссылки.
Глубокое копирование дублирует абсолютно всю информацию объекта:
✔️ Нет необходимости копировать отдельно примитивные данные;
✔️ Все члены ссылочного типа в оригинальном классе должны поддерживать клонирование. Для каждого такого члена при переопределении метода clone() должен вызываться super.clone();
✔️ Если какой-либо член класса не поддерживает клонирование, то в методе клонирования необходимо создать новый экземпляр этого класса и скопировать каждый его член со всеми атрибутами в новый объект класса, по одному.
✔️ Если класс имеет только члены примитивных типов, то будет создана совершенно новая копия объекта и возвращена ссылка на этот объект.
✔️ Если класс помимо членов примитивных типов содержит члены ссылочных типов, то тогда копируются ссылки на объекты этих классов. Следовательно, оба объекта будут иметь одинаковые ссылки.
Глубокое копирование дублирует абсолютно всю информацию объекта:
✔️ Нет необходимости копировать отдельно примитивные данные;
✔️ Все члены ссылочного типа в оригинальном классе должны поддерживать клонирование. Для каждого такого члена при переопределении метода clone() должен вызываться super.clone();
✔️ Если какой-либо член класса не поддерживает клонирование, то в методе клонирования необходимо создать новый экземпляр этого класса и скопировать каждый его член со всеми атрибутами в новый объект класса, по одному.
Learn Java 12 Programming (2019)
Автор: Nick Samoylov
Java - один из самых популярных высокоуровневых языков среди разработчиков, используемый во всем, начиная от смартфонов и игровых консолей и заканчивая суперкомпьютерами, а новые функции дополняют его богатство. При помощи данной книги вы можете изучить основы программирования на Java.
Скачать книгу
Автор: Nick Samoylov
Java - один из самых популярных высокоуровневых языков среди разработчиков, используемый во всем, начиная от смартфонов и игровых консолей и заканчивая суперкомпьютерами, а новые функции дополняют его богатство. При помощи данной книги вы можете изучить основы программирования на Java.
Скачать книгу
Telegram
Книги для программистов (reserved)
Learn Java 12 Programming (2019)
Автор: Nick Samoylov
Автор: Nick Samoylov
#вопросы_с_собеседований
1. Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
2. Как получить следующий вторник, используя Date Time API?
1. Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
2. Как получить следующий вторник, используя Date Time API?
«Цифровой прорыв» 2020 открывает прием заявок на масштабный IT-марафон с призовым фондом 5.000.000 руб.! ⚡️
В режиме онлайн ты сможешь реализовать свою идею, создать действительно классный продукт, который будет менять жизни людей. 🚀
💥 Регистрируйся по ссылке: https://proglib.io/w/5152ae58
Тебя ждут два онлайн-хакатона, которые пройдут 5-7 июня и 19-21 июня. 👨🏻💻👩🏼💻
- 36 часов кодинга/400 команд;
- Крутые кейсовые задания от Росатома, Сбербанка, Глобального русскоговорящего технологического сообщества Rutech;
- Образовательная программа;
- Трекеры и эксперты , которые будут помогать тебе на каждом этапе.
🌏 25 июня - 25 июля состоится онлайн-чемпионат на технологической платформе Mail.ru:
- Индивидуальное участие;
- Задачи по Machine Learning и Data Science;
- Возможность попасть на финал Цифрового Прорыва!
🎯 Проверь свои силы и разработай крутой проект для решения реальных бизнес-задач, регистрируйся по ссылке: https://proglib.io/w/5152ae58
В режиме онлайн ты сможешь реализовать свою идею, создать действительно классный продукт, который будет менять жизни людей. 🚀
💥 Регистрируйся по ссылке: https://proglib.io/w/5152ae58
Тебя ждут два онлайн-хакатона, которые пройдут 5-7 июня и 19-21 июня. 👨🏻💻👩🏼💻
- 36 часов кодинга/400 команд;
- Крутые кейсовые задания от Росатома, Сбербанка, Глобального русскоговорящего технологического сообщества Rutech;
- Образовательная программа;
- Трекеры и эксперты , которые будут помогать тебе на каждом этапе.
🌏 25 июня - 25 июля состоится онлайн-чемпионат на технологической платформе Mail.ru:
- Индивидуальное участие;
- Задачи по Machine Learning и Data Science;
- Возможность попасть на финал Цифрового Прорыва!
🎯 Проверь свои силы и разработай крутой проект для решения реальных бизнес-задач, регистрируйся по ссылке: https://proglib.io/w/5152ae58
#вопросы_с_собеседований
Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом?
Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом?
🔵 Внутри класса доступ к приватной переменной открыт без ограничений;
🔵 Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
🔵 Доступ к приватным переменным извне может быть организован через отличные от приватных методы, которые предоставлены разработчиком класса. Например: getX() и setX().
🔵 Через механизм рефлексии (Reflection API):
🔵 Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
🔵 Доступ к приватным переменным извне может быть организован через отличные от приватных методы, которые предоставлены разработчиком класса. Например: getX() и setX().
🔵 Через механизм рефлексии (Reflection API):
#вопросы_с_собеседований
В чем отличия TreeSet и HashSet?
В чем отличия TreeSet и HashSet?
TreeSet обеспечивает упорядоченное хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).
HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
#вопросы_с_собеседований
Для Enum есть специальный класс java.util.EnumSet. Зачем? Чем авторов не устраивал HashSet или TreeSet?
Для Enum есть специальный класс java.util.EnumSet. Зачем? Чем авторов не устраивал HashSet или TreeSet?
EnumSet - это реализация интерфейса Set для использования с перечислениями (Enum). В структуре данных хранятся объекты только одного типа Enum, указываемого при создании. Для хранения значений EnumSet использует массив битов (bit vector), - это позволяет получить высокую компактность и эффективность. Проход по EnumSet осуществляется согласно порядку объявления элементов перечисления.
Все основные операции выполняются за O(1) и обычно (но не гарантированно) быстрее аналогов из HashSet, а пакетные операции (bulk operations), такие как containsAll() и retainAll() выполняются даже гораздо быстрей.
Помимо всего EnumSet предоставляет множество статических методов инициализации для упрощенного и удобного создания экземпляров.
Все основные операции выполняются за O(1) и обычно (но не гарантированно) быстрее аналогов из HashSet, а пакетные операции (bulk operations), такие как containsAll() и retainAll() выполняются даже гораздо быстрей.
Помимо всего EnumSet предоставляет множество статических методов инициализации для упрощенного и удобного создания экземпляров.
#вопросы_с_собеседований
Пара вопросов по многопоточности:
1. Почему не рекомендуется использовать метод Thread.stop()?
2. Что происходит, когда в потоке выбрасывается исключение?
Пара вопросов по многопоточности:
1. Почему не рекомендуется использовать метод Thread.stop()?
2. Что происходит, когда в потоке выбрасывается исключение?