คำถามสัมภาษณ์พื้นฐาน Java คลาสสิกยินดีต้อนรับสู่การรวบรวมและแบ่งปัน
คำถาม: จะเกิดอะไรขึ้นถ้าวิธีการหลักถูกประกาศส่วนตัว?
คำตอบ: มันสามารถรวบรวมได้ตามปกติ แต่มันจะแจ้งให้ "วิธีการหลักไม่ใช่สาธารณะ" เมื่อทำงาน
คำถาม: อะไรคือความแตกต่างระหว่างการอ้างอิงและการส่งผ่านใน Java?
คำตอบ: การผ่านการอ้างอิงหมายถึงการผ่านที่อยู่แทนที่จะเป็นค่าเองและการผ่านค่าเป็นสำเนาของค่า
คำถาม: หากคุณต้องการเขียนวิธีการเท่ากับของวัตถุอีกครั้งคุณควรพิจารณาอะไรอีก
คำตอบ: HashCode
คำถาม: การใช้งาน "เขียนครั้งเดียวของ Java ดำเนินการทุกที่" ของ Java ได้อย่างไร?
คำตอบ: โปรแกรม Java จะถูกรวบรวมไว้ในไฟล์คลาสที่ประกอบด้วยไบต์ซึ่งสามารถทำงานบนแพลตฟอร์มใด ๆ ได้ดังนั้น Java จึงเป็นแพลตฟอร์มที่ไม่ขึ้นกับแพลตฟอร์ม
คำถาม: อธิบายบทบาทของคำหลักแต่ละคำในคำสั่งโมฆะแบบคงที่สาธารณะ (String args [])
คำตอบ: สาธารณะ: วิธีหลักคือวิธีแรกที่เรียกว่าเมื่อโปรแกรม Java ทำงานดังนั้นจึงต้องมองเห็นสภาพแวดล้อม Java ดังนั้นการมองเห็นจึงถูกตั้งค่าเป็น Pulic
แบบคงที่: แพลตฟอร์ม Java จะไม่สร้างอินสแตนซ์ของคลาสนี้เมื่อเรียกใช้วิธีนี้ดังนั้นวิธีนี้จะต้องประกาศแบบคงที่
เป็นโมฆะ: วิธีหลักไม่มีค่าส่งคืน
สตริงคือประเภทของพารามิเตอร์ที่ส่งผ่านในบรรทัดคำสั่งและ ARGS หมายถึงอาร์เรย์ของสตริงที่ส่งผ่านในบรรทัดคำสั่ง
คำถาม: == ความแตกต่างจากเท่ากับ
คำตอบ: == เปรียบเทียบว่าวัตถุสองชิ้นเป็นวัตถุเดียวกันในหน่วยความจำซึ่งหมายความว่าตำแหน่งการจัดเก็บในหน่วยความจำเหมือนกันหรือไม่ ค่าที่เก็บไว้โดยวัตถุสตริงสองตัวเหมือนกัน แต่อาจถูกเก็บไว้ในสถานที่ต่าง ๆ ในหน่วยความจำ
== การเปรียบเทียบคือการอ้างอิงในขณะที่วิธีเท่ากับการเปรียบเทียบเนื้อหา บูลีนสาธารณะเท่ากับ (Object OBJ) วิธีนี้จัดทำโดยวัตถุวัตถุและสามารถเขียนใหม่ได้โดย subclasses การใช้งานเริ่มต้นจะส่งคืนจริงเฉพาะเมื่อเปรียบเทียบกับตัวเองและในเวลานี้มันเทียบเท่ากับ == สตริง, บิตเซ็ท, วันที่และไฟล์ทั้งหมดแทนที่วิธีเท่ากับ สำหรับวัตถุสตริงสองค่าค่าที่เท่ากันหมายถึงพวกเขามีลำดับอักขระเดียวกัน สำหรับคลาส wrapper ที่มีประเภทพื้นฐานค่าที่เท่ากันหมายความว่าค่าประเภทพื้นฐานที่สอดคล้องกันนั้นเหมือนกัน
คลาสสาธารณะที่เท่าเทียมกัน {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string s1 = "abc"; สตริง S2 = S1; String S5 = "ABC"; สตริง s3 = สตริงใหม่ ("abc"); สตริง s4 = สตริงใหม่ ("abc"); System.out.println ("== การเปรียบเทียบ:" + (S1 == S5)); System.out.println ("== การเปรียบเทียบ:" + (S1 == S2)); System.out.println ("ใช้วิธีการเท่ากับ:” + S1.equals (S2)); System.out.println ("== การเปรียบเทียบ:" + S3 == S4); System.out.println ("ใช้วิธีการเท่ากับ:” + S3.equals (S4)); -ผลลัพธ์:
== การเปรียบเทียบ: จริง
== การเปรียบเทียบ: จริง
การใช้วิธี Equals: จริง
เท็จ
การใช้วิธี Equals: จริง
คำถาม: จะเกิดอะไรขึ้นถ้าตัวดัดแปลงแบบคงที่ของวิธีการหลักจะถูกลบออก?
คำตอบ: โปรแกรมสามารถรวบรวมได้ตามปกติ ข้อยกเว้น Nosuchmethoderror จะถูกโยนลงในระหว่างการรันไทม์
คำถาม: ทำไมไดรเวอร์ Oracle Type4 จึงเรียกว่าไดรเวอร์บาง ๆ ?
คำตอบ: Oracle มีไดรเวอร์ Type 4 JDBC เรียกว่าไดรเวอร์บาง ๆ ไดรเวอร์นี้มีการใช้งาน TCP/IP NET8 ใน Oracle ที่ใช้งานอย่างสมบูรณ์ใน Java ดังนั้นจึงเป็นแพลตฟอร์มที่ไม่ขึ้นกับแพลตฟอร์มและสามารถดาวน์โหลดได้โดยเบราว์เซอร์ที่รันไทม์และไม่พึ่งพาการใช้งาน Oracle ของลูกค้า สตริงการเชื่อมต่อไคลเอนต์ใช้พอร์ตที่อยู่ TCP/IP ไม่ใช่ TNSNAME ของชื่อฐานข้อมูล
คำถาม: ให้ฉันแนะนำวิธีการสรุป
คำตอบ: สุดท้าย: การประกาศอย่างต่อเนื่อง ในที่สุด: จัดการข้อยกเว้น เสร็จสิ้น: ช่วยในการรวบรวมขยะ
ตัวแปรที่ประกาศในอินเทอร์เฟซถือเป็นที่สิ้นสุดโดยค่าเริ่มต้น คลาสสุดท้ายไม่สามารถสืบทอดได้ซึ่งหมายความว่าไม่มีคลาสย่อย สิ่งนี้ทำด้วยเหตุผลด้านความปลอดภัยประเภทพื้นฐานเช่นสตริงและจำนวนเต็ม นอกจากนี้ยังช่วยให้คอมไพเลอร์สามารถปรับให้เหมาะสมและทำให้ง่ายต่อการรักษาความปลอดภัยของเธรด วิธีสุดท้ายไม่สามารถเขียนใหม่ได้ ค่าของตัวแปรสุดท้ายไม่สามารถเปลี่ยนแปลงได้ วิธีการสรุป () จะถูกเรียกก่อนที่วัตถุจะถูกทำลายและรีไซเคิล ในที่สุดมันก็มักจะใช้สำหรับการจัดการข้อยกเว้นโดยไม่คำนึงว่าจะมีการโยนข้อยกเว้นหรือไม่ก็ตามมันจะถูกดำเนินการ ตัวอย่างเช่นการปิดการเชื่อมต่อมักจะทำในบล็อกในที่สุด
คำถาม: Java API คืออะไร?
คำตอบ: Java API เป็นชุดของส่วนประกอบซอฟต์แวร์จำนวนมากที่ให้คุณสมบัติที่มีประโยชน์มากมายเช่นส่วนประกอบ GUI
คำถาม: คลาส Gregoriancalendar คืออะไร?
คำตอบ: Gregoriancalendar ให้การสนับสนุนปฏิทินตะวันตกแบบดั้งเดิม
คำถาม: คลาส ResourceBundle คืออะไร?
คำตอบ: ResourceBundle ใช้เพื่อจัดเก็บทรัพยากรในสถานที่ที่ระบุ แอปพลิเคชันสามารถโหลดทรัพยากรเหล่านี้ตามสถานที่ทำงานของรันไทม์ซึ่งจะแสดงภาษาที่แตกต่างกัน
คำถาม: ทำไมไม่มีตัวแปรทั่วโลกใน Java?
คำตอบ: ตัวแปรทั่วโลกสามารถมองเห็นได้ทั่วโลกและ Java ไม่สนับสนุนตัวแปรที่มองเห็นได้ทั่วโลกเนื่องจาก: ตัวแปรทั่วโลกทำลายหลักการของการอ้างอิงความโปร่งใส ตัวแปรทั่วโลกทำให้เกิดความขัดแย้งของเนมสเปซ
คำถาม: วิธีการแปลงประเภทสตริงเป็นประเภทหมายเลข?
คำตอบ: วิธีการที่มีค่าของคลาสจำนวนเต็มสามารถแปลงสตริงเป็นตัวเลขได้ นี่คือตัวอย่างรหัส:
สตริง numString = "1000";
int id = integer.valueof (numstring) .intvalue ();
คำถาม: คลาส SimpleTimeZone คืออะไร?
คำตอบ: SimpleTimeZone ให้การสนับสนุนวันที่ Gregorian
คำถาม: อะไรคือความแตกต่างระหว่างการวนซ้ำกับลูป?
คำตอบ: โครงสร้างในขณะที่กำหนดว่าการทำซ้ำครั้งต่อไปควรดำเนินการต่อที่จุดเริ่มต้นของลูปหรือไม่ โครงสร้าง DO/ในขณะที่กำหนดว่าการทำซ้ำครั้งต่อไปจะดำเนินต่อไปในตอนท้ายของลูปหรือไม่ โครงสร้าง DO จะดำเนินการกับวงวนอย่างน้อยหนึ่งครั้ง
คำถาม: คลาสสถานที่คืออะไร?
คำตอบ: คลาสสถานที่ใช้เพื่อปรับเอาท์พุทของโปรแกรมแบบไดนามิกตามสภาพแวดล้อมของสถานที่
คำถาม: อะไรคือหลักการของการเขียนโปรแกรมเชิงวัตถุ?
คำตอบ: มีสามประเด็นหลัก: polymorphism, มรดกและการห่อหุ้ม
คำถาม: บทนำสู่หลักการของการสืบทอด
คำตอบ: การสืบทอดอนุญาตให้วัตถุหนึ่งวัตถุได้รับคุณสมบัติของวัตถุอื่น การใช้มรดกช่วยให้สามารถนำฟังก์ชั่นที่ทดสอบซ้ำและสามารถแก้ไขได้ในครั้งเดียวและสถานที่สืบทอดทั้งหมดจะมีผลในเวลาเดียวกัน
คำถาม: การแปลงประเภทโดยนัยคืออะไร?
คำตอบ: การแปลงประเภทโดยนัยเป็นเพียงการกำหนดประเภทหนึ่งให้กับประเภทอื่นโดยไม่ต้องบอกคอมไพเลอร์อย่างชัดเจนว่าการแปลงเกิดขึ้น ไม่ใช่ทุกประเภทที่สนับสนุนการแปลงประเภทโดยนัย
ตัวอย่างรหัส:
int i = 1,000;
j = i; // การคัดเลือกนักแสดงโดยนัย
คำถาม: ขนาดของคำหลักใน Java หรือไม่?
คำตอบ: ไม่
คำถาม: วิธีการดั้งเดิมคืออะไร?
คำตอบ: วิธีการดั้งเดิมเป็นวิธีการใช้งานรหัสที่ไม่ใช่ Java
คำถาม: ใน system.out.println (), ระบบ, out, และ println คืออะไร?
คำตอบ: ระบบเป็นคลาสสุดท้ายที่กำหนดไว้ล่วงหน้าโดยระบบ Out เป็นวัตถุ printstream และ println เป็นวิธีการโอเวอร์โหลดในวัตถุ OUT
คำถาม: การห่อหุ้มการสืบทอดและความหลากหลายคืออะไร?
คำตอบ: พูดง่ายๆคือ polymorphism หมายถึงการใช้งานหลายชื่อของชื่อเดียว Polymorphism ช่วยให้เอนทิตีสามารถดำเนินการที่แตกต่างกันได้ การดำเนินการเฉพาะจะถูกกำหนดโดยการใช้งานจริง
มีสามวิธีในการแสดงความหลากหลายใน Java: วิธีการโอเวอร์โหลดวิธีการถูกนำไปใช้ผ่านการสืบทอดและวิธีการเขียนใหม่ผ่านอินเตอร์เฟส Java
คำถาม: การแปลงประเภทที่ชัดเจนคืออะไร?
คำตอบ: การแปลงประเภทที่ชัดเจนจะบอกให้คอมไพเลอร์แปลงวัตถุอย่างชัดเจน
ตัวอย่างรหัส:
Long I = 700.20;
int j = (int) i; // การคัดเลือกนักแสดงที่ชัดเจน
คำถาม: เครื่องเสมือน Java คืออะไร?
คำตอบ: Java Virtual Machines เป็นระบบซอฟต์แวร์ที่สามารถพอร์ตไปยังแพลตฟอร์มฮาร์ดแวร์ที่แตกต่างกัน
คำถาม: ประเภท downconversion คืออะไร?
คำตอบ: การแปลงลงหมายถึงการแปลงจากประเภททั่วไปเป็นประเภทเฉพาะซึ่งดำเนินการลงบนโครงสร้างการสืบทอด
คำถาม: ตัวดัดแปลงการเข้าถึงสำหรับ Java คืออะไร?
คำตอบ: ตัวดัดแปลงการเข้าถึงเป็นคำหลักที่ระบุประเภทการเข้าถึงของสมาชิกในชั้นเรียน ใช้คำหลักเหล่านี้เพื่อกำหนดวิธีการเข้าถึงวิธีหรือตัวแปรสำหรับโปรแกรม มี:
สาธารณะ: คลาสทั้งหมดสามารถเข้าถึงการป้องกัน: คลาสย่อยทั้งหมดสามารถเข้าถึงส่วนตัว: เฉพาะคลาสที่เข้าร่วมเท่านั้นที่สามารถเข้าถึงค่าเริ่มต้น: คลาสที่ระบุและคลาสย่อยภายใต้แพ็คเกจเดียวกันเท่านั้นที่สามารถเข้าถึงได้
คำถาม: คลาสแม่ของทุกคลาสคืออะไร?
คำตอบ: วัตถุ
คำถาม: Java ประเภทพื้นฐานคืออะไร?
คำตอบ: ไบต์, ถ่าน, สั้น, int, ยาว, ลอย, double, boolean
คำถาม: ลักษณะของประเภทคงที่คืออะไร?
คำตอบ: ตัวแปรคงที่ถูกผูกไว้กับคลาสไม่ใช่วัตถุอินสแตนซ์ของคลาส แต่ละวัตถุอินสแตนซ์แชร์ตัวแปรสแตติกเดียวกัน กล่าวคือคลาสมีตัวแปรคงที่เพียงตัวเดียวไม่ว่าจะมีวัตถุกี่ชิ้น ตัวแปรคลาสหรือตัวแปรคงที่จะถูกประกาศผ่านคำหลักคงที่ ตัวแปรคลาสมักจะใช้เป็นค่าคงที่ ตัวแปรคงที่มักจะเข้าถึงได้โดยชื่อคลาส เมื่อโปรแกรมกำลังทำงานตัวแปรนี้จะถูกสร้างขึ้นจนกว่าโปรแกรมจะเสร็จสิ้นและจะไม่ถูกทำลาย ขอบเขตของตัวแปรคลาสนั้นเหมือนกับตัวแปรอินสแตนซ์ ค่าเริ่มต้นของมันเหมือนกับตัวแปรสมาชิก เมื่อตัวแปรไม่ได้เริ่มต้นจะมีค่าเริ่มต้นตามชนิดข้อมูล ในทำนองเดียวกันวิธีการคงที่เป็นวิธีการที่เป็นของคลาสไม่ใช่วัตถุคลาส การโทรของพวกเขาไม่ได้ดำเนินการกับวัตถุคลาสและพวกเขาไม่จำเป็นต้องสร้างอินสแตนซ์คลาสใด ๆ วิธีการคงที่ของตัวเองถือเป็นที่สิ้นสุดเพราะการเขียนใหม่จะเกิดขึ้นเฉพาะในชั้นเรียน วิธีการคงที่ถูกผูกไว้กับคลาสไม่ใช่วัตถุ วิธีการคงที่ของคลาสแม่จะถูกบล็อกโดยวิธีการคงที่ของชั้นเด็กตราบใดที่วิธีดั้งเดิมไม่ได้ประกาศว่าเป็นที่สุด วิธีที่ไม่คงที่ไม่สามารถแทนที่วิธีการคงที่นั่นคือคุณไม่สามารถเปลี่ยนวิธีการคงที่เป็นวิธีการอินสแตนซ์ในคลาสย่อย
ตัวแปรที่ไม่คงที่มีสำเนาแยกต่างหากของค่าในแต่ละอินสแตนซ์ของวัตถุ
คำถาม: อะไรคือความแตกต่างระหว่างผู้ประกอบการและตัวดำเนินการ &&?
คำตอบ: เมื่อมีการประเมิน & นิพจน์ตัวถูกดำเนินการทั้งสองจะได้รับการประเมินและ && เป็นเหมือนทางลัดไปยังผู้ให้บริการ เมื่อ AN && นิพจน์ประเมินผลตัวถูกดำเนินการแรกจะถูกคำนวณก่อนและหากส่งคืนจริงตัวถูกดำเนินการที่สองจะถูกคำนวณ หากตัวถูกดำเนินการแรกถูกนำมาเป็นเท็จตัวถูกดำเนินการที่สองจะไม่ได้รับการประเมิน
คำถาม: Java จัดการกับการล้นและต่ำของจำนวนเต็มได้อย่างไร?
คำตอบ: Java เก็บไบต์ลำดับต่ำที่สอดคล้องกันในผลการคำนวณเป็นค่าที่สอดคล้องกันตามขนาดของประเภท
คำถาม: จะเกิดอะไรขึ้นถ้าโมฆะคงที่สาธารณะถูกเขียนเป็นโมฆะสาธารณะแบบคงที่?
คำตอบ: โปรแกรมรวบรวมและทำงานตามปกติ
คำถามความแตกต่างระหว่างการประกาศตัวแปรและการกำหนดตัวแปรคืออะไร?
คำตอบ: ประกาศตัวแปรเราให้เฉพาะประเภทและชื่อของตัวแปรและไม่เริ่มต้น คำจำกัดความประกอบด้วยสองขั้นตอน: การประกาศและการเริ่มต้นสตริง S; เพียงแค่การประกาศตัวแปร, สตริง s = สตริงใหม่ ("บ๊อบ"); หรือสตริง s = "บ๊อบ"; เป็นคำจำกัดความตัวแปร
คำถาม: Java ประเภทใดที่ผ่านการส่งพารามิเตอร์ประเภทใด
คำตอบ: พารามิเตอร์ Java ล้วนเป็นค่าที่ผ่านมา สำหรับวัตถุค่าที่ส่งผ่านเป็นการอ้างอิงถึงวัตถุนั่นคือสำเนาของการอ้างอิงดั้งเดิมและการอ้างอิงพารามิเตอร์ทั้งสองชี้ไปที่วัตถุเดียวกัน
คำถาม: อะไรคือหลักการของการห่อหุ้มวัตถุ?
คำตอบ: การห่อหุ้มคือการผูกข้อมูลและรหัสที่ทำงานข้อมูลไปยังหน่วยแยกต่างหาก สิ่งนี้ทำให้มั่นใจได้ถึงความปลอดภัยของข้อมูลและป้องกันการใช้รหัสภายนอกที่ไม่ถูกต้อง วัตถุอนุญาตให้โปรแกรมและข้อมูลถูกห่อหุ้มเพื่อลดการรบกวนที่อาจเกิดขึ้น ความเข้าใจอีกอย่างหนึ่งเกี่ยวกับการห่อหุ้มคือการทำหน้าที่เป็นเลเยอร์ป้องกันสำหรับข้อมูลและรหัสเพื่อป้องกันการเข้าถึงรหัสแบบสุ่มนอกเลเยอร์ป้องกัน
คำถาม: คุณเข้าใจตัวแปรได้อย่างไร?
คำตอบ: ตัวแปรเป็นพื้นที่หน่วยความจำที่มีชื่อสำหรับการเข้าถึงโดยโปรแกรม ตัวแปรจะใช้ในการจัดเก็บข้อมูลและเมื่อโปรแกรมดำเนินการข้อมูลที่เก็บไว้อาจเปลี่ยนแปลงได้เช่นกัน
คำถาม: การปรับปรุงตัวเลขคืออะไร?
คำตอบ: การเพิ่มประสิทธิภาพเชิงตัวเลขหมายถึงการแปลงข้อมูลจากชนิดข้อมูลขนาดเล็กไปเป็นชนิดข้อมูลขนาดใหญ่สำหรับการทำงานจำนวนเต็มหรือจุดลอยตัว ในระหว่างกระบวนการเพิ่มตัวเลขไบต์, ถ่าน, ค่าสั้นจะถูกแปลงเป็นประเภท int เมื่อจำเป็นประเภท INT อาจได้รับการส่งเสริมให้ยาว ยาวและลอยอาจถูกแปลงเป็นสองประเภท
คำถาม: การแปลงประเภทของ Java คืออะไร?
คำตอบ: การแปลงจากประเภทข้อมูลหนึ่งไปอีกประเภทหนึ่งเรียกว่าการแปลงประเภท Java มีวิธีการแปลงสองประเภทหนึ่งคือการแปลงประเภทที่ชัดเจนและอื่น ๆ เป็นนัย
คำถาม: พารามิเตอร์แรกของอาร์เรย์สตริงในพารามิเตอร์ของวิธีหลักคืออะไร?
คำตอบ: อาร์เรย์ว่างเปล่าโดยไม่มีองค์ประกอบใด ๆ ซึ่งแตกต่างจาก C หรือ C ++ องค์ประกอบแรกคือชื่อโปรแกรมโดยค่าเริ่มต้น หากบรรทัดคำสั่งไม่ได้ให้พารามิเตอร์ใด ๆ อาร์เรย์สตริงในวิธีหลักจะว่างเปล่า แต่ไม่เป็นโมฆะ
คำถาม: จะตรวจสอบได้อย่างไรว่าอาร์เรย์เป็นโมฆะหรือว่างเปล่า?
คำตอบ: ค่าเอาต์พุตของ array.length ถ้าเป็น 0 อาร์เรย์จะว่างเปล่า หากเป็นโมฆะข้อยกเว้นตัวชี้ว่างจะถูกโยนลงไป
คำถาม: หลายชั้นเรียนสามารถได้รับอนุญาตให้เป็นเจ้าของในเวลาเดียวกันและมีวิธีการหลักในโปรแกรมได้หรือไม่?
คำตอบ: ใช่ เมื่อโปรแกรมทำงานเราจะระบุชื่อคลาสที่กำลังทำงานอยู่ JVM จะมองหาวิธีการหลักในชั้นเรียนที่คุณระบุเท่านั้น ดังนั้นจึงไม่มีความขัดแย้งในการตั้งชื่อระหว่างหลายคลาสที่มีวิธีการหลัก
คำถาม: ตัวแปรคงที่โหลดเมื่อใด รวบรวมหรือรันไทม์? ช่วงเวลาของการโหลดบล็อกสแตติกคืออะไร?
คำตอบ: เมื่อคลาสโหลดเดอร์โหลดคลาสลงใน JVM ตัวแปรคงที่จะถูกสร้างขึ้นซึ่งไม่มีส่วนเกี่ยวข้องกับการสร้างวัตถุหรือไม่ พื้นที่หน่วยความจำจะได้รับการจัดสรรเมื่อโหลดตัวแปรคงที่ รหัสของบล็อกรหัสคงที่จะถูกเรียกใช้งานเพียงครั้งเดียวเมื่อคลาสเริ่มต้นเป็นครั้งแรก คลาสสามารถมีบล็อกสแตติกหลายบล็อกได้ไม่ใช่สมาชิกของคลาสไม่มีค่าส่งคืนและไม่สามารถเรียกได้โดยตรง บล็อกรหัสสแตติกไม่สามารถมีสิ่งนี้หรือสุดยอดพวกเขามักจะเริ่มต้นด้วยตัวแปรคงที่
คำถาม: คลาสสามารถมีหลายวิธีหลักได้หรือไม่?
คำตอบ: ใช่ แต่มีเพียงวิธีหลักเดียวเท่านั้นที่มีลายเซ็นต่อไปนี้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {}
มิฉะนั้นโปรแกรมจะไม่ถูกรวบรวม คอมไพเลอร์จะเตือนคุณว่ามีวิธีการหลักอยู่แล้ว
คำถาม: ให้ฉันแนะนำสั้น ๆ ว่า JVM ทำงานอย่างไร?
คำตอบ: JVM เป็นคอมพิวเตอร์นามธรรม เช่นเดียวกับคอมพิวเตอร์จริงพวกเขาจะรวบรวมไฟล์. java ลงในไฟล์. class ก่อน (ไฟล์. class เป็นไฟล์ bytecode) จากนั้นใช้ล่ามเพื่อโหลด bytecode
คำถาม: จะเกิดอะไรขึ้นถ้ามีการแลกเปลี่ยนค่าตัวแปรสองตัวในสถานที่?
คำตอบ: ก่อนเพิ่มค่าสองค่าและกำหนดค่าให้กับตัวแปรแรกจากนั้นลบตัวแปรที่สองออกจากผลลัพธ์และกำหนดค่าให้กับตัวแปรที่สอง จากนั้นลบตัวแปรที่สองด้วยตัวแปรแรกและกำหนดค่าให้กับตัวแปรแรกในเวลาเดียวกัน รหัสมีดังนี้:
int a = 5, b = 10; a = a+b; b = ab; a = ab;
ใช้ XOR เพื่อสลับ วิธีแรกอาจทำให้เกิดการล้น วิธีการของ XOR มีดังนี้: int a = 5, b = 10; a = a+b; b = ab; a = ab;
int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
คำถาม: การห่อหุ้มข้อมูลคืออะไร?
คำตอบ: วิธีหนึ่งในการห่อหุ้มข้อมูลคือการสร้าง SET และรับวิธีการในคลาสเพื่อเข้าถึงตัวแปรข้อมูลของวัตถุ โดยทั่วไปแล้วตัวแปรเป็นส่วนตัวในขณะที่วิธีการรับและการตั้งค่าเป็นสาธารณะ การห่อหุ้มยังสามารถใช้เพื่อตรวจสอบข้อมูลเมื่อจัดเก็บข้อมูลหรือเพื่อคำนวณข้อมูลหรือใช้เป็นวิปัสสนา (เช่นการใช้ Javabeans ใน Struts) การห่อหุ้มข้อมูลและฟังก์ชั่นลงในโครงสร้างแยกต่างหากเรียกว่าการห่อหุ้มข้อมูล Encapsulation เป็นการห่อหุ้มข้อมูลและวิธีการดำเนินการที่เกี่ยวข้องลงในหน่วยอิสระเพื่อให้สามารถเข้าถึงข้อมูลได้โดยใช้วิธีการที่เกี่ยวข้องเหล่านี้ การห่อหุ้มให้ความปลอดภัยของข้อมูลซึ่งเป็นวิธีการซ่อนข้อมูล
คำถาม: API Reflection คืออะไร? มันใช้งานได้อย่างไร?
คำตอบ: การสะท้อนกลับหมายถึงฟังก์ชั่นของความสามารถในการดูสถานะและลักษณะของชั้นเรียนในระหว่างการรันไทม์และสามารถดำเนินการจัดการแบบไดนามิกได้ ฟังก์ชั่นเหล่านี้มีให้ผ่าน API การสะท้อนกลับของคลาสในตัวเช่นคลาส, วิธี, ฟิลด์, ตัวสร้าง ฯลฯ ตัวอย่างการใช้งาน: ใช้วิธี getName ของ Java Reflection API เพื่อรับชื่อคลาส
คำถาม: JVM จะรักษาแคชไว้หรือไม่? มันเป็นวัตถุที่จัดสรรในกองหรือเป็นกองของระบบปฏิบัติการหรือกองที่จัดการโดย JVM เองหรือไม่? ทำไม
คำตอบ: ใช่ JVM เองจัดการแคชซึ่งสร้างวัตถุในกองแล้วอ้างอิงวัตถุเหล่านั้นในสแต็ก
คำถาม: หน่วยความจำเสมือนคืออะไร?
คำตอบ: หน่วยความจำเสมือนเรียกอีกอย่างว่าหน่วยความจำขยายและจริง ๆ แล้วไม่มีหน่วยความจำทางกายภาพจริง
คำถาม: วิธีนี้สามารถคงที่และซิงโครไนซ์ในเวลาเดียวกันได้หรือไม่?
คำตอบ: ใช่ หากคุณทำเช่นนี้ JVM จะได้รับการล็อคบน java.lang.class อินสแตนซ์ที่เชื่อมโยงกับวัตถุนี้ การทำเช่นนั้นเท่ากับ:
ซิงโครไนซ์ (xyz.class) {
-
คำถาม: อะไรคือความแตกต่างระหว่าง String และ StringTokenizer?
คำตอบ: StringTokenizer เป็นคลาสเครื่องมือที่ใช้ในการแยกสตริง
StringTokenizer st = new StringTokenizer ("Hello World"); ในขณะที่ (st.hasmoretokens ()) {system.out.println (st.nexttoken ());}
เอาท์พุท:
สวัสดี
โลก
คำถาม: อะไรคือลักษณะของตัวแปรชั่วคราว?
คำตอบ: ตัวแปรชั่วคราวจะไม่เป็นอนุกรม ตัวอย่างเช่นเมื่อคลาสที่ใช้อินเตอร์เฟส serializable จะถูกทำให้เป็นอนุกรมไปยัง ObjectStream ตัวแปรประเภทชั่วคราวจะไม่ถูกเขียนไปยังสตรีม ในเวลาเดียวกันเมื่อ deserialized กลับค่าตัวแปรที่สอดคล้องกันจะเป็นโมฆะ
คำถาม: คอนเทนเนอร์ใดที่ใช้เลย์เอาต์เส้นขอบเป็นเค้าโครงเริ่มต้นของพวกเขา?
คำตอบ: หน้าต่างเฟรมกล่องโต้ตอบ
คำถาม: จะเข้าใจได้อย่างไรว่าการซิงโครไนซ์คืออะไร?
คำตอบ: การซิงโครไนซ์ใช้เพื่อควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกันระหว่างหลายเธรดเพื่อให้แน่ใจว่ามีเพียงเธรดเดียวเท่านั้นที่สามารถเข้าถึงทรัพยากรนี้ได้ในเวลาเดียวกัน ในโปรแกรมมัลติเธรดแบบหลายเธรดที่ได้รับการป้องกันแบบอะซิงโครนัสเมื่อเธรดกำลังแก้ไขตัวแปรที่ใช้ร่วมกันเธรดอื่นอาจใช้หรืออัปเดตค่าของมัน การซิงโครไนซ์หลีกเลี่ยงการสร้างข้อมูลสกปรก
ซิงโครไนซ์วิธีการ:
โมฆะโมฆะแบบซิงโครไนซ์สาธารณะ 1 () {// รหัสที่เกี่ยวข้องกับวิธีการที่เหมาะสม}ซิงโครไนซ์บล็อกรหัสภายในวิธี:
public myfunction () {ซิงโครไนซ์ (นี่) {// รหัสซิงโครไนซ์ที่นี่ -ข้างต้นเป็นการรวบรวมข้อมูลสำหรับคำถามสัมภาษณ์ Java เราจะยังคงเพิ่มข้อมูลที่เกี่ยวข้องในอนาคต ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!