JavaRush /בלוג Java /Random-HE /רמה 35. תשובות לשאלות ראיון בנושא הרמה
Afli
רָמָה
Санкт-Петербург

רמה 35. תשובות לשאלות ראיון בנושא הרמה

פורסם בקבוצה
שאלות/תוספות/ביקורת יתקבלו בברכה. רמה 35. תשובות לשאלות ראיון בנושא רמה - 1
  1. אילו מערכות בקרת גרסאות אתה מכיר?

    Git, SVN, Bazaar, Mercurial

  2. במה שונים SVN ו-Git?

    1. GIT הוא VCS מבוזר, אבל SVN לא. במילים אחרות, אם יש כמה מפתחים שעובדים עם מאגר, לכל אחד יהיה עותק מלא של מאגר זה במחשב המקומי שלו. כמובן שיש גם מכונה מרכזית ממנה ניתן לשכפל את המאגר. זה מזכיר את SVN. היתרון העיקרי של Git הוא שאם פתאום אין לך גישה לאינטרנט, אתה עדיין יכול לעבוד עם המאגר. אז פשוט בצע את הסנכרון פעם אחת וכל שאר המפתחים יקבלו את ההיסטוריה המלאה.

    2. GIT מאחסן מטא נתונים של שינויים, בעוד SVN מאחסן קבצים שלמים. זה חוסך מקום וזמן.

  3. מה זה GitHub? יש לך פרויקטים ב-GitHub?

    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בעת יצירת טיפוסים אמיתיים. כלומר, הפרמטר type Tמשמש במחלקה בכל פעם שנדרש פרמטר מסוג. סוגריים זווית מציינים שניתן להכליל את הפרמטר. המחלקה עצמה נקראת מחלקה גנרית או סוג פרמטר.

    לאחר מכן, הסוג Tמשמש להכרזה על אובייקט בשם obj:

    T obj;

    במקום זאת, Tהסוג האמיתי יוחלף, אשר יצוין בעת ​​יצירת אובייקט של המחלקה MyClass. האובייקט objיהיה אובייקט מהסוג המועבר בפרמטר ה-type T. אם Tתעביר את ה-type כפרמטר String, למופע objיהיה ה-type String.

    שקול את הקונסטרוקטור 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