자료구조 스택에 대해서 설명해 주세요.

2024. 12. 27. 09:41·백엔드 면접

스택(Stack)은 후입선출(LIFO) 개념을 가진 선형 자료구조입니다. 스택에서 삽입(push)과 삭제(pop)는 최상단(top)에서만 이루어집니다. 비어있는 스택에서 pop을 시도하는 경우를 스택 언더플로우라고 하며, 스택이 넘치는 상황을 스택 오버플로우라고 합니다. 스택의 대표적인 활용 사례로는 스택 메모리, 뒤로 가기 기능, 수식 괄호 검사 등이 있습니다.


자바에서 스택은 어떻게 사용할 수 있나요?

자바에는 Stack이라는 클래스가 있습니다. 하지만 Deque 인터페이스 구현체를 사용하는 것이 권장됩니다. 왜냐하면, Stack 클래스는 내부적으로 Vector를 상속받고 있기 때문입니다. Vector의 메서드들은 synchronized로 구현되어 있어 멀티 스레드 환경에서는 동기화의 이점이 있을 수 있겠으나, 단일 스레드 환경에서는 불필요한 동기화 작업으로 인해 성능 측면에서 좋지 않습니다. Vector는 하위 호환을 위해 존재한다고 알고 있습니다.

반면 Deque 인터페이스는 스택의 후입선출 특성을 완전히 유지하면서도 동기화 작업을 가지는 구현체와 그렇지 않은 구현체를 선택할 수 있습니다. 대표적인 구현체로 ArrayDeque와 LinkedList가 있습니다. 이 중 ArrayDeque가 더 나은 성능을 보여주는 경우가 많습니다.

'백엔드 면접' 카테고리의 다른 글

HTTPS에 대해서 설명해 주세요.  (0) 2024.12.31
WAS와 웹 서버의 차이점은 무엇인가요?  (0) 2024.12.30
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요?  (2) 2024.12.26
Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가요?  (0) 2024.12.25
private 메서드에 @Transactional을 선언하면 트랜잭션이 동작할까요?  (0) 2024.12.24
'백엔드 면접' 카테고리의 다른 글
  • HTTPS에 대해서 설명해 주세요.
  • WAS와 웹 서버의 차이점은 무엇인가요?
  • 서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요?
  • Connection Timeout, Socket Timeout, Read Timeout의 차이점은 무엇인가요?
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링
    데브코스
    JPA
    raid
    티스토리챌린지
    백엔드 면접
    토스 페이먼츠
    자바
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
자료구조 스택에 대해서 설명해 주세요.
상단으로

티스토리툴바