JavaRush /مدونة جافا /Random-AR /15 سؤالًا للمقابلة الفنية لمبرمج Java بخبرة 5-6 سنوات
dio
مستوى
Москва

15 سؤالًا للمقابلة الفنية لمبرمج Java بخبرة 5-6 سنوات

نشرت في المجموعة
مع زيادة خبرة المبرمج من مستوى مطور مبتدئ (من 2 إلى 4 سنوات من الخبرة) إلى مستوى مطور كبير (من 5 إلى 7 سنوات)، تتغير أيضًا أسئلة المقابلة في Core Java. 15 سؤالًا للمقابلة الفنية لمبرمج Java بخبرة 5-6 سنوات - 1وبطبيعة الحال، تبقى الأساسيات مثل هياكل البيانات والخوارزميات والبرمجة الموجهة للكائنات ، ولكن الأسئلة والأجوبة تصبح أكثر تفصيلا. كثيرًا ما أتلقى أسئلة حول أسئلة Core Java التي يتم طرحها من كبار المطورين، أو ما هي الأسئلة المتوقعة في مقابلة لمنصب أحد كبار مطوري Java. هذا يحيرني لبعض الوقت لأنه بمجرد أن تصبح مطورًا كبيرًا، تبدأ تلقائيًا في المشاركة في المقابلات وتحتاج إلى أن تكون لديك فكرة عما يمكن توقعه من المقابلة، ولكن في الوقت نفسه، أفهم أن معرفة المقابلة الأسئلة، سيكون من الأسهل عليك الاستعداد لها. بالطبع، لن تحصل على الأسئلة التي يتم طرحها على المبرمجين الذين لديهم خبرة 2-3 سنوات في Java، على الرغم من أن هذا غير مستبعد في بداية المقابلة. لا أرى أي اختلافات بين المقابلات الهاتفية والمقابلات وجهاً لوجه. تظل بعض الأسئلة كما هي، وبعض الأسئلة تتطلب إجابات أكثر تفصيلاً. في هذه المقالة، سأشارك 15 سؤالًا تقنيًا لـ Core Java تم طرحها في مقابلات كبار المطورين أثناء المقابلات الهاتفية. أنا لا أنشر جميع الإجابات، ولكن يمكنك العثور عليها على المدونة الحالية أو على مدونة Javarevisited .

15 سؤالًا حول Core Java للمبرمجين الذين يتمتعون بخبرة تطوير تتراوح من 5 إلى 6

تم تلقي جميع الأسئلة من كبار المطورين العاملين الذين يتمتعون بخبرة تزيد عن 5 سنوات. واجه المطورون هذه الأسئلة في مراحل مختلفة من التوظيف، بما في ذلك المقابلات الهاتفية وجهًا لوجه.
  1. كيف تعمل طريقة getالفصل HashMapفي Java؟

    نعم، لا يزال هذا أحد الأسئلة الأكثر شيوعًا لكبار المطورين، يجب أن تتوقع ذلك في مقابلة عبر الهاتف، ومن المحتمل أن يكون هناك العديد من الأسئلة ذات الصلة بعد ذلك، تحقق من الإجابات عليها هنا .

  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 Garbage Collector مع الكائنات التي تشير إليها. في Java، يتم إنشاء الكائنات التي تم إنشاؤها باستخدام عامل التشغيل الجديد بواسطة مرجع قوي. يقوم جامع البيانات المهملة بتدمير هذه الكائنات فقط في حالة عدم وجود إشارات قوية إليها. تحتوي الحزمة java.lang.ref على 3 فئات تصف 3 أنواع من الروابط، على التوالي SoftReference، وWeakReference، وPhantomReference. سيتم جمع الكائنات التي تم إنشاؤها عبر SoftReference في حالة حاجة JVM إلى ذاكرة. أي أن هناك ضمانًا بأنه سيتم جمع كافة كائنات SoftReference قبل أن يقوم JVM بطرح استثناء OutOfMemoryError. غالبًا ما يتم استخدام SoftReference لذاكرة التخزين المؤقت كثيفة الاستخدام للذاكرة. لا يقوم WeakReference بحفظ الكائن حتى يتم إنهاؤه، حتى لو كانت هناك ذاكرة خالية كافية. بمجرد عدم وجود مراجع قوية وناعمة متبقية للكائن، يمكن الانتهاء منه. يستخدم لذاكرة التخزين المؤقت ولإنشاء سلاسل من الكائنات المترابطة. يتم تدمير الكائنات التي تم إنشاؤها من خلال PhantomReference عندما يحدد GC إمكانية إلغاء تخصيص الكائنات المشار إليها. يُستخدم هذا النوع من المراجع كبديل للانتهاء (لإصدار موارد أكثر مرونة).

    هذه هي القائمة الكاملة لأسئلة مقابلة كبار مطوري Java. لم أقم بتضمين العديد من الأسئلة المهمة حول معالجة الاستثناءات، ومجمع البيانات المهملة، وضبط JVM، والتي تحظى بشعبية كبيرة بين كبار المطورين، ربما سأدرجها في الجزء التالي. ولكن إذا لم تجد إجابات لأي من الأسئلة، فأخبرني بذلك وسوف أقوم بتحديث هذا المنشور لقرائي العاديين.

المقال الأصلي: 15 أسئلة مقابلة فنية أساسية في جافا وإجابات للمطورين ذوي الخبرة
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION