JavaRush /Java Blog /Random-TL /15 tanong para sa isang teknikal na panayam para sa isang...
dio
Antas
Москва

15 tanong para sa isang teknikal na panayam para sa isang Java programmer na may 5-6 na taon ng karanasan

Nai-publish sa grupo
Habang tumataas ang karanasan ng programmer mula sa antas ng isang baguhan na developer (mula 2 hanggang 4 na taon ng karanasan) hanggang sa antas ng isang senior developer (mula 5 hanggang 7 taon), nagbabago rin ang mga tanong sa panayam sa Core Java. 15 tanong para sa isang teknikal na panayam para sa isang Java programmer na may 5-6 na taong karanasan - 1Siyempre, nananatili ang mga pangunahing kaalaman tulad ng mga istruktura ng data, algorithm, at object-oriented programming , ngunit ang mga tanong at sagot ay nagiging mas detalyado. Madalas akong makatanggap ng mga tanong tungkol sa kung anong mga tanong sa Core Java ang itinatanong sa mga senior developer, o kung anong mga tanong ang aasahan sa isang panayam para sa isang senior Java developer position. Ito ay palaisipan sa akin nang ilang sandali dahil sa sandaling ikaw ay naging isang senior developer, awtomatiko kang magsisimulang makilahok sa mga panayam at kailangan mong magkaroon ng ideya kung ano ang aasahan mula sa panayam, ngunit sa parehong oras, naiintindihan ko na ang pag-alam sa pakikipanayam mga tanong, Magiging mas madali para sa iyo na maghanda para dito. Siyempre, hindi ka makakakuha ng mga tanong na itatanong sa mga programmer na may 2-3 taong karanasan sa Java, bagama't hindi ito ibinubukod sa simula ng panayam. Wala akong nakikitang pagkakaiba sa pagitan ng mga panayam sa telepono at ng harapang panayam. Ang ilang mga katanungan ay nananatiling pareho, ang ilang mga katanungan ay nangangailangan ng mas detalyadong mga sagot. Sa artikulong ito, ibabahagi ko ang 15 mga teknikal na tanong sa Core Java na itinanong sa mga panayam ng senior developer sa mga panayam sa telepono. Hindi ko pino-post ang lahat ng mga sagot, ngunit mahahanap mo ang mga ito sa kasalukuyang blog o sa Javarevisited blog .

15 tanong sa Core Java para sa mga programmer na may 5-6 na karanasan sa pag-unlad

Natanggap ang lahat ng tanong mula sa mga nagtatrabahong senior developer na may higit sa 5 taong karanasan. Nakatagpo ng mga developer ang mga tanong na ito sa iba't ibang yugto ng trabaho, kabilang ang mga panayam sa telepono at harapang harapan.
  1. Paano gumagana ang isang pamamaraan getng klase HashMapsa Java?

    Oo, isa pa rin ito sa mga pinakasikat na tanong para sa isang senior developer, dapat mong asahan ito sa isang panayam sa telepono, malamang na magkakaroon ng maraming kaugnay na mga tanong pagkatapos nito, tingnan ang mga sagot sa kanila dito .

  2. Aling 2 pamamaraan ang dapat ipatupad ng pangunahing bagay HashMap?

    equalsAthashcode

  3. Bakit dapat hindi nababago ang mga bagay na ginamit bilang susi?

    Upang ang hash code ay palaging nagbabalik ng parehong halaga.

  4. Paano ConcurrentHashMapnakakamit ang scalability?

    Minsan ang tanong na ito ay parang ganito sa isang panayam: ang pagkakaiba sa pagitan ng ConcurrentHashMapat Hashtablesa Java, hanapin ang mga sagot dito .

  5. Paano gumawa ng isang bagay na ibinahagi sa pagitan ng iba't ibang mga thread? O kung paano ipasa ang isang bagay mula sa isang thread patungo sa isa pa?

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

    Sa katunayan, may isang pagkakaiba lamang sa pagitan ng lahat ng uri ng mga sanggunian - ang pag-uugali ng Java Garbage Collector sa mga bagay na kanilang tinutukoy. Sa Java, ang mga bagay na nilikha gamit ang bagong operator ay nilikha sa pamamagitan ng malakas na sanggunian. Sinisira lamang ng tagakolekta ng basura ang mga naturang bagay kapag wala nang malakas na pagtukoy sa mga ito. Ang java.lang.ref package ay may 3 klase na naglalarawan ng 3 uri ng mga link, ayon sa pagkakabanggit, SoftReference, WeakReference, PhantomReference. Ang mga bagay na ginawa sa pamamagitan ng SoftReference ay kokolektahin kung sakaling ang JVM ay nangangailangan ng memorya. Ibig sabihin, may garantiya na lahat ng mga bagay sa SoftReference ay kokolektahin bago maghagis ang JVM ng OutOfMemoryError exception. Ang SoftReference ay kadalasang ginagamit para sa memory-intensive na mga cache. Ang WeakReference ay hindi nagse-save ng isang bagay mula sa pagsasapinal, kahit na mayroong sapat na libreng memorya. Sa sandaling wala nang matitibay at malambot na mga sanggunian na natitira sa bagay, maaari itong tapusin. Ginagamit para sa mga cache at para sa paglikha ng mga kadena ng magkakaugnay na mga bagay. Ang mga bagay na ginawa sa pamamagitan ng PhantomReference ay nasisira kapag natukoy ng GC na ang mga na-refer na bagay ay maaaring i-deallocate. Ang ganitong uri ng sanggunian ay ginagamit bilang isang alternatibo sa pagsasapinal (para sa mas nababaluktot na paglabas ng mapagkukunan).

    Ito ang buong listahan ng mga tanong sa panayam ng senior Java developer. Hindi ko naisama ang maraming mahahalagang katanungan tungkol sa paghawak ng exception, garbage collector, JVM configuration na napakapopular sa mga senior developer, baka isama ko sila sa susunod na bahagi. Ngunit kung hindi ka makahanap ng mga sagot sa alinman sa mga tanong, ipaalam sa akin at ia-update ko ang post na ito para sa aking mga regular na mambabasa.

Orihinal na artikulo: 15 Technical Core Java Interview Questions Mga Sagot para sa Mga Sanay na Developer
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION