JavaRush /Java блогы /Random-KK /Деңгей 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- an objectілердің ішкі мазмұнын салыстыру арқылы олардың ішкі жағынан бірдей екендігін анықтау. Бұл equalsбаяу жұмыс істейді, алдымен нысандардың хэш-codeтары салыстырылады, ал хэш-codeтар тең болса, тексеру жүргізіледі.equals

  3. Теңдерді қайта анықтасаңыз, бірақ қайта анықталмаса не болады hashCode?

    Бастапқыда hashCodeкездейсоқ сан.

    Java-дағы жинақтар әрқашан нысанды пайдаланып салыстыру алдында equalsәдісті пайдаланып оларды іздейді/салыстыру hashCode(). Ал егер бірдей an objectілерде әртүрлі болса hashCode, онда an objectілер әртүрлі болып саналады - оларды пайдалану арқылы салыстыру мүмкін болмайды equals.

  4. Неліктен әдістер wait, notify, notifyAll?

    Кейде бағдарламада ағын code блогына еніп 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()қоқыс жинаушы оны жоймас бұрын an objectіге шақырылатын арнайы әдіс.

    Бұл әдістің негізгі мақсаты пайдаланылған сыртқы Java емес ресурстарды шығару болып табылады: файлдарды жабу, енгізу/шығару ағындары және т.б.

    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