JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #167. สิ่งที่ต้องทบทวนก่อนการสัมภาษณ์ Java ควา...

คอฟฟี่เบรค #167. สิ่งที่ต้องทบทวนก่อนการสัมภาษณ์ Java ความแตกต่างระหว่าง enum และ iterator ใน Java คืออะไร?

เผยแพร่ในกลุ่ม

สิ่งที่ต้องทบทวนก่อนการสัมภาษณ์ Java

ที่มา: สื่อ ในบทความนี้ คุณจะพบกับ 17 เคล็ดลับจากนักพัฒนาที่มีประสบการณ์ซึ่งจะช่วยคุณในการสัมภาษณ์ Java คอฟฟี่เบรค #167.  สิ่งที่ต้องทบทวนก่อนการสัมภาษณ์ Java  ความแตกต่างระหว่าง enum และ iterator ใน Java คืออะไร?  - 1ฉันทำงานในอุตสาหกรรมไอทีมานานกว่า 20 ปีและใช้เวลาส่วนใหญ่ทำงานกับ Java นอกจากนี้ ฉันยังได้รับประสบการณ์มากมายในการสัมภาษณ์นักพัฒนา Java แม้ว่าภาษา Java จะมีการพัฒนาอย่างต่อเนื่อง แต่แนวคิดหลักยังคงเหมือนเดิมเป็นส่วนใหญ่ เคล็ดลับบางส่วนที่ฉันต้องการแชร์กับนักพัฒนามือใหม่ก่อนไปสัมภาษณ์มีดังนี้ หากคุณทำซ้ำมันจะช่วยคุณจากความผิดพลาดร้ายแรง
  1. คลาสObjectอยู่ที่รูทของลำดับชั้นคลาส Java คลาส Java ทั้งหมดติดตามกลับไปยังObject แม้ว่าคลาสจะไม่ขยายคลาสใด ๆ อย่างชัดเจน แต่Object ก็ขยายออก ไป อย่างไรก็ตาม คลาสมีอิสระที่จะขยายObjectอย่างชัดเจน

  2. ใน Java คุณสามารถขยายได้เพียงคลาสเดียว (ไม่อนุญาตให้มีการสืบทอดหลายรายการเนื่องจากความคลุมเครือ) อย่างไรก็ตาม คลาสสามารถใช้อินเทอร์เฟซจำนวนเท่าใดก็ได้ในเวลาเดียวกัน

  3. อินเทอร์เฟซขยายอินเทอร์เฟซอื่น (ตรงข้ามกับการใช้งาน)

  4. มีตัวดัดแปลงการเข้าถึงสี่ตัวใน Java: สาธารณะ (ใช้ได้กับทุกคน), ป้องกัน (มีให้สำหรับคลาสย่อยเท่านั้น), ส่วนตัว (มีให้เฉพาะภายในคลาสเดียว), ค่าเริ่มต้น (มีให้ในแพ็คเกจเดียว) ควรสังเกตว่าคลาสย่อยของคลาสเดียวกันสามารถอยู่ในแพ็คเกจที่แตกต่างกันได้ คลาสพาเรนต์และคลาสย่อยไม่จำเป็นต้องเป็นส่วนหนึ่งของแพ็คเกจเดียวกัน

  5. สตริงคลาสไม่เปลี่ยนรูป ความไม่เปลี่ยนรูปหมายความว่า คลาส String เองไม่ได้จัดเตรียมวิธี การใด ๆ สำหรับการแทนที่ค่าใน การอ้างอิง String หากคุณ ต้องการแทนที่ค่าของการอ้างอิงสตริง คุณต้องกำหนดค่าอย่างชัดเจนโดยใช้ ตัวดำเนินการ = เปรียบเทียบสิ่งนี้กับ คลาส StringBufferหรือStringBuilderซึ่งมีวิธีการเช่น append ดังนั้นคุณไม่จำเป็นต้องใช้ ตัวดำเนินการ = ที่ นั่น

  6. ConcurrentHashMap มี ประสิทธิภาพมากกว่าHashtable ConcurrentHashMapดำเนินการในส่วนต่างๆ ของโครงสร้างข้อมูลพื้นฐาน ซึ่งการดำเนินการเขียนจะล็อกเฉพาะส่วนที่ระบุเท่านั้น (ไม่ว่าคีย์จะอยู่ในส่วนใดก็ตาม) อย่างไรก็ตาม ในHashtableโครงสร้างข้อมูลทั้งหมดจะถูกล็อค

  7. ConcurrentHashMapช้ากว่าHashMapเนื่องจากHashMapไม่ได้ใช้ความปลอดภัยของเธรด HashMapอาจส่งConcurrentModificationExceptionหากเธรดวนซ้ำผ่านHashMapและเธรดอื่นพยายามแก้ไขHashMapเดียวกัน ConcurrentHashMapจะไม่ส่งข้อยกเว้นที่นี่

  8. จะใช้ความเท่าเทียมกันของสองวัตถุในคลาสเดียวกันที่คุณกำหนดได้อย่างไร คำตอบ: ซึ่งสามารถทำได้โดยการแทนที่hashcode() วิธี การ

  9. ผลลัพธ์ เริ่มต้นของ เมธอด toString() คืออะไร? คำตอบ: เป็นการต่อชื่อคลาส เครื่องหมาย @และ ค่า hashcode() เข้าด้วย กัน

  10. จะใช้ความหลากหลายใน Java ได้อย่างไร? วิธีหนึ่งในการทำเช่นนี้คือการโอเวอร์โหลดวิธีการนี้ อีกวิธีหนึ่งคือการแทนที่วิธีการ

  11. คุณจะเรียกคอนสตรัคเตอร์ซูเปอร์คลาสจากคลาสย่อยได้อย่างไร คำตอบ: ซึ่งสามารถทำได้โดยใช้ คำ หลักsuper() เมธอดsuper()ที่ไม่มีอาร์กิวเมนต์จะถูกเรียกเสมอ แม้ว่าจะไม่ได้ระบุไว้อย่างชัดเจนก็ตาม ต้องระบุ เมธอดsuper()พร้อมอาร์กิวเมนต์อย่างชัดเจน การเรียกsuper() (มีหรือไม่มีอาร์กิวเมนต์) จะต้องเป็นบรรทัดแรกในตัวสร้างคลาสย่อยเสมอหากจำเป็นต้องเรียก

  12. ข้อยกเว้นที่ถูกตรวจสอบและไม่ถูกตรวจสอบคืออะไร? คำตอบ: ข้อยกเว้นที่ถูกตรวจสอบคือข้อยกเว้นที่ต้องประกาศหรือตรวจพบในวิธีที่คาดว่าจะถูกโยนทิ้ง ข้อยกเว้นที่ไม่ได้ตรวจสอบไม่มีข้อจำกัดนี้ java.io.IOExceptionเป็นตัวอย่างของข้อยกเว้นที่เลือก ข้อยกเว้นที่ไม่ได้ตรวจ สอบมาจาก คลาส RunTimeException

  13. คลาสรูทของลำดับชั้นข้อยกเว้นคือThrowable (ซึ่งจะขยายObject ออกไปโดยปริยาย ) ข้อยกเว้นและ ข้อ ผิดพลาดมาจากThrowable

  14. ตั้งแต่ Java 8 วิธีการสามารถนำไปใช้ในอินเทอร์เฟซได้ วิธีการเริ่มต้นและวิธีการคงที่สามารถมีการใช้งานได้

  15. คลาสที่มีคุณสมบัติเป็นนามธรรมไม่สามารถสร้างอินสแตนซ์ได้ คลาสใด ๆ ที่ไม่มีเนื้อความสำหรับวิธีการใด ๆ จะต้องประกาศให้เป็นนามธรรม นักพัฒนาสามารถประกาศคลาสให้เป็นนามธรรมได้แม้ว่าเมธอดทั้งหมดจะมีเนื้อหาก็ตาม อย่างไรก็ตาม ไม่แนะนำอย่างยิ่ง เพราะในกรณีนี้ คลาสจะไม่สามารถสร้างอินสแตนซ์ได้

  16. ไม่สามารถขยายชั้นเรียนสุดท้าย ได้ ตัวแปรสุดท้ายไม่สามารถกำหนดค่าอื่นได้ วิธีสุดท้ายไม่สามารถแทนที่ได้

  17. คำหลักใดที่จำเป็นใน การสร้าง try-catch- finally นี่อาจเป็นtry-catch , try-finallyหรือทั้งสามอย่าง ในกรณีนี้catchไม่ใช่คีย์เวิร์ดที่จำเป็น

ความแตกต่างระหว่าง enum และ iterator ใน Java คืออะไร?

ที่มา: Rrtutors โพสต์นี้นำเสนอให้คุณอภิปรายถึงความแตกต่างระหว่างการแจงนับและการวนซ้ำใน Java แพ็คเกจJava.utilจัดเตรียมอินเทอร์เฟซสองแบบสำหรับการสำรวจองค์ประกอบของ อ็อบเจ็กต์ คอลเลกชัน : การแจงนับและตัววนซ้ำ แม้ว่าทั้งสองจะผ่าน วัตถุ Collectionแต่ก็มีความแตกต่างบางประการระหว่างกัน

ความแตกต่างระหว่าง enum และตัววนซ้ำ

  • เวลาที่เพิ่มใน JDK:มีการแนะนำในเวลาที่ต่างกัน Enum เปิดตัวใน JDK 1.0 ในขณะที่ตัววนซ้ำเปิดตัวใน JDK 1.2

  • การลบองค์ประกอบ:นี่คือข้อแตกต่างหลักระหว่างทั้งสอง ในอินเทอร์เฟ ซตัววน ซ้ำ เราสามารถลบองค์ประกอบเมื่อวนซ้ำบน วัตถุ Collectionในขณะที่เราไม่สามารถเปลี่ยนแปลงได้เมื่อวนซ้ำบนวัตถุCollectionโดยใช้การแจงนับ เนื่องจาก อินเทอร์เฟซ Iteratorมี เมธอด Remove() แต่ อินเทอร์เฟซการแจงนับไม่มี

  • ประเภทการดำเนินการ:ตัววนซ้ำมีประเภทการดำเนินการที่ล้มเหลวอย่างรวดเร็ว และการแจงนับมีประเภทการดำเนินการที่ไม่ปลอดภัย เป็นผลให้ Iterator โยนConcurrentModificationException เมื่อคอลเลกชันได้รับการแก้ไขในระหว่างการวนซ้ำ เว้นแต่ว่ามีการใช้เมธอด Remove()ของตัวเองในขณะที่การแจงนับจะไม่เกิดข้อยกเว้นใดๆ เมื่อมีการแก้ไขคอลเลกชันในระหว่างการวนซ้ำ

ตัวอย่างการแจงนับและตัววนซ้ำใน Java

ตัวอย่างการแจงนับ

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.List;

import java.util.Vector;

public class Enumeration_Example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "Apple", "HP"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "Samsung");

        }

        private static void delete(Vector vectali, String laptop) {

            Enumeration lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              String s = (String) lapi.nextElement();

              if (s.equals(laptop)) {

                  vectali.remove(laptop);

              }

            }

            System.out.println("The Laptop brands includes:");

            lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              System.out.println(lapi.nextElement());

            }

      }

}
บทสรุป:
แบรนด์แล็ปท็อปประกอบด้วย: Lenovo Apple HP

ตัวอย่างตัววนซ้ำ:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

import java.util.Vector;

public class Iterator_example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "HP", "Apple"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "HP");

        }

        private static void delete(Vector vectali, String name) {

            Iterator a = vectali.iterator();

            while (a.hasNext()) {

              String s = (String) a.next();

              if (s.equals(name)) {

                  a.remove();

              }

            }

            // Display the names

            System.out.println("The laptop brand includes:");

            a = vectali.iterator();

            while (a.hasNext()) {

              System.out.println(a.next());

            }

      }

}
บทสรุป:
แบรนด์แล็ปท็อปประกอบด้วย: Samsung Lenovo Apple
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION