Проблемы с множественной чтением и параллелизмом являются неотъемлемой частью любого интервью Java. Если вы хотите получить информацию о фронтальной информационной позиции в любом инвестиционном банке акций, вам следует подготовить множество вопросов о многопользовании. Многопользовательская программа и параллелизм являются очень популярной темой в инвестиционном банковском деле, особенно связанных с разработкой электронных транзакций. Они будут задавать интервьюеры много запутанных вопросов с потоком Java. Интервьюер просто хочет быть уверенным, что интервьюер имеет достаточно знаний о потоке и параллелизме Java, потому что многие кандидаты являются лишь поверхностными. Электронные торговые системы с высокой пропускной способностью и низкой задержкой для прямых рыночных транзакций по своей сути одновременно. Ниже приведены вопросы по резьбе Java, которые я люблю задавать в разное время и места. Я не дал ответа, но я дам вам подсказки, когда это возможно, и иногда эти подсказки достаточно, чтобы ответить на вопросы. Теперь возникают все больше и больше проблем, касающихся параллельных пакетов Java5, касающихся параллельных инструментов и одновременных коллекций. Темолокальная, блокирующая очередь, подсчет семафора и concurrenthashmap более популярны среди этих вопросов.
15 Вопросы и ответы Java многопоточно
1) Сейчас есть три потока T1, T2 и T3.
Этот вопрос обычно задается на стадии первого раунда или телефонного интервью с целью проверить, знакомы ли вы с методом «присоединения». Эта проблема с мультипотчиком относительно проста и может быть реализована с использованием метода соединения.
2) Каковы преимущества интерфейса блокировки над синхронизированным блоком в Java? Вам необходимо реализовать эффективный кэш, который позволяет нескольким пользователям читать, но только один пользователь пишет, чтобы сохранить свою целостность.
Самым большим преимуществом интерфейсов блокировки в многопоточном и одновременном программировании является то, что они предоставляют блокировки для чтения и записи отдельно, что может удовлетворить вас, чтобы написать высокопроизводительные структуры данных, такие как concurrenthashmap и условное блокирование. Вопросы интервью Java Thread все чаще задаются на основе ответов интервьюера. Я настоятельно рекомендую тщательно читать замки, прежде чем вы перейдите на многопоточное интервью, потому что в настоящее время он используется для создания клиентского кеша системы электронных транзакций и пространства соединения транзакций.
3) Каковы различия между методами ожидания и сна в Java?
Вопросы интервью Java Thread, которые часто задают во время телефонных интервью. Самая большая разница в том, что ожидание выпускает замок во время ожидания, в то время как сон продолжает удерживать замок. Ожидание обычно используется для межполосных взаимодействий, и сон обычно используется для приостановки выполнения.
4) Используйте Java для реализации очередей блокировки.
Это относительно сложный вопрос с многопоточным интервью, который может достичь многих целей. Во -первых, он может обнаружить, может ли кандидат на самом деле писать программы в потоках Java; Если он использует методы wait () и уведомление () для реализации очередей блокировки, вы можете попросить его написать снова с последними одновременными классами в Java 5.
5) Используйте Java для написания кода для решения проблемы производителя-потребителя.
Это очень похоже на приведенный выше вопрос, но этот вопрос более классический. Как решить проблему-продюсера в Java? Иногда они даже спрашивают, как понять проблему еды философов.
6) Как вы решите проблему программирования программы, которая вызовет тупик в Java?
Это мой любимый вопрос интервью с темой Java, потому что, хотя проблемы с тупиком очень распространены при написании многопоточных параллельных программ, многие кандидаты не могут написать бесплатный код тупика (без кода тупика?), И они борются. Просто скажите им, что у вас есть n ресурсов и n потоков, и вам нужны все ресурсы для завершения операции. Для простоты n может быть заменен на 2, тем больше данные сделают проблему более сложной. Получите больше информации о тупиках, избегая тупиков в Java.
7) Что такое атомная операция и какая атомная операция на Java?
Очень простой вопрос интервью с темой Java, следующий вопрос заключается в том, что вам нужно синхронизировать атомную операцию.
8) Какова ключевая роль волатильной в Java? Как его использовать? Чем он отличается от синхронизированного метода в Java?
Поскольку модели памяти Java 5 и Java изменились, проблемы с потоком, основанные на изменчивом ключевом словом, становятся все более популярными. Вы должны быть готовы ответить о том, как летучие переменные обеспечивают видимость в одновременной среде.
9) Каковы условия конкуренции? Как вы обнаружите и решаете конкуренцию?
Это вопрос, который появляется на продвинутой стадии многопоточных интервью. Большинство интервьюеров спросят о условиях конкуренции, с которыми вы столкнулись недавно, и о том, как вы его решили. Есть моменты, когда они пишут простой код, а затем позволяют обнаружить условия гонки для кода. Вы можете обратиться к моей предыдущей статье о условиях гонки Java. По моему мнению, это один из лучших вопросов на интервью Java Thread, который может точно обнаружить опыт кандидатов в решении условий гонки или написания кода, который не содержит расовых данных или любых других условий расы. Лучшая книга об этом - «Практика параллелистики в Java».
10) Как вы будете использовать свалку потока? Как вы будете анализировать дамп потока?
В Unix вы можете использовать Kill -3, а затем дамп потока печатает журнал. Очень простой и профессиональный вопрос интервью с темой, но это будет сложно, если он спросит вас, как его проанализировать.
11) Почему мы выполняем метод run (), когда вызовываем метод start (), и почему мы не можем напрямую вызвать метод run ()?
Это еще один очень классический вопрос Java с многопоточным интервью. Это также моя путаница, когда я впервые начал писать программы по сбору тем. Теперь этот вопрос обычно задается во время телефонного интервью или в первом раунде интервью для юниоров и средней Java. Ответ на этот вопрос должен быть таким: когда вы вызовите метод start (), вы создадите новый поток и выполнит код в методе run (). Но если вы вызовите метод run () напрямую, он не создаст новый поток или выполнит код, который вызывает поток. Прочитайте статью «Разница между методом начала и запуска», которую я уже писал, чтобы получить больше информации.
12) Как разбудить блокирующую нить в Java?
Это сложный вопрос о потоке и блокировании, и у него есть много решений. Если поток встречается с блокировкой IO, я не думаю, что есть способ прервать поток. Если потоки блокируются из -за вызова wait (), sleep () или join () методов, вы можете прервать поток и разбудить его, выбрасывая прерывание. «Как справиться с методами блокировки в Java», я ранее писал, имеет много информации о работе с блокировкой ветки.
13) В чем разница между Cyclibarriar и Countdownlatch в Java?
Эта проблема с потоком в основном используется для определения того, знакомы ли вы с параллельными пакетами в JDK5. Разница между этими двумя заключается в том, что Cyclicbarrier может повторно использовать барьер, который был пройден, в то время как Countdownlatch не может быть использован повторно.
14) Что такое неизбежный объект и как он помогает писать одновременные приложения?
Еще один классический вопрос интервью для многопоточности не связан напрямую с темами, но он очень помогает косвенно. Этот вопрос интервью Java может стать очень сложным, если он просит вас написать неизменную объект или спрашивает вас, почему строка неизменна.
15) Какие общие проблемы вы сталкиваетесь в многопоточной среде? Как вы это решили?
Обычно встречающиеся в многопоточных и одновременных программах-это интерфейс памяти, условия гонки, тупики, живые замки и голод. Проблема не имеет конца, и если вы поймете это неправильно, ее будет трудно открыть и отлаживать. Это в основном основанные на интервью, а не практические вопросы, основанные на приложениях Java.
Несколько других вопросов добавлены:
1) В чем разница между зеленой нитью и локальной нитью в Java?
2) Разница между потоками и процессами?
3) Что такое переключение контекста в многопользовании?
4) Разница между тупиком и живым замком, разница между тупиком и голодом?
5) Какой алгоритм планирования потоков используется на Java?
6) Что такое планирование потоков на Java?
7) Как вы справляетесь с невозможными исключениями в ветке?
8) Что такое группа потоков и почему она не рекомендуется в Java?
9) Почему лучше использовать структуру исполнителя, чем создавать и управлять потоками с помощью приложений?
10) В чем разница между исполнителями и исполнителями в Java?
11) Как найти, какой поток использует самое длинное время ЦП в Windows и Linux?
Выше всего содержание этой статьи.