JavaRush /Blogue Java /Random-PT /Nível 21. Respostas às perguntas da entrevista sobre o tó...
zor07
Nível 31
Санкт-Петербург

Nível 21. Respostas às perguntas da entrevista sobre o tópico do nível

Publicado no grupo Random-PT
Nível 21. Respostas às perguntas da entrevista sobre o tema do nível - 1
  1. Listar métodos de classeObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsPor que os & métodos são necessários hashCode?

    Usado para comparar objetos.

    O objetivo do método equalsé determinar se os objetos são internamente idênticos, comparando o conteúdo interno dos objetos. Isso equalsfunciona lentamente, primeiro os códigos hash dos objetos são comparados e, se os códigos hash forem iguais, é feita uma verificaçãoequals

  3. O que acontece se você substituir equals, mas não substituir hashCode?

    Inicialmente hashCode, um número aleatório.

    equalsColeções em Java sempre procuram/comparam-nas usando o método antes de comparar objetos usando hashCode(). E se objetos idênticos tiverem diferentes hashCode, então os objetos serão considerados diferentes - simplesmente não será possível compará-los com eles equals.

  4. Por que os métodos são wait, notify, notifyAll?

    Às vezes, um programa pode passar por uma situação em que um thread entrou em um bloco de código synchronized, bloqueou o monitor e não pode continuar trabalhando, porque ainda faltam alguns dados: por exemplo, o arquivo que deveria processar ainda não foi carregado ou algo parecido. Um método foi inventado para resolver este problema wait(). Chamar esse método faz com que o thread libere o monitor e "pause".

    Para retomar, são usados ​​métodos notify. notifyAllO método notify“descongela” um thread aleatório, o método notifyAll– todos os threads “congelados” de um determinado monitor.

  5. Como clonar um objeto corretamente?

    Dois tipos de clonagem.

    Para clonar um objeto padrão:

    • Adicione uma interface Cloneableà sua classe
    • Substitua o método clonee chame a implementação base nele:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    cloneOu você mesmo pode escrever a implementação do método :

    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 que o método é necessário finalize()e como funciona?

    Se você se lembra, este finalize()é um método especial chamado em um objeto antes que o coletor de lixo o destrua.

    O objetivo principal deste método é liberar recursos externos não Java usados: fechar arquivos, fluxos de E/S, etc.

    finalize()funciona instável.

    Este método não corresponde às expectativas nele depositadas. A máquina Java pode atrasar a destruição de um objeto, bem como a chamada de um método, finalizepelo tempo que desejar. Além disso, não garante que esse método seja chamado. Em muitas situações, por uma questão de “otimização” não é chamado.

  7. Qual é a diferença final, finally, finalize?

    • final- modificador
    • Os campos não podem ser alterados, os métodos são substituídos
    • As classes não podem ser herdadas
    • Este modificador só se aplica a classes, métodos e variáveis ​​(também variáveis ​​locais)
    • Os argumentos do método marcados como são finalsomente leitura; tentar alterá-los resultará em um erro de compilação.
    • Переменные 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.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION