JavaRush /Блоги Java /Random-TG /15 савол барои мусоҳибаи техникӣ барои барномасози Java б...
dio
Сатҳи
Москва

15 савол барои мусоҳибаи техникӣ барои барномасози Java бо таҷрибаи 5-6 сол

Дар гурӯҳ нашр шудааст
Азбаски таҷрибаи барномасоз аз сатҳи таҳиягари навкор (аз 2 то 4 сол таҷрибаи корӣ) ба сатҳи таҳиягари калон (аз 5 то 7 сол) афзоиш меёбад, саволҳои мусоҳиба дар Core Java низ тағир меёбанд. 15 савол барои мусоҳибаи техникӣ барои барномасози Java бо таҷрибаи 5-6 сол - 1Албатта, асосҳо ба монанди сохторҳои додаҳо, алгоритмҳо ва барномасозии ба an object нигаронидашуда боқӣ мемонанд, аммо саволҳо ва ҷавобҳо муфассалтар мешаванд. Ман аксар вақт саволҳо мегирам, ки кадом саволҳои асосии Java аз таҳиягарони калон мепурсанд ва ё дар мусоҳиба барои вазифаи таҳиягари Java кадом саволҳоро интизор мешаванд. Ин маро каме ба ҳайрат меорад, зеро вақте ки шумо таҳиягари калон мешавед, шумо ба таври худкор дар мусоҳибаҳо иштирок мекунед ва шумо бояд тасаввуроте дошта бошед, ки аз мусоҳиба чӣ интизор шудан лозим аст, аммо дар айни замон ман мефаҳмам, ки донистани мусоҳиба саволҳо, Барои шумо омода шудан ба он осонтар мешавад. Албатта, шумо саволҳоеро нахоҳед гирифт, ки ба барномасозоне, ки таҷрибаи 2-3 сол бо Java доранд, дода мешаванд, гарчанде ки ин дар оғози мусоҳиба истисно нест. Ман байни мусоҳибаҳои телефонӣ ва мусоҳибаи рӯ ба рӯ ҳеҷ фарқияте намебинам. Баъзе саволҳо ҳамоно боқӣ мемонанд, баъзе саволҳо ҷавобҳои муфассалро талаб мекунанд. Дар ин мақола, ман 15 саволҳои техникии Java-ро мубодила хоҳам кард , ки дар мусоҳибаҳои таҳиягарони калон ҳангоми мусоҳибаҳои телефонӣ пурсида шуданд. Ман ҳамаи ҷавобҳоро нашр намекунам, аммо шумо метавонед онҳоро дар блоги ҷорӣ ё блоги Javarevisited пайдо кунед .

15 савол дар бораи Core Java барои барномасозоне, ки таҷрибаи таҳияи 5-6 доранд

Ҳама саволҳо аз таҳиягарони калони корӣ, ки таҷрибаи зиёда аз 5 сол доранд, гирифта шуданд. Таҳиягарон бо ин саволҳо дар марҳилаҳои гуногуни шуғл, аз ҷумла мусоҳибаҳои телефонӣ ва рӯ ба рӯ дучор шуданд.
  1. getУсули синф дар Java чӣ гуна кор мекунад HashMap?

    Бале, ин то ҳол яке аз саволҳои маъмултарин барои як таҳиягари калон аст, шумо бояд онро дар мусоҳибаи телефонӣ интизор шавед, эҳтимол пас аз он саволҳои зиёде ба он алоқаманд хоҳанд буд, ҷавобҳоро ба онҳо дар ин ҷо санҷед .

  2. Объекти калидӣ бояд кадом 2 усулро амалӣ созад HashMap?

    equalsВаhashcode

  3. Чаро an objectҳое, ки ҳамчун калид истифода мешаванд, бояд тағирнопазир бошанд?

    Ҳамин тавр, рамзи хэш ҳамеша арзиши якхеларо бармегардонад.

  4. ConcurrentHashMapМиқёспазирӣ чӣ гуна ба даст оварда мешавад?

    Иногда этот вопрос звучит на интервью How: разница между ConcurrentHashMap и Hashtable в Java, поищите ответы здесь.

  5. Как сделать an object общим для разных потоков? Или How передать an object от одного потока к другому?

    Есть много путей реализации этого, такие How очереди, обменники, но блокируемые очереди с шаблоном проектирования Producer/Consumer это самый простой способ, чтобы передать an object из одного потока в другой.

  6. Как узнать что в вашей программе есть взаимная блокировка?

    (Получив дамп потока, используя kill -3, применяя JConsole or VisualVM). Я предлагаю подготовиться к этому вопросу на интервью очень тщательно, так How интервьюеры любят детали, они спрашивают бывали ли в вашем проекте подобные проблемы и How вам удалось их решить.

  7. Как избежать взаимных блокировок при codeировании?

    What бы разобраться с блокировками и получить полную информацию о теме, прочтите это.

  8. What такое ожидание занятости ("Busy spinning")? Почему вы должны использовать его?

    Один из интереснейших вопросов многопоточности для старшего разработчика Java, Busy spinning это стратегия ожидания, когда поток выполняет ожидание в цикле, при этом не используя ресурсы процессора и How бы засыпая. Эту стратегию используют когда время ожидания очень мало, при этом не нагружается процессор и не останавливается поток, сохраняются все данные, которые могут быть потеряны при запуске потока на другом ядре процессора. Этот вопрос популярен у программистов создающих высоко нагруженные проекты, где программисты добиваются чрезвычайно низких задержек в работе, в диапазоне микро- и мor- секунд.

  9. What такое блокировка Чтения и Записи (ReadWriteLock)? Использует ли ConcurrentHashMap ReadWrite блокировки?

    Блокировка Чтения и Записи это такая реализация блокировки, когда несколько разных потоков пытаются произвести операцию чтения и записи с одним an objectом. сама по себе операция чтения не изменяет an object, что допускает многопоточные операции чтения без блокировок. Java предоставляет реализацию ReadWriteLock с которой стоит ознакомиться. Например ConcurrentHashMap не применяет ReadWriteLock, instead of этого он делит Hash на отдельные части и блокирует их отдельно, таким образом в любой момент времени заблокирована только часть хеша, а не он весь. Этот вопрос популярен у опытных разработчиков, обычно просят ответить подробнее, спрашивают разные реализации ReadWriteLock для разных случаев.

  10. Как сделать an object иммутабельным (не изменяемым) в Java? Зачем делать an object иммутабельным?

    Иммутабельность предполагает несколько преимуществ включая потокобезопасность, возможность кеширования, а так же делает многопоточный code более читаемым.

    Посмотрите это и научитесь делать an objectы иммутабельными. На собеседовании по этому вопросу возможны дополнительные уточнения, в зависимости от полноты вашего ответа. Например когда вы говорите, что Spring иммутабельный, будьте готовы ответить почему строки так же иммутабельны в Java.

  11. Какие шаблоны проектирования в используете?

    Всегда ожидайте вопрос о шаблонах проектирования на собеседовании к вакансии старшего разработчика. Лучше отметить любой GOF шаблон, а не Singleton or MVC который использует каждый второй Java программист. Лучший ответ может быть шаблон Декоратор or шаблон Внедрение зависимости, которые довольно популярны в Spring Framework. Так же хорошо если называемые вами шаблоны проектирования вы действительно использовали и знаете к Howому компромиссу ведет их применение. Как только вы произнесете название шаблона проектирования, например: "Фабрика", интервьюер тут же спросит: "Вы использовали это в своих проектах ?" Поэтому будьте готовы привести примеры и рассказать почему вы выбрали в своем проекте именно этот шаблон.

  12. Знаете ли вы о принципе Открытости/Закрытости or Принцип подстановки Барбары Лисков?

    Шаблоны проектирования основаны на принципах an objectно-ориентированного проектирования.

    Настоятельно рекомендую посмотреть мою статью 10 принципов an objectно ориентированного дизайна, которые должен знать программист Java, по крайней мере иметь представление о том How эти принципы помогут вам писать an objectно ориентированный code. Если у вас нет ответа на этот вопрос, вы можете вежливо ответить "нет" , никто не ожидает от вас знания ответов на все вопросы. Однако зная ответ на вопрос, который вызывает затруднения у большинства разработчиков, вы делаете свою кандиdateру на собеседовании очень сильной.

  13. Какой шаблон проектирования будете использовать, что бы защитить ваш code от сторонней библиотеки, которая будет заменена через пару лет ?

    Это всего лишь один из возможных вариаций вопроса о шаблонах проектирования, которые могут быть заданы вам в зависимости от того о чем вы говорите сейчас на собеседовании. Один из способов How оградить свой code от сторонней библиотеки, это зависимость от интерфейса, а не от реализации и использование зависимостей что бы обеспечить конкретную реализацию. Подобные вопросы часто задают старшим разработчикам с 5-7 годами опыта работы.

  14. Как предотвратить SQL инъекцию в codeе на Java?

    Ин саволро таҳиягарони Java EE нисбат ба барномасозони муқаррарии Java бештар медиҳанд, аммо ин ҳанӯз ҳам як сабаби олӣ барои омӯхтани PreparedStatement аст. PreparedStatement an objectест, ки изҳороти пешакӣ тартибдодашудаи SQL-ро ифода мекунад. PreparedStatement на танҳо иҷрои беҳтарро таъмин мекунад, балки инчунин аз тазриқи SQL муҳофизат мекунад. Агар шумо асосан бо Java EE ё J2EE кор кунед, шумо бояд бо баъзе масъалаҳои амниятӣ, аз ҷумла "Ҳамлаҳои ислоҳи сессия" ё "Скрипти байнисоҳавӣ" шинос бошед ва шумо бояд аз ин ҳамлаҳо канорагирӣ кунед.

  15. Фарқи байни намудҳои истинодҳои Java ба монанди WeakReference, SoftReference ва PhantomReference-ро фаҳмонед? Ва чаро шумо бояд онҳоро истифода баред?

    Дар асл, байни ҳама намудҳои истинодҳо танҳо як фарқият вуҷуд дорад - рафтори Java Garbage Collector бо an objectҳое, ки онҳо ба онҳо муроҷиат мекунанд. Дар Java an objectҳои бо истифода аз оператори нав сохташуда бо истинодҳои қавӣ сохта мешаванд. Ҷамъоварии партов чунин an objectҳоро танҳо вақте нест мекунад, ки дар бораи онҳо истинодҳои қавӣ вуҷуд надоранд. Бастаи java.lang.ref дорои 3 синф мебошад, ки 3 намуди пайвандҳоро тавсиф мекунанд, мутаносибан SoftReference, WeakReference, PhantomReference. Объектҳое, ки тавассути SoftReference сохта шудаанд, дар сурати талаб кардани хотираи JVM ҷамъ карда мешаванд. Яъне, кафолат вуҷуд дорад, ки ҳама an objectҳои SoftReference пеш аз он ки JVM истиснои OutOfMemoryError-ро партояд, ҷамъ карда мешаванд. SoftReference аксар вақт барои кэшҳои пуршиддат истифода мешавад. WeakReference an objectро аз анҷомёбӣ наҷот намедиҳад, ҳатто агар хотираи холӣ кофӣ бошад. Ҳамин ки ба an object ягон истинодҳои қавӣ ва нарм боқӣ намондааст, онро метавон анҷом дод. Барои кэшҳо ва эҷоди занҷирҳои an objectҳои ба ҳам алоқаманд истифода мешавад. Объектҳое, ки тавассути PhantomReference сохта шудаанд, вақте нобуд карда мешаванд, ки GC муайян мекунад, ки an objectҳои истинодшуда метавонанд ҷудо карда шаванд. Ин навъи истинод ҳамчун алтернатива ба анҷомдиҳӣ истифода мешавад (барои озод кардани захираҳои фасеҳтар).

    Ин тамоми рӯйхати саволҳои мусоҳибаи таҳиягари Java мебошад. Ман бисёр саволҳои муҳимро дар бораи коркарди истисно, коллектори партов, танзими JVM, ки дар байни таҳиягарони калон маъмуланд, дохил накардаам, шояд ман онҳоро дар қисми оянда дохил кунам. Аммо агар ба ягон савол ҷавоб наёбед, ба ман хабар диҳед ва ман ин мақоларо барои хонандагони доимии худ навсозӣ мекунам.

Мақолаи аслӣ: 15 саволҳои мусоҳибаи техникии Java ҷавобҳо барои таҳиягарони ботаҷриба
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION