Java - 면접 질문으로 다시 보는 Java의 List와 구현체(ArrayList 등)와 관계

2025. 4. 24. 09:23·Java
반응형

얼마 전에 면접을 보러 갔다가 이런 질문을 받았다.

 

면접관 : ArrayList는 List interface를 구현한 클래스인데 3가지 정도가 같이 넘어오는데 그게 뭔지 아나요?

 

라는 말을 듣고 아주 그냥 멘붕이 왔었다.

그래서 이 글에는 그 내용을 정리해보려고 한다.

 

이 질문에는 두가지의 의미를 가지고 있다고 생각했다.

첫 번째로는 객체지향프로그래밍(OOP)과 설계 관념에서의 추상적 개념

두 번째로는 실제 기능 관점

 

아마 첫번째가 맞을 것 같지만 두 가지 모두 끄적여보려고 한다.

 


객체지향프로그래밍(OOP)와 설계 관념에서의 추상적 개념

 

 1. 다형성 (Polymorphism)

  • List list = new ArrayList(); 이렇게 선언하면 List 타입의 참조 변수로 ArrayList 객체를 다룰 수 있다.
  • 이는 인터페이스를 구현한 클래스가 다형성을 지원하기 때문에 가능
  • 인터페이스를 통해 코드의 유연성과 확장성을 확보할 수 있다.

2. 업캐스팅 (Upcasting)

  • ArrayList 객체를 List 타입으로 형 변환 없이 담을 수 있다.
  • ArrayList는 List의 자식이기 때문에 자동으로 업캐스팅이 된다.
List<String> list = new ArrayList<>(); // 예를 들자면 이런식으로

 

3. 인터페이스 기반 프로그래밍 (Interface-based programming)

  • List 인터페이스를 기준으로 코딩하면, 이후에 ArrayList, LinkedList, Vector 등으로 쉽게 교체할 수 있다.
  • 즉, 구현체를 바꾸더라도 코드 수정이 최소화됨 → 객체지향 설계의 중요한 원칙
List<String> list = new ArrayList<>();
// 나중에 바꾸기 쉬움
list = new LinkedList<>();

 

이걸 정리해본다면

다형성

업캐스팅 (유연한 객체 참조)

인터페이스 기반 설계 (유지보수성과 확장성 확보)

이렇게 세 가지가 있는 것..


 

 

실제 기능 관점

사실 기능 관점에서는 3가지가 넘어가는데 면접관님이 굳이 3가지라고 말한 거 보면 이건 아닌 거 같긴 하다!

그래도 까먹을 수도 있고 알아두면 좋으니까 간략하게 작성하겠다.

 

1. 요소 추가 (add())

  • add(E e) / add(int index, E element)
  • List의 가장 기본적인 기능 중 하나
  • 순서를 유지하면서 요소를 삽입할 수 있는 특징

2. 요소 접근 (get())

  • get(int index)
  • 인덱스를 통한 순차적 접근이 가능하다는 게 List의 차별점
  • 특히 ArrayList는 이 기능이 상수 시간(O(1))이기 때문에 매우 빠름

3. 요소 개수 확인 (size())

  • size()
  • 리스트에 얼마나 많은 요소가 들어있는지 확인하는 기능
  • 컬렉션의 상태를 판단하는 데 기본이 되는 메서드

 

 

물론 cotain()이나 remove()도 중요하지만 기초적이고 본질적인 3가지를 뽑으라면 이 세 개인 것 같다.

다른 List 구현체에서도 공통적으로 쓰이니까..?

앞으로는 이런 거 안 까먹어야지 ㅋㅅㅋ

 

혹시 잘못된 내용이 있거나 저 질문에 대한 다른 의견이 있으면 댓글로 꼭 알려주세요~!~!

 

반응형

'Java' 카테고리의 다른 글

[Java] 제네릭 (Generic) 완전 정복 T와 와일드 카드  (0) 2026.06.17
[Java] HashMap 은 뭐고 어떻게 동작 하는 걸까?  (0) 2026.04.03
Java - Collection Framework란?  (0) 2025.04.24
Java - for each문 직접 구현해보기  (0) 2025.04.24
Java - for each문  (0) 2025.04.24
'Java' 카테고리의 다른 글
  • [Java] HashMap 은 뭐고 어떻게 동작 하는 걸까?
  • Java - Collection Framework란?
  • Java - for each문 직접 구현해보기
  • Java - for each문
fkqlaus
fkqlaus
안녕하세요 Java, Spring boot 공부하는 주니어 개발자입니다
  • fkqlaus
    개발자가 끄적끄적 블로그
    fkqlaus
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Spring boot (3)
      • 프레임워크 (3)
      • Java (6)
      • DevOps (3)
      • DB (1)
      • CS (1)
      • GIS (1)
      • 알고리즘 문제풀이 (9)
      • 알고리즘 (0)
  • 인기 글

  • 태그

    개발자
    spring
    SWEA
    알고리즘
    list
    DevOps
    collection
    docker
    cs
    db
    서버
    데이터베이스
    iterator
    코딩테스트
    Java
    프로그래머스
    컴퓨터
    개발
    완전탐색
    D2
  • hELLO· Designed By정상우.v4.10.3
fkqlaus
Java - 면접 질문으로 다시 보는 Java의 List와 구현체(ArrayList 등)와 관계
상단으로

티스토리툴바