JavaRush /Blog Java /Random-ES /Nivel 21. Respuestas a las preguntas de la entrevista sob...
zor07
Nivel 31
Санкт-Петербург

Nivel 21. Respuestas a las preguntas de la entrevista sobre el tema del nivel.

Publicado en el grupo Random-ES
Nivel 21. Respuestas a las preguntas de la entrevista sobre el tema del nivel - 1
  1. Listar métodos de claseObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equals¿Por qué se necesitan & métodos hashCode?

    Se utiliza para comparar objetos.

    El propósito del método equalses determinar si los objetos son internamente idénticos comparando el contenido interno de los objetos. Esto equalsfunciona lentamente, primero se comparan los códigos hash de los objetos y, si los códigos hash son iguales, se realiza una verificación.equals

  3. ¿Qué sucede si anulas iguales pero no anulas hashCode?

    Inicialmente hashCode, un número aleatorio.

    equalsLas colecciones en Java siempre las buscan/comparan usando el método antes de comparar objetos usando hashCode(). Y si objetos idénticos tienen diferentes hashCode, entonces los objetos se considerarán diferentes; simplemente no será posible compararlos usando equals.

  4. ¿Por qué los métodos son wait, notify, notifyAll?

    A veces, en un programa puede haber una situación en la que un hilo ha entrado en un bloque de código synchronized, ha bloqueado el monitor y no puede seguir funcionando, porque Todavía faltan algunos datos: por ejemplo, aún no se ha cargado el archivo que debería procesar o algo así. Se inventó un método para resolver este problema wait(). Llamar a este método hace que el hilo libere el monitor y se "pause".

    Para reanudar la pausa, se utilizan métodos notify. notifyAllEl método notify"descongela" un hilo aleatorio, el método notifyAll- todos los hilos "congelados" de un monitor determinado.

  5. ¿Cómo clonar un objeto correctamente?

    Dos tipos de clonación.

    Para clonar un objeto predeterminado:

    • Añade una interfaz Cloneablea tu clase
    • Anule el método cloney llame a la implementación base en él:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    O puedes escribir la implementación del método clonetú mismo:

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. ¿Por qué es necesario el método finalize()y cómo funciona?

    Si recuerda, este finalize()es un método especial que se llama a un objeto antes de que el recolector de basura lo destruya.

    El objetivo principal de este método es liberar recursos externos no Java usados: cerrar archivos, flujos de E/S, etc.

    finalize()Funciona inestable.

    Este método no está a la altura de las expectativas depositadas en él. La máquina Java puede retrasar la destrucción de un objeto, así como la llamada de un método, finalizetodo el tiempo que quiera. Además, no garantiza que se llame a este método en absoluto. En muchas situaciones, por motivos de "optimización" no se llama así.

  7. Cuál es la diferencia final, finally, finalize?

    • final- modificador
    • Los campos no se pueden cambiar, los métodos se anulan
    • Las clases no se pueden heredar
    • Este modificador solo se aplica a clases, métodos y variables (también variables locales)
    • Los argumentos del método marcados como son finalde solo lectura; intentar cambiarlos resultará en un error de compilación.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить significado при объявлении o в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на un objeto, un objeto может быть изменен, но переменная всегда будет ссылаться на тот же самый un objeto
    • Также это справедливо и для массивов, потому что массивы являются un objetoами, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так Cómo final класс не может наследоваться, его методы никогда не могут быть переопределены

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

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

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

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

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

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

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

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

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

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