기술면접 질문 정리 - Java(2)

너구리로소이다·2023년 5월 3일
0
post-thumbnail

JAVA



👩‍🎓 Collection

1. List, Map, Set, Stack, Queue 인터페이스를 기준으로 여러 구현체가 존재.

2. 왜 collection을 사용?

  • 다수의 데이터를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure를 직접 구현하지 않고 편하게 사용할 수 있기 때문이다.
  • 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다.
  • 프로그램의 공간적인 효율성을 높여준다.

3.List

  • 직접 @Override를 통해 사용자가 정의하여 사용할 수도 있다.
  • 대표적인 구현체
    • ArrayList(Vector개선), LinkedList

4.Map

  • key-value 구조로 이루어져 있다.
  • key를 기준으로 중복된 값을 저장하지 않으여, 순서를 보장하지 않는다.
  • 대표적인 구현체
    • HashMap, TreeMap(key값으로 정렬), LinkedHashMap(순서를 보장)

5.Set

  • value에 대해 중복된 값을 저장하지 않으며, 순서를 보장하지 않는다.
  • 대표적인 구현체
    • HashSet, LinkedHashSet(순서를 보장)

6.Stack

  • 선형 자료구조.
  • 나중에 들어온 원소가 가장 먼저 나온다.(LIFO)
  • 먼저 들어간 원소가 나중에 나온다.(FILO)

7.Queue

  • 선형 자료 구조.
  • 먼저 들어온 원소가 가장 먼저 나온다.(FIFO)
    • Priority Queue(트리구조)

👩‍🎓 Annotation

1. 본래 주석이란 뜻으로, 인터페이스를 기반으로 한 문법.

2. 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다.

3. 해석되는 시점을 정할 수 도 있다.

4. 종류

  • Built-in annotation

    • 자바에 내장되어 있는 어노테이션.

    • 주로 컴파일러를 위한 것으로 컴파일러에게 유용한 정보 제공.

    • 대표적인 예

      	@Override(현재메서드가 수퍼클래스의 메소드를 오버라이드한 메소드임을 명시)
      	@Deprecated(더이상 사용하지 말아야 할 메소드 명시)
      	@SupressWarning(프로그래머의 의도를 컴파일러에게 전달하여 경고를 제거)
          @FunctionalInterface(컴파일러에게 다음 인터페이스는 함수형 인터페이스 임을 알린다.)
  • Meta annotation

    • 어노테이션에대한 정보를 나타내기위한 어노테이션

    • 어노테이션의 동작을 결정

    • 새로운 어노테이션 정의할 때 사용

    • 대표적인 예

      @Target(적용가능한 대상을 지정하는데 사용)
      @Retention(유지되는 기간을 정하는데 사용)
       	RetentionPolicy (SOURCE, CLASS, RUNTIME)
      @Documented(jvavadoc으로 작성한 문서에 포함되도록 할 때 사용)
      @Inherited(자손클래스에도 상속되도록 함)
      @Native(네이티브 메서드에 의해 참조되는 상수 필드에 붙임)
  • Custom annotation

    • 개발자가 직접 만들어내는 어노테이션

      	public @Interface Annotation {}

reference


👩‍🎓 Generic

1. 자바에서 안정성을 맡고 있다.

2. 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에서 사용하는 것으로 컴파일과정에서 타입체크를 해주는 기능이다.

3. 객체의 타입 안정성을 높이고 형변황의 번거로움을 줄여준다.

4. 코드도 간결해진다.

예를 들면, Collection 에 특정 객체만 추가될 수 있도록, 
또는 특정한 클래스의 특징을 갖고 있는 경우에만 추가될 수 있도록 하는 것

5. collection 내부에서 들어온 값이 내가 원하는 값인지 별도의 로직처리를 구현할 필요가 없어진다.

6. api 를 설계하는데 있어서 보다 명확한 의사전달이 가능해진다.

profile
일단 해보자 뭐든 되겠지 😄

0개의 댓글