JavaRush /مدونة جافا /Random-AR /المستوى 35. إجابات لأسئلة المقابلة حول موضوع المستوى
Afli
مستوى
Санкт-Петербург

المستوى 35. إجابات لأسئلة المقابلة حول موضوع المستوى

نشرت في المجموعة
الأسئلة/الإضافات/النقد هي موضع ترحيب. المستوى 35. إجابات أسئلة المقابلة حول موضوع المستوى - 1
  1. ما هي أنظمة التحكم في الإصدار التي تعرفها؟

    جيت، SVN، بازار، ميركوريال

  2. كيف يختلف SVN عن Git؟

    1. GIT هو VCS موزع، لكن SVN ليس كذلك. بمعنى آخر، إذا كان هناك العديد من المطورين الذين يعملون مع أحد المستودعات، فسيكون لدى كل منهم نسخة كاملة من هذا المستودع على أجهزتهم المحلية. بالطبع، هناك أيضًا جهاز مركزي يمكنك من خلاله استنساخ المستودع. هذا يذكرنا بـ SVN. الميزة الرئيسية لـ Git هي أنه إذا لم تتمكن فجأة من الوصول إلى الإنترنت، فلا يزال بإمكانك العمل مع المستودع. ثم قم فقط بإجراء المزامنة مرة واحدة وسيحصل جميع المطورين الآخرين على السجل الكامل.

    2. يقوم GIT بتخزين البيانات التعريفية المتغيرة، بينما يقوم SVN بتخزين الملفات بأكملها. وهذا يوفر المساحة والوقت.

  3. ما هو جيثب؟ هل لديك مشاريع على جيثب؟

    GitHub هي خدمة استضافة مشاريع على شبكة الإنترنت تستخدم نظام التحكم في إصدار git، بالإضافة إلى كونها شبكة اجتماعية للمطورين. يمكن للمستخدمين إنشاء عدد غير محدود من المستودعات، لكل منها موقع ويكي، ونظام تتبع المشكلات، ومن الممكن إجراء مراجعات التعليمات البرمجية، وما إلى ذلك. بالإضافة إلى Git، تدعم الخدمة استلام التعليمات البرمجية وتحريرها عبر SVN وMercurial.

  4. لماذا نحتاج إلى أنظمة التحكم في الإصدار؟

    يتيح VCS إمكانية إرجاع الملفات الفردية إلى نموذجها السابق، وإعادة المشروع بأكمله إلى حالته السابقة، وعرض التغييرات التي تحدث مع مرور الوقت، وتحديد من كان آخر من قام بإجراء تغييرات على الوحدة النمطية التي توقفت فجأة عن العمل، ومن ومتى تم تقديم نوع ما خطأ في الكود، وما إلى ذلك. .. بشكل عام، إذا قمت باستخدام VCS بإتلاف كل شيء أو فقدان الملفات، فيمكن استعادة كل شيء بسهولة.

  5. ما هو عام؟ كيف يتم تنفيذها في جافا؟

    الأدوية العامة هي أنواع ذات معلمات. بمساعدتهم، يمكنك إعلان الفئات والواجهات والأساليب، حيث يتم تحديد نوع البيانات كمعلمة. أضافت الأدوية العامة نوع الأمان إلى اللغة.

    مثال على التنفيذ:

    class MyClass<T>{
      T obj;
      public MyClass(T obj){
        this.obj = obj;
      }
    }
    class MyClass<T>

    تستخدم الأقواس الزاوية T ، وهو اسم معلمة النوع. يتم استخدام هذا الاسم كعنصر نائب لاسم النوع الحقيقي الذي تم تمريره إلى الفصل MyClassعند إنشاء أنواع حقيقية. أي أنه Tيتم استخدام معلمة النوع في الفصل عندما تكون معلمة النوع مطلوبة. تشير الأقواس الزاوية إلى أنه يمكن تعميم المعلمة. تسمى الفئة نفسها فئة عامة أو نوع ذو معلمات.

    بعد ذلك، يتم استخدام النوع Tللإعلان عن كائن بالاسم obj:

    T obj;

    بدلاً من ذلك، Tسيتم استبدال النوع الحقيقي، والذي سيتم تحديده عند إنشاء كائن من الفئة MyClass. objسيكون الكائن كائنًا من النوع الذي تم تمريره في معلمة النوع T. إذا Tقمت بتمرير النوع كمعلمة، فسيكون Stringللمثيل النوع .objString

    النظر في المنشئ MyClass():

    public MyClass(T obj){
      this.obj = obj;
    }

    Параметр obj имеет тип T. Это значит, что реальный тип параметра obj определяется типом, переданным параметром типа T при создании an object класса MyClass.

    Параметр типа T также может быть использован для указания типа возвращаемого значения метода.

    В именах переменных типа принято использовать заглавные буквы. Обычно для коллекций используется буква E, буквами K и V — типы ключей и meaning (Key/Value), а буквой T (и при необходимости буквы S и U) — любой тип.

    Обобщения работают только с an objectми. Поэтому нельзя использовать в качестве параметра elementрные типы вроде int or char.

    *Так же считаю нужным упомянуть generic методы. Это методы вида:

    модификаторы <T, ...> возвращаемыйТип method name(T t, ...)

    Как я понял, если в качестве типа в сигнатуре метода используются параметры, необходимо перед типом возвращаемого значения их перечислить. Верно ли это?

    Более подробную информацию можно посмотреть по следующим linkм:

  6. What такое стирание типов?

    Внутри класса-дженерика не хранится информация о его типе параметре. Это и называется стиранием типов. На стадии компиляции происходит приведение an object класса к типу, который был указан при объявлении.

    Пример:

    المستوى 35. إجابات أسئلة المقابلة حول موضوع المستوى - 2
  7. What такое wildcard?

    Wildcard — это дженерик вида <?>, что означает, что тип может быть чем угодно. Используется, например, в коллекциях, где для всех коллекций базовым типом является Сollection<?>.

    Полезная link: Теория и практика Java. Эксперименты с generic-методами

  8. Расскажите про extends и super в Generic'ах?

    Whatбы наложить ограничение на wildcard необходимо использовать конструкции типа:

    • ? extends SomeClass — означает, что может быть использован любой класс-наследник SomeClass
    • ? super SomeClass — означает, что может быть использован класс SomeClass, либо класс-родитель (or интерфейс) SomeClass

    Это называется bounded wildcard.

    Для того, чтобы определиться с выбором между extends и super был придуман метод PECS.

    Подробно про это можно прочитать по ссылке ниже: Использование generic wildcards для повышения удобства Java API

  9. Как использовать wildcard?

    Пример использования wildcard:

    List<?> numList = new ArrayList<Integer>();

    Вопрос я не понял, но в принципе использование wildcard’ов рассматривается в материалах по linkм выше.

  10. В чем отличие ArrayList и ArrayList<?>

    Запись вида ArrayList называется raw type (обычный тип). Она эквивалентна записи вида ArrayList<T> и используется для обратной совместимости, т.к. до Java 1.5 не было дженерик коллекций. По возможности такой формы записи следует избегать.

    ArrayList<?> является супертипом для ArrayList.

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION