JavaRush /จาวาบล็อก /Random-TH /ระดับ 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คือเพื่อตรวจสอบว่าวัตถุภายในเหมือนกันหรือไม่โดยการเปรียบเทียบเนื้อหาภายในของวัตถุ สิ่งนี้equalsทำงานช้า ก่อนอื่นจะมีการเปรียบเทียบรหัสแฮชของออบเจ็กต์ และหากรหัสแฮชเท่ากัน จะมีการตรวจสอบกับequals

  3. จะเกิดอะไรขึ้นถ้าคุณแทนที่เท่ากับแต่ไม่แทนที่hashCode?

    เริ่มแรกhashCodeจะเป็นตัวเลขสุ่ม

    equalsคอลเลกชันใน Java จะค้นหา/เปรียบเทียบโดยใช้วิธีการเสมอก่อนที่จะเปรียบเทียบวัตถุโดยใช้hashCode(). และหากวัตถุที่เหมือนกันมีความแตกต่างกัน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()ทำงานไม่เสถียร

    วิธีนี้ไม่เป็นไปตามความคาดหวังที่ตั้งไว้ เครื่อง 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