JavaRush /Blog Java /Random-FR /Niveau 21. Réponses aux questions d'entretien sur le suje...
zor07
Niveau 31
Санкт-Петербург

Niveau 21. Réponses aux questions d'entretien sur le sujet du niveau

Publié dans le groupe Random-FR
Niveau 21. Réponses aux questions d'entretien sur le thème du niveau - 1
  1. Répertorier les méthodes de classeObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsPourquoi & méthodes sont-elles nécessaires hashCode?

    Utilisé pour comparer des objets.

    Le but de la méthode equalsest de déterminer si les objets sont identiques en interne en comparant le contenu interne des objets. Cela equalsfonctionne lentement, d'abord les codes de hachage des objets sont comparés, et si les codes de hachage sont égaux, une vérification est effectuée par rapport àequals

  3. Que se passe-t-il si vous remplacez equals mais ne remplacez pas hashCode?

    Initialement hashCode, un nombre aléatoire.

    equalsLes collections en Java les recherchent/comparent toujours à l'aide de la méthode avant de comparer les objets à l'aide de hashCode(). Et si des objets identiques ont des valeurs différentes hashCode, alors les objets seront considérés comme différents - il ne sera tout simplement pas possible de les comparer equals.

  4. Pourquoi les méthodes wait, notify, notifyAll?

    Parfois, dans un programme, il peut y avoir une situation où un thread est entré dans un bloc de code synchronized, a bloqué le moniteur et ne peut plus fonctionner, car certaines données manquent encore : par exemple, le fichier qu'il doit traiter n'a pas encore été chargé ou quelque chose comme ça. Une méthode a été inventée pour résoudre ce problème wait(). L’appel de cette méthode entraîne la libération du moniteur par le thread et sa « pause ».

    Pour reprendre la pause, des méthodes sont utilisées notify. notifyAllLa méthode notify« dégèle » un thread aléatoire, la méthode notifyAll– tous les threads « gelés » d'un moniteur donné.

  5. Comment cloner correctement un objet ?

    Deux types de clonage.

    Pour cloner un objet par défaut :

    • Ajoutez une interface Cloneableà votre classe
    • Remplacez la méthode cloneet appelez-y l'implémentation de base :
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    Ou vous pouvez écrire vous-même l’implémentation de la méthodeclone :

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. Pourquoi cette méthode est-elle nécessaire finalize()et comment fonctionne-t-elle ?

    Si vous vous en souvenez, il finalize()s'agit d'une méthode spéciale qui est appelée sur un objet avant que le garbage collector ne le détruise.

    L'objectif principal de cette méthode est de libérer les ressources externes non Java utilisées : fichiers de fermeture, flux d'E/S, etc.

    finalize()fonctionne de manière instable.

    Cette méthode n’est pas à la hauteur des attentes placées en elle. La machine Java peut retarder la destruction d'un objet, ainsi que l'appel d'une méthode, finalizeaussi longtemps qu'elle le souhaite. De plus, cela ne garantit pas du tout que cette méthode sera appelée. Dans de nombreuses situations, par souci d'« optimisation », cela n'est pas appelé.

  7. Quelle est la différence final, finally, finalize?

    • final- modificateur
    • Les champs ne peuvent pas être modifiés, les méthodes sont remplacées
    • Les classes ne peuvent pas être héritées
    • Ce modificateur s'applique uniquement aux classes, méthodes et variables (également aux variables locales)
    • Les arguments de méthode marqués comme sont en finallecture seule ; toute tentative de les modifier entraînera une erreur de compilation.
    • Переменные 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.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION