JavaRush /Java Blogu /Random-AZ /5-6 illik təcrübəsi olan Java proqramçısı üçün texniki mü...
dio
Səviyyə
Москва

5-6 illik təcrübəsi olan Java proqramçısı üçün texniki müsahibə üçün 15 sual

Qrupda dərc edilmişdir
Proqramçının təcrübəsi başlanğıc tərtibatçı səviyyəsindən (2 ildən 4 ilə qədər təcrübə) böyük tərtibatçı səviyyəsinə (5 ildən 7 ilə qədər) yüksəldikcə Core Java-da müsahibə sualları da dəyişir. Əlbəttə ki, məlumat strukturları, alqoritmlər və obyekt yönümlü proqramlaşdırma5-6 illik təcrübəsi olan Java proqramçısı üçün texniki müsahibə üçün 15 sual - 1 kimi əsaslar qalır, lakin suallar və cavablar daha ətraflı olur. Mən tez-tez yüksək səviyyəli tərtibatçılardan hansı əsas Java suallarının soruşulduğu və ya yüksək səviyyəli Java tərtibatçısı vəzifəsi üçün müsahibədə hansı sualları gözləmək barədə suallar alıram. Bu məni bir müddət çaşdırır, çünki böyük bir tərtibatçı olduqdan sonra avtomatik olaraq müsahibələrdə iştirak etməyə başlayırsan və müsahibədən nə gözləyəcəyinizə dair bir fikrə sahib olmalısınız, lakin eyni zamanda, müsahibəni bilməklə başa düşürəm. suallar, buna hazırlaşmaq sizin üçün daha asan olacaq. Əlbəttə ki, Java ilə 2-3 illik təcrübəsi olan proqramçılara verilən sualları almayacaqsınız, baxmayaraq ki, bu müsahibənin əvvəlində istisna edilmir. Telefon müsahibəsi ilə üzbəüz müsahibə arasında heç bir fərq görmürəm. Bəzi suallar eyni qalır, bəzi suallar daha ətraflı cavab tələb edir. Bu yazıda mən telefon müsahibələri zamanı yüksək səviyyəli tərtibatçı müsahibələrində verilən 15 əsas Java texniki sualını paylaşacağam . Mən bütün cavabları dərc etmirəm, lakin siz onları cari bloqda və ya Javarevisited bloqunda tapa bilərsiniz .

5-6 inkişaf təcrübəsi olan proqramçılar üçün Core Java üzrə 15 sual

Bütün suallar 5 ildən çox təcrübəsi olan yüksək səviyyəli inkişaf etdiricilərdən alındı. Tərtibatçılar bu suallarla məşğulluğun müxtəlif mərhələlərində, o cümlədən telefon və üz-üzə müsahibələr zamanı qarşılaşdılar.
  1. getJava-da sinif metodu necə işləyir HashMap?

    Bəli, bu hələ də böyük bir tərtibatçı üçün ən populyar suallardan biridir, bunu telefon müsahibəsində gözləməlisiniz, yəqin ki, bundan sonra çoxlu əlaqəli suallar olacaq, onlara cavabları burada yoxlayın .

  2. Əsas obyekt hansı 2 metodu həyata keçirməlidir HashMap?

    equalshashcode

  3. Nə üçün açar kimi istifadə olunan obyektlər dəyişməz olmalıdır?

    Beləliklə, hash kodu həmişə eyni dəyəri qaytarır.

  4. Ölçeklenebilirlik necə ConcurrentHashMapəldə edilir?

    Bəzən bu sual müsahibədə belə səslənir: Java ilə fərq ConcurrentHashMap, cavabları buradaHashtable axtarın .

  5. Müxtəlif mövzular arasında paylaşılan bir obyekti necə etmək olar? Və ya obyekti bir ipdən digərinə necə ötürmək olar?

    Есть много путей реализации этого, такие 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? И почему вы должны их использовать?

    Əslində, bütün istinad növləri arasında yalnız bir fərq var - Java Garbage Collector-un istinad etdikləri obyektlərlə davranışı. Java-da yeni operatordan istifadə etməklə yaradılmış obyektlər güclü istinadla yaradılır. Zibil yığan bu cür obyektləri yalnız onlara güclü istinadlar olmadıqda məhv edir. java.lang.ref paketində müvafiq olaraq SoftReference, WeakReference, PhantomReference 3 növ əlaqəni təsvir edən 3 sinif var. JVM yaddaş tələb etdiyi halda SoftReference vasitəsilə yaradılmış obyektlər toplanacaq. Yəni JVM OutOfMemoryError istisnasını atmazdan əvvəl bütün SoftReference obyektlərinin toplanacağına zəmanət var. SoftReference tez-tez yaddaş tutumlu keşlər üçün istifadə olunur. Kifayət qədər boş yaddaş olsa belə, WeakReference obyekti yekunlaşdırmaqdan xilas etmir. Obyektə güclü və yumşaq istinadlar qalmayan kimi onu yekunlaşdırmaq olar. Keşlər və bir-birinə bağlı obyektlərin zəncirləri yaratmaq üçün istifadə olunur. PhantomReference vasitəsilə yaradılan obyektlər, GC istinad edilən obyektlərin ayrıla biləcəyini müəyyən etdikdə məhv edilir. Bu növ istinad yekunlaşdırmaya alternativ kimi istifadə olunur (daha çevik resurs buraxılması üçün).

    Bu, yüksək səviyyəli Java tərtibatçısının müsahibə suallarının tam siyahısıdır. Yaşlı tərtibatçılar arasında çox populyar olan istisnaların idarə edilməsi, zibil toplayıcısı, JVM tənzimləməsi ilə bağlı bir çox vacib sualları daxil etməmişəm, bəlkə də növbəti hissəyə daxil edəcəm. Ancaq sualların heç birinə cavab tapmasanız, mənə bildirin və bu yazını daimi oxucularım üçün yeniləyəcəm.

Orijinal məqalə: Təcrübəli Tərtibatçılar üçün 15 Texniki Əsas Java Müsahibə Suallarına Cavablar
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION