JavaRush /Java blogi /Random-UZ /5-6 yillik tajribaga ega Java dasturchisi uchun texnik in...
dio
Daraja
Москва

5-6 yillik tajribaga ega Java dasturchisi uchun texnik intervyu uchun 15 ta savol

Guruhda nashr etilgan
Dasturchining tajribasi boshlang'ich dasturchi darajasidan (2 yildan 4 yilgacha ish tajribasi) katta dasturchi darajasiga (5 yildan 7 yilgacha) oshgani sayin Core Java bo'yicha suhbat savollari ham o'zgaradi. 5-6 yillik tajribaga ega Java dasturchisi uchun texnik intervyu uchun 15 ta savol - 1Albatta, ma'lumotlar tuzilmalari, algoritmlar va ob'ektga yo'naltirilgan dasturlash kabi asoslar saqlanib qoladi, ammo savollar va javoblar batafsilroq bo'ladi. Menga tez-tez Java dasturining asosiy savollari yuqori darajali dasturchilardan so'ralishi yoki yuqori darajadagi Java dasturchisi lavozimi uchun intervyuda qanday savollarni kutish kerakligi haqida savollar olaman. Bu meni bir muncha vaqt hayratda qoldiradi, chunki siz katta dasturchi bo'lganingizdan so'ng, siz avtomatik ravishda intervyularda qatnasha boshlaysiz va siz intervyudan nimani kutishingiz kerakligi haqida tasavvurga ega bo'lishingiz kerak, lekin shu bilan birga, men intervyuni bilishni tushunaman. savollar, Unga tayyorgarlik ko'rishingiz osonroq bo'ladi. Albatta, siz Java-da 2-3 yillik tajribaga ega dasturchilarga beriladigan savollarni olmaysiz, garchi bu intervyu boshida istisno qilinmasa ham. Men telefon suhbatlari va yuzma-yuz suhbatlar o'rtasida hech qanday farqni ko'rmayapman. Ba'zi savollar bir xil bo'lib qolmoqda, ba'zi savollar batafsilroq javoblarni talab qiladi. Ushbu maqolada men yuqori darajali dasturchilar intervyularida telefon orqali suhbatlar paytida berilgan 15 ta asosiy Java texnik savollarini baham ko'raman. Men barcha javoblarni joylashtirmayapman, lekin ularni joriy blogda yoki Javarevisited blogida topishingiz mumkin .

5-6 ishlab chiqish tajribasiga ega dasturchilar uchun Core Java bo'yicha 15 ta savol

Barcha savollar 5 yildan ortiq tajribaga ega ishlaydigan katta ishlab chiquvchilardan olingan. Ishlab chiquvchilar ushbu savollarga ishga joylashishning turli bosqichlarida, jumladan, telefon va yuzma-yuz suhbatlarda duch kelishdi.
  1. Java'da getsinf usuli qanday ishlaydi?HashMap

    Ha, bu hali ham katta ishlab chiquvchi uchun eng mashhur savollardan biri bo'lib, uni telefon suhbatida kutishingiz kerak, ehtimol bundan keyin ko'plab tegishli savollar bo'ladi, ularga javoblarni bu erda tekshiring .

  2. Asosiy ob'ekt qaysi 2 usulni amalga oshirishi kerak HashMap?

    equalsVahashcode

  3. Nima uchun kalit sifatida ishlatiladigan ob'ektlar o'zgarmas bo'lishi kerak?

    Shunday qilib, xesh kodi har doim bir xil qiymatni qaytaradi.

  4. Masshtablilikka qanday ConcurrentHashMaperishiladi?

    Ba'zan bu savol intervyuda shunday eshitiladi: Java ConcurrentHashMapva Java o'rtasidagi farq, bu erdaHashtable javoblarni qidiring .

  5. Qanday qilib ob'ektni turli mavzular o'rtasida taqsimlash mumkin? Yoki ob'ektni bir ipdan ikkinchisiga qanday o'tkazish mumkin?

    Есть много путей реализации этого, такие 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, который представляет предварительно скомпorрованный SQL-оператор. PreparedStatement не только обеспечивает более высокую производительность, но и защищает от SQL инъекций. Если вы работаете по большей части с Java EE or J2EE, вы должны быть знакомы с некоторыми вопросами безопасности, в том числе "атака Фиксации Сессии" or "межсайтовый скриптинг", так же вам нужно уметь избегать этих атак.

  15. Расскажите об отличиях типов ссылок в Java, таких How WeakReference, SoftReference и PhantomReference? И почему вы должны их использовать?

    Darhaqiqat, barcha turdagi havolalar o'rtasida faqat bitta farq bor - Java Garbage Collector-ning ular murojaat qiladigan ob'ektlar bilan xatti-harakati. Java-da yangi operator yordamida yaratilgan ob'ektlar kuchli havola orqali yaratiladi. Axlat yig'uvchi bunday ob'ektlarni faqat ularga kuchli havolalar bo'lmaganda yo'q qiladi. Java.lang.ref paketi 3 ta sinfga ega bo'lib, ular 3 turdagi havolalarni tavsiflaydi, mos ravishda SoftReference, WeakReference, PhantomReference. SoftReference orqali yaratilgan ob'ektlar JVM xotira talab qilgan taqdirda yig'iladi. Ya'ni, JVM OutOfMemoryError istisnosidan oldin barcha SoftReference ob'ektlari to'planishiga kafolat bor. SoftReference ko'pincha xotirani ko'p talab qiladigan keshlar uchun ishlatiladi. WeakReference ob'ektni yakunlashdan saqlamaydi, hatto etarli bo'sh xotira bo'lsa ham. Ob'ektga nisbatan kuchli va yumshoq havolalar qolmasa, uni yakunlash mumkin. Keshlar uchun va bir-biriga bog'langan ob'ektlar zanjirlarini yaratish uchun ishlatiladi. PhantomReference orqali yaratilgan ob'ektlar, GC havola qilingan ob'ektlar ajratilishi mumkinligini aniqlaganda yo'q qilinadi. Ushbu turdagi ma'lumotnoma yakuniylashtirishga alternativa sifatida ishlatiladi (resursni yanada moslashuvchan chiqarish uchun).

    Bu katta Java dasturchisi intervyu savollarining to'liq ro'yxati. Men katta ishlab chiquvchilar orasida juda mashhur bo'lgan istisnolar bilan ishlash, axlat yig'uvchi, JVM sozlash haqida ko'p muhim savollarni kiritmadim, balki ularni keyingi qismga kiritaman. Ammo agar biron bir savolga javob topa olmasangiz, menga xabar bering va men ushbu xabarni doimiy o'quvchilarim uchun yangilayman.

Asl maqola: Tajribali dasturchilar uchun Java bo'yicha 15 ta texnik intervyu savollariga javoblar
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION