Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Назовите один или два лучших вопроса, заданных вам, на интервью? 
:(
    Опции темы
Royan
  Дата 24.6.2012, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Народ поделитесь, пожалуйста, опытом. Назовите один-два лучших по вашему мнению вопроса, которые когда либо попадались вам на интервью (по java разумеется)? Вопросы, об устройстве hashmap'а, специфики имплементации класса String, чем отличается interface от class'а, базовое ООП -- всего этого не надо, будем считать это базовыми вопросами. В этом топике только интересные вопросы.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Stolzen
Дата 24.6.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



"Что вам больше всего не нравится в джава?"



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Pawl
Дата 25.6.2012, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



на каком объекте происходит синхронизация статического метода
знаю ли я функциональное программирование (спросили на собеседование по java)


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Samotnik
Дата 25.6.2012, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



как серелиазовать несереализуемое
PM MAIL   Вверх
AntonSaburov
Дата 25.6.2012, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Назовите механическое воплощение преобразования стека в очередь - ответ был автомат Калашникова smile Позабавило.
PM MAIL WWW ICQ   Вверх
jk1
Дата 25.6.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



"Как производительность synchronized в хотспоте зависит от реализации hashCode в мониторе?"


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
LSD
Дата 25.6.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(jk1 @  25.6.2012,  14:18 Найти цитируемый пост)
Как производительность synchronized в хотспоте зависит от реализации hashCode в мониторе?

И каков ответ?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
jk1
Дата 25.6.2012, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

И каков ответ? 


Собственно блокировка на synchronized может реально принимать три формы: 
- Biased: На монитор записывается идентификатор потока один раз при помощи CAS и затем после выполнения критических секций только проверяется, что он еще там, если же нет (то бишь состязание за ресурс имеет место быть), то блокировка сваливается в lighweight или даже fat
- Lightweight: CAS на входе и выходе для привязки монитора к потоку только на время критической секции
- Fat: использование нативного мьютекса операционнной системы

А вот чего я не знал, когда отвечал, так это того, куда для biased записывается идентификатор потока. Он записывается в заголовок объекта на место, в котором хранится нативный хэшкод. И если hashCode() не переопределен, то значение нативного хэшкода в заголовке перетирать нельзя и biased вообще не будет использоваться.

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


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
LSD
Дата 25.6.2012, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата
Finally, there's not currently space in the mark word to support both an identity hashCode() value as well as the thread ID needed for the biased locking encoding. Given that, you can avoid biased locking on a per-object basis by calling System.identityHashCode(o). If the object is already biased, assigning an identity hashCode will result in revocation, otherwise, the assignment of a hashCode() will make the object ineligible for subsequent biased locking. This property is an artifact of our current implementation, of course.

Biased Locking in HotSpot
Т.е. даже имплементация hashCode не гарантирует что biased locking будет использоваться. Плюс статья довольно старая (2006 год), возможно в 7-ке уже это исправлено. А то получается, что синхронизация на Object будет медленней, например тот же Swing синхронизируется на Object.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
jk1
Дата 25.6.2012, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Т.е. даже имплементация hashCode не гарантирует что biased locking будет использоваться.


Разве я говорил про гарантии его использования? smile Речь о том, что без хэшкода biased точно не будет. Впрочем на новых процах CAS дешевеет помаленьку, так что это софтверное решение хардверной проблемы дорогого CAS'a должно скоро стать историей.

Цитата

например тот же Swing синхронизируется на Object. 

Swing - однопоточный toolkit. Большинство его компонент не thread safe и синхронизации никакой не имеют, то есть для Swing это обсуждение вряд ли актуально. Кроме того, у меня сильное подозрение, что его синхронизация писалась тогда, когда biased locking'а и в помине еще не было.
Не стали же, например, JAX-RPC переписывать под стандартный JABX-маппинг, так и оставили свой велосипед.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
LSD
Дата 26.6.2012, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(jk1 @  25.6.2012,  21:51 Найти цитируемый пост)
Swing - однопоточный toolkit. Большинство его компонент не thread safe и синхронизации никакой не имеют, то есть для Swing это обсуждение вряд ли актуально.

Посмотри как работает invalidate.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
jk1
Дата 26.6.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Посмотри как работает invalidate. 

Посмотрел, оказывается тяжелое наследие awt никуда не делось. Был неправ, спасибо.

Но вот чего я не понимаю, так это синхронизации на Object в этом коде. Равно как и вот этих фокусов:
Код

static final Object LOCK = new AWTTreeLock();
static class AWTTreeLock {}



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Royan
Дата 27.6.2012, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Цитата(jk1 @  26.6.2012,  12:10 Найти цитируемый пост)
Но вот чего я не понимаю, так это синхронизации на Object в этом коде. Равно как и вот этих фокусов:

Ну я так понимаю, что это просто выделенный класс/объект для синхронизации, который виден только внутри класса и нигде не референсится наружу. Этакая защита от глупых deadlock'ов (в особенности из-за синхронизировации на this)

Это сообщение отредактировал(а) Royan - 27.6.2012, 04:28


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
jk1
Дата 27.6.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Ну я так понимаю, что это просто выделенный класс/объект для синхронизации, который виден только внутри класса и нигде не референсится наружу. Этакая защита от глупых deadlock'ов (в особенности из-за синхронизировации на this)


Я бы тоже так подумал, если бы там был модификатор private. А так оно открыто потомкам и в пределах пакета, что не сильно похоже на спрятанный мьютектс.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
LSD
Дата 27.6.2012, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(jk1 @  27.6.2012,  11:31 Найти цитируемый пост)
А так оно открыто потомкам и в пределах пакета, что не сильно похоже на спрятанный мьютектс.

package private потомкам не доступен, а учитывая что в пакаджи java и javax ты так просто классы не загрузишь, то спрятан он достаточно надежно.
А вот зачем нужен специальный класс я не понимаю. Если я как-то получу ссылку на этот LOCK (например через рефлексию вытащу) я могу спокойно захватывать на нем монитор, даже если класс объекта мне не доступен.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1316 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.