JavaRush /Java Blog /Random-KO /레벨 21. 레벨 주제에 대한 인터뷰 질문에 대한 답변
zor07
레벨 31
Санкт-Петербург

레벨 21. 레벨 주제에 대한 인터뷰 질문에 대한 답변

Random-KO 그룹에 게시되었습니다
레벨 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임의의 숫자입니다.

    Java의 컬렉션 equalshashCode(). 그리고 동일한 객체가 다른 경우 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()가비지 수집기가 개체를 파기하기 전에 개체에 대해 호출되는 특수 메서드입니다.

    이 방법의 주요 목적은 사용된 외부 비Java 리소스(파일 닫기, I/O 스트림 등)를 해제하는 것입니다.

    finalize()불안정하게 작동합니다.

    이 방법은 기대에 부응하지 못합니다. finalizeJava 시스템은 원하는 만큼 객체의 소멸과 메소드 호출을 지연시킬 수 있습니다 . 또한 이 메서드가 호출된다는 보장도 없습니다. 많은 상황에서 "최적화"를 위해 호출되지 않습니다.

  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