#вопросы_с_собеседований
Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
interface Paper {
default void show() {
System.out.println("default show()");
}
}
class Licence implements Paper {
public void show() {
Paper.super.show();
}
}
default void show() {
System.out.println("default show()");
}
}
class Licence implements Paper {
public void show() {
Paper.super.show();
}
}
#вопросы_с_собеседований
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
Объявляем конкурс на самый интересный контент в телеграм-каналах Proglib!
Призовой фонд — 280 тысяч рублей.
Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
В каналах по языкам программирования, data science и мобильной разработке интересно увидеть топовые материалы по этим темам, в канале @progbook топовые рецензии на книги, в @proglibrary материалы по общим темам: проектирование, базы данных, linux, алгоритмы и структуры данных. Поощряются интерактивные форматы — авторские тесты, квизы, функционал которых встроен в Telegram, гифки, шпаргалки, неочевидные фишки.
Полный список каналов:
https://yangx.top/progbook
https://yangx.top/proglibrary
https://yangx.top/pyproglib
https://yangx.top/frontendproglib
https://yangx.top/javaproglib
https://yangx.top/dsproglib
https://yangx.top/phpproglib
https://yangx.top/cppproglib
https://yangx.top/mobileproglib
https://yangx.top/goproglib
https://yangx.top/csharpproglib
https://yangx.top/devopsslib
https://yangx.top/testerlib
https://yangx.top/hackproglib
Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Чем больше лайков/охватов/кликов по ссылкам в публикации, тем больше шансов статьи победителем в конкурсе. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
Призовой фонд — 280 тысяч рублей.
Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
В каналах по языкам программирования, data science и мобильной разработке интересно увидеть топовые материалы по этим темам, в канале @progbook топовые рецензии на книги, в @proglibrary материалы по общим темам: проектирование, базы данных, linux, алгоритмы и структуры данных. Поощряются интерактивные форматы — авторские тесты, квизы, функционал которых встроен в Telegram, гифки, шпаргалки, неочевидные фишки.
Полный список каналов:
https://yangx.top/progbook
https://yangx.top/proglibrary
https://yangx.top/pyproglib
https://yangx.top/frontendproglib
https://yangx.top/javaproglib
https://yangx.top/dsproglib
https://yangx.top/phpproglib
https://yangx.top/cppproglib
https://yangx.top/mobileproglib
https://yangx.top/goproglib
https://yangx.top/csharpproglib
https://yangx.top/devopsslib
https://yangx.top/testerlib
https://yangx.top/hackproglib
Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Чем больше лайков/охватов/кликов по ссылкам в публикации, тем больше шансов статьи победителем в конкурсе. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
Telegram
Книги для программистов
Все о книгах из мира IT.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/de94a698
Работать у нас: https://job.proglib.io/
Наши каналы: https://yangx.top/proglibrary/9197
РКН: https://www.gosuslugi.ru/snet/67931954509aba565214777d
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/de94a698
Работать у нас: https://job.proglib.io/
Наши каналы: https://yangx.top/proglibrary/9197
РКН: https://www.gosuslugi.ru/snet/67931954509aba565214777d
☕️ OutputStreamWriter — «мост» между классом OutputStream и классом Writer. Символы, записанные в поток, преобразовываются в байты.
☕️ InputStreamReader — аналог для чтения. При помощи методов класса Reader читаются байты из потока InputStream и далее преобразуются в символы.
☕️ InputStreamReader — аналог для чтения. При помощи методов класса Reader читаются байты из потока InputStream и далее преобразуются в символы.
Что такое Java-модули?
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
#Модули
Java Platform Module System (JPMS) – система модулей, появившаяся в Java версии 9. Она разрабатывалась под названием Project Jigsaw, и ожидалась еще с Java 7.
Модуль – группа связанных пакетов и ресурсов. Механизм модулей определяет видимость содержимого одних модулей для других. Скрытые модули недоступны ни для обычного использования в коде, ни даже для рефлекшна:
Class.forName()
выбросит ClassNotFoundException
. Вдобавок, модули инкапсулируют собственные ресурсы – конфиги и медиафайлы больше не хранятся в общей куче.
Модуль определяется файлом объявления
module-info.java
.JVM может работать относительно модулей в трех режимах:
• Legacy mode – применяется, когда код компилируется в режиме совместимости с версиями Java 8 и меньше. Весь код работает как безымянный модуль, флаги для настройки модулярности не работают.
• Single module mode – когда не используется флаг
--module-source-path
. Структура проекта остается старой, файл module-info.java
лежит в директории /src
. Поэтому иметь несколько модулей в одном проекте не получится.• Multi-module mode – каждый модуль находится в собственной директории. Общая корневая директория передается в
--module-source-path
. Полноценное использование JPMS.#Модули
⚡️Ищете работу или мечтаете поменять профессию?
Полезная информация для вас. За интересными вакансиями следите на профильном канале @pravkiforyou.
Этот канал публикует вакансии с тех пор, как по телеграму ходили динозавры 🦖. Там сразу все условия и прямые контакты работодателей, без посредников.
Молодых перспективных специалистов легче найти в телеграме, а подписаться на вакансии тут: https://yangx.top/pravkiforyou
Полезная информация для вас. За интересными вакансиями следите на профильном канале @pravkiforyou.
Этот канал публикует вакансии с тех пор, как по телеграму ходили динозавры 🦖. Там сразу все условия и прямые контакты работодателей, без посредников.
Молодых перспективных специалистов легче найти в телеграме, а подписаться на вакансии тут: https://yangx.top/pravkiforyou
Инкапсуляция
Один из основных принципов ООП. Как обычно бывает с фундаментальными понятиями, границы определения размыты. В самом общем случае под инкапсуляцией подразумевается группировка информации и логики обработки именно этой информации. В этом смысле инкапсуляция достигается средствами модульного программирования.
Более узкий и прикладной смысл инкапсуляции – принцип сокрытия данных. Так инкапсуляция достигается не только группировкой, но и ограничением доступа к внутренней реализации для других компонентов. Под компонентами здесь подразумеваются и более мелкие чем модуль части программы. Функция инкапсулирует локальные переменные, класс инкапсулирует приватные поля.
Термин тесно связан с понятием абстракции. Это техника разделения программного контракта и средств его реализации. Если проще, разделения на интерфейс и его имплементацию.
Понятие инкапсуляции присуще не только ООП. Абстракция данных применяется например и в функциональном программировании, модуляризация широко применима в процедурных языках.
#ООП
Один из основных принципов ООП. Как обычно бывает с фундаментальными понятиями, границы определения размыты. В самом общем случае под инкапсуляцией подразумевается группировка информации и логики обработки именно этой информации. В этом смысле инкапсуляция достигается средствами модульного программирования.
Более узкий и прикладной смысл инкапсуляции – принцип сокрытия данных. Так инкапсуляция достигается не только группировкой, но и ограничением доступа к внутренней реализации для других компонентов. Под компонентами здесь подразумеваются и более мелкие чем модуль части программы. Функция инкапсулирует локальные переменные, класс инкапсулирует приватные поля.
Термин тесно связан с понятием абстракции. Это техника разделения программного контракта и средств его реализации. Если проще, разделения на интерфейс и его имплементацию.
Понятие инкапсуляции присуще не только ООП. Абстракция данных применяется например и в функциональном программировании, модуляризация широко применима в процедурных языках.
#ООП
Wikipedia
Модульное программирование
организация компьютерной программы как совокупности небольших независимых блоков
#вопросы_с_собеседований
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Метод File.listFiles() возвращает массив объектов File, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter. Это позволяет включить в список только те элементы, для которых метод accept возвращает true (критерием может быть длина имени файла или его расширение).
Есть опыт и знания в IT, которыми Вы хотите поделиться ?
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
LIFO и FIFO
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Погрузись в разработку на востребованном языке программирования Java!
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Что такое О-нотация?
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
2. "Недоминантный компонент" тоже можно выбросить:
Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
O(n^2)
. По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
(n*C)^2
. Здесь C
– любая фиксированная величина, не зависящая от n.Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
O(42*n) = O(n)
.2. "Недоминантный компонент" тоже можно выбросить:
O(n^2 + n) = O(n^2)
. Потому что n^2 + n < 2*n^2
при больших n
.Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Библиотека программиста планирует организовать серию офлайн-мероприятий.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Google Docs
Какие мероприятия наиболее интересны?
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Погрузись в разработку на востребованном языке программирования Java! Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный…»
Связный список
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
☕️ 7 причин стать разработчиком на Java в 2021 году
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
В чем разница между агрегацией, композицией, и ассоциацией?
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Как написать синглтон?
Singleton – это паттерн проектирования «одиночка», класс с единственным экземпляром. Такая пространная формулировка открывает простор для подходов к реализации, а значит и для уточняющих вопросов, на которые и рассчитывает интервьюер.
Первое что надо выяснить – единственный экземпляр в рамках чего. В базовом случае уникальность объекта обеспечивается на уровне реализации класса. Но при этом базовом подходе создается по объекту на каждый класслоадер. Для уникальности на всю виртуальную машину реализацию нужно дополнить. Понадобится больше действий уже на уровне ОС чтобы добиться единого экземпляра между процессами JVM. С другой стороны, может требоваться специфичное для фреймворка сужение «области уникальности», например по экземпляру на каждый Spring IoC-контейнер.
Затем вы узнаете, должен ли быть ровно один экземпляр, или не больше одного. Проще говоря, должно ли его создание быть ленивым. Возможно время использования объекта ограничено внешними условиями, и позднее он должен быть утилизирован.
И наконец нужно уточнить, в каких обстоятельствах подразумевается его использовать. Обычно предлагают условие многопоточной среды – инстанцирование необходимо синхронизировать. Другое возможное требование – сохранение состояния от запуска к запуску. Спектр опций здесь ограничивается только фантазией собеседующего.
О вариантах конкретных реализаций написано много статей. Обычно на интервью ожидается знание самых стандартных подходов, которые описаны, например, здесь.
#Классы
Singleton – это паттерн проектирования «одиночка», класс с единственным экземпляром. Такая пространная формулировка открывает простор для подходов к реализации, а значит и для уточняющих вопросов, на которые и рассчитывает интервьюер.
Первое что надо выяснить – единственный экземпляр в рамках чего. В базовом случае уникальность объекта обеспечивается на уровне реализации класса. Но при этом базовом подходе создается по объекту на каждый класслоадер. Для уникальности на всю виртуальную машину реализацию нужно дополнить. Понадобится больше действий уже на уровне ОС чтобы добиться единого экземпляра между процессами JVM. С другой стороны, может требоваться специфичное для фреймворка сужение «области уникальности», например по экземпляру на каждый Spring IoC-контейнер.
Затем вы узнаете, должен ли быть ровно один экземпляр, или не больше одного. Проще говоря, должно ли его создание быть ленивым. Возможно время использования объекта ограничено внешними условиями, и позднее он должен быть утилизирован.
И наконец нужно уточнить, в каких обстоятельствах подразумевается его использовать. Обычно предлагают условие многопоточной среды – инстанцирование необходимо синхронизировать. Другое возможное требование – сохранение состояния от запуска к запуску. Спектр опций здесь ограничивается только фантазией собеседующего.
О вариантах конкретных реализаций написано много статей. Обычно на интервью ожидается знание самых стандартных подходов, которые описаны, например, здесь.
#Классы
Stack Overflow
Singleton class with several different classloaders
E.g I have class Singleton with static field instance:
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
I can load this class
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
I can load this class