JavaRush /Java блогы /Random-KK /5-6 жылдық тәжірибесі бар Java бағдарламашысына арналған ...
dio
Деңгей
Москва

5-6 жылдық тәжірибесі бар Java бағдарламашысына арналған техникалық сұхбатқа арналған 15 сұрақ

Топта жарияланған
Бағдарламалаушының тәжірибесі бастауыш әзірлеуші ​​деңгейінен (2 жылдан 4 жылға дейін) аға әзірлеуші ​​деңгейіне (5 жылдан 7 жылға дейін) артқан сайын Core Java тіліндегі сұхбат сұрақтары да өзгереді. 5-6 жылдық тәжірибесі бар Java бағдарламашысына техникалық сұхбатқа арналған 15 сұрақ – 1Әрине, деректер құрылымдары, алгоритмдер және an objectіге бағытталған бағдарламалау сияқты негіз қалады, бірақ сұрақтар мен жауаптар егжей-тегжейлі болады. Маған аға әзірлеушілерге негізгі Java сұрақтары қойылатыны немесе Java әзірлеушісінің аға лауазымына сұхбатта қандай сұрақтар қойылатыны туралы сұрақтар жиі келеді. Бұл мені біраз уақытқа таң қалдырады, өйткені сіз аға әзірлеуші ​​болғаннан кейін сіз автоматты түрде сұхбаттарға қатыса бастайсыз және сіз сұхбаттан не күтетіні туралы түсінікке ие болуыңыз керек, бірақ сонымен бірге сұхбатты біле отырып, мен түсінемін. сұрақтар, Сізге дайындалу оңайырақ болады. Әрине, сіз Java тілінде 2-3 жылдық тәжірибесі бар бағдарламашыларға қойылатын сұрақтарды алмайсыз, бірақ бұл сұхбаттың басында жоққа шығарылмайды. Мен телефон арқылы сұхбат пен бетпе-бет сұхбаттың айырмашылығын көрмеймін. Кейбір сұрақтар сол күйінде қалады, кейбір сұрақтар толығырақ жауаптарды қажет етеді. Бұл мақалада мен телефонмен сұхбат кезінде аға әзірлеушілер сұхбатында қойылған 15 негізгі Java техникалық сұрақтарымен бөлісемін . Мен барлық жауаптарды жарияламаймын, бірақ сіз оларды ағымдағы блогта немесе Javarevisited блогында таба аласыз .

5-6 әзірлеу тәжірибесі бар бағдарламашыларға арналған Core Java бойынша 15 сұрақ

Барлық сұрақтар 5 жылдан астам тәжірибесі бар жұмыс істейтін аға әзірлеушілерден алынды. Әзірлеушілер бұл сұрақтармен жұмысқа орналасудың әртүрлі кезеңдерінде, соның ішінде телефонмен және бетпе-бет сұхбатта кездескен.
  1. Java тілінде getсынып әдісі қалай жұмыс істейді?HashMap

    Иә, бұл әлі де аға әзірлеушіге арналған ең танымал сұрақтардың бірі, оны телефонмен сұхбатта күту керек, содан кейін көптеген сұрақтар туындауы мүмкін, оларға жауаптарды мына жерден қараңыз .

  2. Негізгі an object қандай 2 әдісті жүзеге асыруы керек HashMap?

    equalsЖәнеhashcode

  3. Неліктен кілт ретінде пайдаланылатын нысандар өзгермейтін болуы керек?

    Хэш codeы әрқашан бірдей мәнді қайтаратындай.

  4. Масштабтылыққа қалай ConcurrentHashMapқол жеткізіледі?

    Кейде бұл сұрақ сұхбатта осылай естіледі: Java тіліндегі айырмашылық ConcurrentHashMapжәне жауаптарды осы жерденHashtable іздеңіз .

  5. Әртүрлі ағындар арасында ортақ нысанды қалай жасауға болады? Немесе нысанды бір жіптен екіншісіне қалай беруге болады?

    Есть много путей реализации этого, такие 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 Garbage Collector бағдарламасының олар сілтеме жасайтын нысандармен әрекеті. Java тілінде жаңа оператор арқылы жасалған нысандар күшті сілтеме арқылы жасалады. Қоқыс жинаушы мұндай нысандарды оларға күшті сілтемелер болмаған кезде ғана жояды. java.lang.ref бумасында сілтемелердің 3 түрін сипаттайтын 3 класс бар, сәйкесінше SoftReference, WeakReference, PhantomReference. JVM жадты қажет еткен жағдайда SoftReference арқылы жасалған нысандар жиналады. Яғни, JVM OutOfMemoryError ерекше жағдайын шығармас бұрын барлық SoftReference нысандарының жиналатынына кепілдік бар. SoftReference жиі жадты көп қажет ететін кэштер үшін пайдаланылады. WeakReference жеткілікті бос жад болса да нысанды аяқталудан сақтамайды. Нысанға күшті және жұмсақ сілтемелер қалмаған соң, оны аяқтауға болады. Кэштер үшін және өзара байланысты an objectілердің тізбектерін жасау үшін қолданылады. PhantomReference арқылы жасалған нысандар GC сілтеме жасалған нысандарды бөлуге болатынын анықтаған кезде жойылады. Анықтаманың бұл түрі аяқтауға балама ретінде пайдаланылады (ресурстың икемді шығарылымы үшін).

    Бұл аға Java әзірлеушісімен сұхбат сұрақтарының толық тізімі. Мен аға әзірлеушілер арасында өте танымал ерекше жағдайларды өңдеу, қоқыс жинаушы, JVM тюнинг туралы көптеген маңызды сұрақтарды қосқан жоқпын, мүмкін мен оларды келесі бөлімге қосамын. Бірақ сұрақтардың ешқайсысына жауап таппасаңыз, маған хабарлаңыз, мен бұл жазбаны тұрақты оқырмандарым үшін жаңартамын.

Түпнұсқа мақала: Тәжірибелі әзірлеушілерге арналған Java тіліндегі сұхбаттың 15 техникалық негізгі сұрақтарына жауаптар
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION