JavaRush /وبلاگ جاوا /Random-FA /15 سوال برای مصاحبه فنی برای برنامه نویس جاوا با 5-6 سال ...
dio
مرحله
Москва

15 سوال برای مصاحبه فنی برای برنامه نویس جاوا با 5-6 سال سابقه

در گروه منتشر شد
با افزایش تجربه برنامه نویس از سطح یک توسعه دهنده مبتدی (از 2 تا 4 سال سابقه) به سطح یک توسعه دهنده ارشد (از 5 به 7 سال)، سوالات مصاحبه در Core Java نیز تغییر می کند. 15 سوال برای مصاحبه فنی برای برنامه نویس جاوا با 5-6 سال سابقه - 1البته، اصول اولیه مانند ساختارهای داده، الگوریتم ها و برنامه نویسی شی گرا باقی می مانند، اما پرسش ها و پاسخ ها جزئی تر می شوند. من اغلب در مورد اینکه چه سوالاتی از برنامه‌نویسان ارشد جاوا پرسیده می‌شود، یا در مصاحبه‌ای برای یک موقعیت توسعه‌دهنده ارشد جاوا، سؤال می‌کنم. این من را برای مدتی گیج می‌کند، زیرا زمانی که یک توسعه‌دهنده ارشد شوید، به‌طور خودکار شروع به شرکت در مصاحبه‌ها می‌کنید و باید ایده‌ای داشته باشید که از مصاحبه چه انتظاری دارید، اما در عین حال، من می‌دانم که دانستن مصاحبه سوالات، آماده شدن برای آن برای شما آسان تر خواهد بود. البته سوالاتی که از برنامه نویسانی با 2-3 سال سابقه کار با جاوا پرسیده می شود، دریافت نخواهید کرد، البته این مورد در ابتدای مصاحبه مستثنی نیست. من تفاوتی بین مصاحبه تلفنی و مصاحبه حضوری نمی بینم. برخی از سؤالات ثابت می مانند، برخی سؤالات به پاسخ های دقیق تری نیاز دارند. در این مقاله، 15 سوال فنی Core Java را که در مصاحبه‌های توسعه‌دهنده ارشد در طول مصاحبه‌های تلفنی پرسیده شده‌اند، به اشتراک می‌گذارم . من همه پاسخ ها را پست نمی کنم، اما می توانید آنها را در وبلاگ فعلی یا در وبلاگ Javarevisited پیدا کنید .

15 سوال در مورد Core Java برای برنامه نویسان با تجربه توسعه 5-6

تمام سوالات از توسعه دهندگان ارشد با بیش از 5 سال تجربه دریافت شده است. توسعه دهندگان در مراحل مختلف استخدامی از جمله مصاحبه تلفنی و حضوری با این سوالات مواجه شدند.
  1. یک متد getکلاس HashMapدر جاوا چگونه کار می کند؟

    بله، این هنوز یکی از پرطرفدارترین سؤالات برای یک توسعه دهنده ارشد است، باید در یک مصاحبه تلفنی منتظر آن باشید، احتمالاً پس از آن سؤالات مرتبط زیادی وجود خواهد داشت، پاسخ آنها را در اینجا بررسی کنید .

  2. شی کلید کدام دو روش را باید پیاده سازی کند HashMap؟

    equalsوhashcode

  3. چرا اشیایی که به عنوان کلید استفاده می شوند باید تغییر ناپذیر باشند؟

    به طوری که کد هش همیشه همان مقدار را برمی گرداند.

  4. مقیاس پذیری چگونه ConcurrentHashMapبه دست می آید؟

    گاهی اوقات این سوال در مصاحبه به این شکل به نظر می رسد: تفاوت بین 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.lang.ref دارای 3 کلاس است که 3 نوع پیوند به ترتیب SoftReference، WeakReference، PhantomReference را توصیف می کند. در صورتی که JVM به حافظه نیاز داشته باشد، اشیاء ایجاد شده از طریق SoftReference جمع آوری می شوند. یعنی، تضمینی وجود دارد که تمام اشیاء SoftReference قبل از اینکه JVM یک استثنا OutOfMemoryError را پرتاب کند، جمع آوری شوند. SoftReference اغلب برای کش های حافظه فشرده استفاده می شود. WeakReference یک شی را از نهایی شدن نجات نمی دهد، حتی اگر حافظه آزاد کافی وجود داشته باشد. به محض اینکه هیچ مرجع قوی و نرمی برای شی باقی نماند، می توان آن را نهایی کرد. برای کش ها و برای ایجاد زنجیره ای از اشیاء به هم پیوسته استفاده می شود. اشیاء ایجاد شده از طریق PhantomReference زمانی از بین می روند که GC تشخیص دهد که اشیاء ارجاع شده می توانند جابجا شوند. این نوع مرجع به عنوان جایگزینی برای نهایی سازی (برای انتشار منابع انعطاف پذیرتر) استفاده می شود.

    این کل لیست سوالات مصاحبه توسعه دهندگان ارشد جاوا است. من بسیاری از سوالات مهم در مورد رسیدگی به استثناء، جمع آوری زباله، تنظیم JVM را که در بین توسعه دهندگان ارشد بسیار محبوب هستند، درج نکرده ام، شاید آنها را در قسمت بعدی قرار دهم. اما اگر پاسخی برای هیچ یک از سوالات پیدا نکردید، به من اطلاع دهید و من این پست را برای خوانندگان همیشگی خود به روز خواهم کرد.

مقاله اصلی: 15 پاسخ سوالات مصاحبه هسته فنی جاوا برای توسعه دهندگان با تجربه
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION