JavaRush /Java Blog /Random-KO /커피 브레이크 #167. Java 인터뷰 전에 검토할 사항입니다. Java에서 열거형과 반복자의 차이점...

커피 브레이크 #167. Java 인터뷰 전에 검토할 사항입니다. Java에서 열거형과 반복자의 차이점은 무엇입니까?

Random-KO 그룹에 게시되었습니다

Java 인터뷰 전 검토할 사항

출처: Medium 이 기사에서는 Java 인터뷰에 도움이 될 숙련된 개발자의 17가지 팁을 찾을 수 있습니다. 커피 브레이크 #167.  Java 인터뷰 전에 검토할 사항입니다.  Java에서 열거형과 반복자의 차이점은 무엇입니까?  - 1저는 20년 넘게 IT 업계에 종사해 왔으며 대부분의 시간을 Java를 사용하여 작업했습니다. 또한 저는 Java 개발자와 인터뷰하면서 상당한 경험을 얻었습니다. Java 언어는 지속적으로 발전하고 있지만 핵심 개념은 거의 동일합니다. 인터뷰에 가기 전에 개발자 지망생들과 공유하고 싶은 몇 가지 팁은 다음과 같습니다. 반복하면 심각한 실수를 피할 수 있습니다.
  1. Object 클래스는 Java 클래스 계층 구조의 루트에 있습니다. 모든 Java 클래스는 Object 를 추적합니다 . 클래스가 어떤 클래스도 명시적으로 확장하지 않더라도 Object 를 확장합니다 . 그러나 클래스는 자유롭게 Object를 명시적으로 확장할 수 있습니다.

  2. Java에서는 하나의 클래스만 확장할 수 있습니다(모호성으로 인해 다중 상속이 허용되지 않음). 그러나 클래스는 동시에 원하는 수의 인터페이스를 구현할 수 있습니다.

  3. 인터페이스는 구현이 아닌 다른 인터페이스를 확장합니다.

  4. Java에는 public (모든 사람이 사용 가능), protected (하위 클래스에만 사용 가능), private (단일 클래스 내에서만 사용 가능), default (단일 패키지 내에서 사용 가능)의 네 가지 액세스 한정자가 있습니다 . 동일한 클래스의 하위 클래스가 다른 패키지에 있을 수 있다는 점에 유의해야 합니다. 상위 클래스와 하위 클래스가 동일한 패키지에 속할 필요는 없습니다.

  5. 클래스 문자열은 변경할 수 없습니다. 불변성은 String 클래스 자체가 String 참조 의 값을 대체하기 위한 메서드를 제공하지 않음을 의미합니다 . 문자열 참조 값을 바꾸려면 = 연산자를 사용하여 명시적으로 값을 할당해야 합니다 . 이를 Append와 같은 메서드가 있어 = 연산자를 사용할 필요가 없는 StringBuffer 또는 StringBuilder 클래스 와 비교해 보세요 .

  6. ConcurrentHashMap은 Hashtable 보다 더 효율적입니다 . ConcurrentHashMap은 기본 데이터 구조의 세그먼트에서 작동하며 쓰기 작업은 특정 세그먼트만 잠급니다(키가 속한 세그먼트에 관계없이). 그러나 Hashtable 에서는 전체 데이터 구조가 잠깁니다.

  7. HashMap 은 스레드 안전성을 구현하지 않기 때문에 ConcurrentHashMap 은 HashMap 보다 느립니다 . 스레드가 HashMap을 반복 하고 다른 스레드가 동일한 HashMap을 수정하려고 시도하는 경우 HashMap은 ConcurrentModificationException을 발생시킬 수 있습니다 . ConcurrentHashMap은 여기서 예외를 발생시키지 않습니다.

  8. 정의한 동일한 클래스의 두 개체의 동등성을 구현하는 방법은 무엇입니까? 답변: 이는 hashcode() 메서드를 재정의하여 수행할 수 있습니다 .

  9. toString() 메소드 의 기본 결과는 무엇입니까? 답변: 이는 클래스 이름, @ 기호 및 hashcode() 값을 연결한 것입니다 .

  10. Java에서 다형성을 구현하는 방법은 무엇입니까? 이를 수행하는 한 가지 방법은 메서드를 오버로드하는 것입니다. 또 다른 방법은 메서드를 재정의하는 것입니다.

  11. 하위 클래스에서 슈퍼클래스 생성자를 어떻게 호출합니까? 답변: 이는 super() 키워드를 사용하여 수행할 수 있습니다 . 인수가 없는 super() 메서드는 명시적으로 지정되지 않은 경우에도 항상 호출됩니다. 인수가 있는 super() 메소드는 명시적으로 지정되어야 합니다. 인수가 있든 없든 super() 에 대한 호출은 호출이 필요한 경우 항상 자식 클래스 생성자의 첫 번째 줄이어야 합니다.

  12. 확인된 예외와 확인되지 않은 예외란 무엇입니까? 답변: 확인된 예외는 throw될 것으로 예상되는 메서드에서 선언되거나 포착되어야 하는 예외입니다. 확인되지 않은 예외에는 이러한 제한이 없습니다. java.io.IOException은 확인된 예외의 예입니다. 확인되지 않은 예외는 RunTimeException 클래스 에서 발생합니다 .

  13. 예외 계층의 루트 클래스는 Throwable 입니다 (이는 암시적으로 Object를 확장합니다 ). 예외오류는 Throwable 에서 발생합니다 .

  14. Java 8부터 메소드는 인터페이스에서 구현될 수 있습니다. 기본 메서드와 정적 메서드에는 구현이 있을 수 있습니다.

  15. 추상 으로 간주되는 클래스는 인스턴스화할 수 없습니다. 메서드에 대한 본문을 제공하지 않는 모든 클래스는 추상으로 선언되어야 합니다. 개발자는 모든 메소드에 본문이 있더라도 클래스를 추상 클래스로 선언할 수 있습니다. 그러나 이 경우 클래스를 인스턴스화할 수 없으므로 권장되지 않습니다.

  16. 최종 수업은 연장할 수 없습니다. 최종 변수에는 다른 값을 할당할 수 없습니다. 최종 메서드는 재정의될 수 없습니다.

  17. try-catch-finally 구성 에는 어떤 키워드가 필요합니까 ? 이는 try-catch , try-finally 또는 세 가지 모두일 수 있습니다. 이 경우 catch 는 필수 키워드가 아닙니다.

Java에서 열거형과 반복자의 차이점은 무엇입니까?

출처: Rrtutors 이 게시물에서는 Java의 열거와 반복의 차이점에 대해 설명합니다. Java.util 패키지는 Collection 객체 의 요소를 탐색하기 위한 두 가지 인터페이스 ( EnumerationIterator) 를 제공합니다 . 둘 다 Collection 객체를 통과하지만 둘 사이에는 몇 가지 차이점이 있습니다.

열거형과 반복자의 차이점

  • JDK에 추가된 시간: 서로 다른 시기에 소개됩니다. Enum은 JDK 1.0에 도입되었고, iterator는 JDK 1.2에 도입되었습니다.

  • 요소 제거: 이것이 둘 사이의 주요 차이점입니다. Iterator 인터페이스 에서는 Collection 객체를 반복할 때 요소를 제거할 수 있지만 Enumeration을 사용하여 Collection 객체를 반복할 때는 요소를 변경할 수 없습니다 . 이는 Iterator 인터페이스 에는 제거() 메소드가 있지만 Enumeration 인터페이스 에는 없기 때문입니다.

  • 작업 유형: 반복자에는 오류 방지 작업 유형이 있고 열거형에는 오류 방지 작업 유형이 있습니다. 결과적으로 Iterator는 자체적인 Remove() 메서드를 사용 하지 않는 한 반복 중에 컬렉션이 수정될 때 ConcurrentModificationException을 발생시키는 반면, Enumeration은 반복 중에 컬렉션이 수정될 때 어떤 예외도 발생시키지 않습니다.

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