JavaRush /Java блогу /Random-KY /5-6 жылдык тажрыйбасы бар Java программисти үчүн техникал...
dio
Деңгээл
Москва

5-6 жылдык тажрыйбасы бар Java программисти үчүн техникалык интервью үчүн 15 суроо

Группада жарыяланган
Программисттин тажрыйбасы башталгыч иштеп чыгуучунун деңгээлинен (2 жылдан 4 жылга чейин) улук иштеп чыгуучунун деңгээлине (5 жылдан 7 жылга чейин) жогорулаган сайын Core Java боюнча интервью суроолору да өзгөрөт. 5-6 жылдык тажрыйбасы бар Java программисти үчүн техникалык интервью үчүн 15 суроо - 1Албетте, маалымат структуралары, алгоритмдер жана an objectиге багытталган программалоо сыяктуу негиздер сакталат, бирок суроолор жана жооптор деталдуураак болот. Мен көп учурда улук иштеп чыгуучулардан негизги Java суроолору же Java иштеп чыгуучуларынын улук кызматына интервьюда кандай суроолорду күтүү керектиги жөнүндө суроолорду алам. Бул мени бир азга таң калтырат, анткени сиз улук иштеп чыгуучу болгондон кийин, сиз автоматтык түрдө интервьюларга катыша баштайсыз жана интервьюдан эмнени күтүү керектиги жөнүндө түшүнүккө ээ болушуңуз керек, бирок ошол эле учурда интервьюну бorп туруп түшүнөм. суроолор, ага даярдануу сизге жеңил болот. Албетте, сиз Java менен 2-3 жылдык тажрыйбасы бар программисттерге берилген суроолорду албайсыз, бирок бул интервьюнун башында четке кагылbyte. Мен телефондук интервью менен бетме-бет маектешүүнүн ортосунда эч кандай айырмачылыкты көрбөй турам. Кээ бир суроолор ошол эле бойдон калууда, кээ бир суроолор кененирээк жоопторду талап кылат. Бул макалада мен телефон аркылуу маектешүү учурунда улук иштеп чыгуучулардын маегинде берилген 15 негизги Java техникалык суроолорун бөлүшөм . Мен бардык жоопторду жарыялаган жокмун, бирок сиз аларды учурдагы блогдон же Javarevisited блогунан таба аласыз .

5-6 өнүктүрүү тажрыйбасы бар программисттер үчүн Core Java боюнча 15 суроо

Бардык суроолор 5 жылдан ашык тажрыйбасы бар иштеген улук иштеп чыгуучулардан алынды. Иштеп чыгуучулар бул суроолорго жумушка орношуунун ар кандай этаптарында, анын ичинде телефон жана бетме-бет маектешүү учурунда туш болушкан.
  1. getКласс ыкмасы HashMapJavaда кантип иштейт?

    Ооба, бул дагы эле улук иштеп чыгуучу үчүн эң популярдуу суроолордун бири, аны телефондук интервьюда күтүш керек, андан кийин ага байланыштуу суроолор көп болушу мүмкүн, аларга жоопторду бул жерден караңыз .

  2. Негизги an object кайсы 2 ыкманы ишке ашырышы керек HashMap?

    equalsЖанаhashcode

  3. Эмне үчүн ачкыч катары колдонулган an objectтер өзгөрбөс болушу керек?

    Ошентип, хэш codeу ар дайым бирдей маанини кайтарат.

  4. Масштабдуулукка кантип ConcurrentHashMapжетишилет?

    Кээде бул суроо интервьюда ушундай угулат: Java ConcurrentHashMapменен айырма, бул жерденHashtable жооп изде .

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

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

    Чынында, шилтемелердин бардык түрлөрүнүн ортосунда бир гана айырма бар - Java таштанды жыйгычынын алар шилтеме кылган an objectилер менен жүрүм-туруму. Java тorнде жаңы оператордун жардамы менен түзүлгөн an objectтер күчтүү шилтеме аркылуу түзүлөт. Таштанды жыйноочу мындай an objectтерди аларга катуу шилтемелер жок болгондо гана жок кылат. java.lang.ref пакетинде 3 класс бар, алар шилтемелердин 3 түрүн, тиешелүүлүгүнө жараша SoftReference, WeakReference, PhantomReference сыпаттоодо. SoftReference аркылуу түзүлгөн an objectтер JVM эстутум талап кылган учурда чогултулат. Башкача айтканда, бардык SoftReference an objectтери JVM OutOfMemoryError өзгөчөлүгүн ыргытканга чейин чогултулат деген кепилдик бар. SoftReference көбүнчө эстутумду көп талап кылган кэштер үчүн колдонулат. WeakReference жетиштүү бош эстутум болсо дагы an objectти жыйынтыктоодон сактаbyte. Объектке күчтүү жана жумшак шилтемелер калбай калганда, аны аягына чыгарууга болот. Кэштер үчүн жана өз ара байланышкан an objectтердин чынжырларын түзүү үчүн колдонулат. PhantomReference аркылуу түзүлгөн an objectтер GC шилтеме берилген an objectтерди бөлүштүрүүгө болорун аныктаганда жок кылынат. Шилтеменин бул түрү жыйынтыктоого альтернатива катары колдонулат (ресурстарды ийкемдүү чыгаруу үчүн).

    Бул Java иштеп чыгуучуларынын маектешүү суроолорунун толук тизмеси. Мен улук иштеп чыгуучулардын арасында абдан популярдуу болгон өзгөчөлүктөр менен иштөө, таштанды жыйноочу, JVM тюнинг жөнүндө көптөгөн маанилүү суроолорду киргизген жокмун, балким, кийинки бөлүккө киргизем. Бирок суроолордун бирине да жооп таппасаңыз, мага кабарлаңыз, мен бул постту туруктуу окурмандарым үчүн жаңыртамын.

Баштапкы макала: Тажрыйбалуу иштеп чыгуучулар үчүн 15 техникалык негизги Java интервью суроолоруна жооптор
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION