JavaRush /وبلاگ جاوا /Random-FA /سطح 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روش، آنها را با استفاده از روش جستجو می کنند/مقایسه می کنند 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()یک روش خاص است که قبل از اینکه زباله جمع کننده آن شی را از بین ببرد، روی آن فراخوانی می شود.

    هدف اصلی این روش انتشار منابع خارجی غیر جاوا است: بستن فایل ها، جریان های ورودی/خروجی و غیره.

    finalize()ناپایدار کار می کند

    این روش انتظارات را برآورده نمی کند. ماشین جاوا می تواند تخریب یک شی و همچنین فراخوانی یک متد را 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