Найти в Дзене
Cyber real

Ответы на вопросы на собеседование Java Core

1. Какая разница между процессом и потоком? Существую отличия в: 2. Как избежать DEADLOCK? В основном это возникает так как в одной блокировке ещё одна и более блокировок. Поэтому избежать подобное можно тем что вместо вложенности нужно добавить новую абстракцию поверх и дать блокировку на более высокий уровень, а вложенные блокировки убрать. Чем больше блокировок, тем больше шансов что будет deadlock. Поэтому каждый раз добавляя новую блокировку нужно думать, а точно она нужна или можно избежать её добавления. Использование thread.joino. дедлок можно сделать также при ожидании одного реда другим. Чтобы избежать этой проблемы, можно подумать над тем, чтобы выставить ограниченное время на joino метод. Если у нас один поток- deadlock не будет. 3. Что такое hard-references, week-references, soft-references, phantom-references? Hard-references - стандартные ссылки на объекты, которые становиться eligible for collection после недостижимости из root set. Week-references - объекты мог
Оглавление

1. Какая разница между процессом и потоком?

Существую отличия в:

  • 1. Программа в исполнение называется процессом, тогда как поток является подмножеством процесса.
  • 2. Процессы не зависимы, тогда как потоки являются подмножеством процесса.
  • 3. Процессы имеют различное адресное пространство в памяти, в то время как потоки содержат общее адресное пространство.
  • 4. Переключение контекста происходит быстрее между потоками по сравнению с процессами.
  • 5. Межпроцессное взаимодействие медленнее и дороже, чем межпотоковое взаимодействие.
  • 6. Любые изменения в родительском процессе не влияют на дочерний процесс, тогда как изменения в родительском потоке могут влиять на дочерний процесс.

2. Как избежать DEADLOCK?

В основном это возникает так как в одной блокировке ещё одна и более блокировок.

Поэтому избежать подобное можно тем что вместо вложенности нужно добавить новую абстракцию поверх и дать блокировку на более высокий уровень, а вложенные блокировки убрать.

Чем больше блокировок, тем больше шансов что будет deadlock. Поэтому каждый раз добавляя новую блокировку нужно думать, а точно она нужна или можно избежать её добавления.

Использование thread.joino. дедлок можно сделать также при ожидании одного реда другим. Чтобы избежать этой проблемы, можно подумать над тем, чтобы выставить ограниченное время на joino метод.

Если у нас один поток- deadlock не будет.

deadlock
deadlock

3. Что такое hard-references, week-references, soft-references, phantom-references?

Hard-references - стандартные ссылки на объекты, которые становиться eligible for collection после недостижимости из root set.

Week-references - объекты могут быть удалены при наличии слабой ссылки на него в любое время.

Soft-references - объекты могут удаляться GC при недостатке памяти.

Phantom-references - объекты не доступны напрямую по ссылкам, перед удалением помещаются в очередь на удаление. Нужны для более безопасной финализации ссылок ( вместо finalize).

4. Generics: в чём преимущество, как работает? Что такое type-erasure? В чём отличия от шаблонов C++?

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

Type-erasure - это стирание информации о типе-параметре в runtime. Таким образом, в байт-коде мы увидим list, set вместо list "integer", set"integer", ну и type-cast при необходимости.

В отличии от дженериков в java, в C++ шаблоны в итоге приводят к компиляции метода или типа для каждого специфицированного типа параметра ( специализации шаблона).

На этом всё, спасибо за внимание!

Java
Java