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

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

פורסם בקבוצה
רמה 21. תשובות לשאלות ראיון בנושא רמה - 1
  1. רשום שיטות מחלקותObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. מדוע דרושים equalsושיטות hashCode?

    משמש להשוואת אובייקטים.

    מטרת השיטה equalsהיא לקבוע האם אובייקטים זהים מבחינה פנימית על ידי השוואה בין התוכן הפנימי של האובייקטים. זה equalsעובד לאט, תחילה משווים קודי הגיבוב של האובייקטים, ואם קודי הגיבוב שווים, מתבצעת בדיקה מולequals

  3. מה קורה אם תעקוף שווה אבל לא תעקוף hashCode?

    בתחילה hashCode, מספר אקראי.

    equalsאוספים ב-Java תמיד מחפשים/משווים אותם באמצעות השיטה לפני השוואת אובייקטים באמצעות hashCode(). ואם לאובייקטים זהים יש שונים hashCode, אז האובייקטים ייחשבו שונים - פשוט לא ניתן יהיה להשוות באמצעותם equals.

  4. מדוע השיטות wait, notify, notifyAll?

    לפעמים בתוכנית יכול להיות מצב שבו שרשור הכניס גוש קוד synchronized, חסם את המוניטור ולא יכול לעבוד יותר, בגלל חלק מהנתונים עדיין חסרים: לדוגמה, הקובץ שעליו לעבד עדיין לא נטען או משהו כזה. הומצאה שיטה כדי לפתור בעיה זו wait(). קריאה לשיטה זו גורמת לשרשור לשחרר את המוניטור ו"להשהות".

    כדי לבטל את ההשהיה, נעשה שימוש בשיטות notify. notifyAllהשיטה notify"משחררת" חוט אקראי אחד, השיטה notifyAll- כל החוטים "קפואים" של מוניטור נתון.

  5. איך לשכפל אובייקט בצורה נכונה?

    שני סוגי שיבוט.

    כדי לשכפל אובייקט ברירת מחדל:

    • הוסף ממשק Cloneableלכיתה שלך
    • עוקף את השיטה cloneוקרא למימוש הבסיס בה:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    או שאתה יכול לכתוב את יישום השיטה cloneבעצמך:

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. מדוע נדרשת השיטה finalize()וכיצד היא פועלת?

    אם אתה זוכר, זו finalize()שיטה מיוחדת שנקראת על חפץ לפני שהאספן משמיד אותו.

    המטרה העיקרית של שיטה זו היא לשחרר משאבים חיצוניים משומשים שאינם Java: סגירת קבצים, זרמי I/O וכו'.

    finalize()עובד לא יציב.

    שיטה זו אינה עומדת בציפיות המונחות ממנה. מכונת ה-Java יכולה לעכב הרס של אובייקט, כמו גם קריאה של שיטה, finalizeכל עוד היא רוצה. יתר על כן, זה לא מבטיח ששיטה זו תיקרא בכלל. בהרבה מצבים, לשם "אופטימיזציה" זה לא נקרא.

  7. מה ההבדל final, finally, finalize?

    • final- משנה
    • לא ניתן לשנות שדות, שיטות מוחלף
    • כיתות לא ניתנות בירושה
    • משנה זה חל רק על מחלקות, שיטות ומשתנים (גם משתנים מקומיים)
    • ארגומנטים של שיטה המסומנים כקריאה finalבלבד; ניסיון לשנות אותם יגרום לשגיאת קומפילציה.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить meaning при объявлении or в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на an object, an object может быть изменен, но переменная всегда будет ссылаться на тот же самый an object
    • Также это справедливо и для массивов, потому что массивы являются an objectми, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так How final класс не может наследоваться, его методы никогда не могут быть переопределены

    finally — блок в связке try-catch-finally, code в котором выполнится независимо от того вылетело ли исключение в блоке try or нет. Используется для освобождения ресурсов.

    finalize — метод в классе Object см 6.

  8. What такое try-with-resources?

    Это специальная конструкция try, называемая try-with-resources, в которой Обрати внимание – после try следуют круглые скобки, где объявляются переменные и создаются an objectы. Эти an objectы можно использовать внутри блока try, обозначенного скобками {}. Когда выполнение команд блока try закончится, независимо от того – нормально оно закончилось or было исключение, для an object, созданного внутри круглых скобок (), будет вызван метод close();

  9. Чем отличаются методы wait(1000) и sleep(1000)?

    sleep() приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLE

    wait() меняет состояние потока на WAITING

    может быть вызвано только у an object владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае wait(int) с аргументом состояние будет TIMED_WAITING

  10. В чем отличие i++ и ++i?

    • ++i, i сначала увеличивается на 1, затем участвует в выражении.
    • i++, i сначала участвует в выражении, затем увеличивается на 1.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION