[면접공부하기]

suye 22·2023년 2월 24일

기술면접 준비하기

목록 보기
5/16

MSA(Microservice Architecture)란?

  • Microservice Architecture의 줄임말로써 소프트웨어 개발 기법이다.

MSA로 개발하게 될경우 장점

  • 하나의 서비스를 여러 조직이 만들게 될 경우 각각의 조직에 기획, 개발, 운영에 독립적인 권한을 부여할 수 있으므로, 다른 서비스에 대한 의존성이 사라지게 된다.
  • 만약 지속적으로 관리되는 서비스가 있다면, 버전이 올라감에 따라, 확장성의 중요도가 올라간다. 이럴 경우 MSA의 경우 새로운 기능을 독립적으로 개발해서 기존의 아키텍처에 연결시켜줌으로써 쉽게 관리할 수 있다.

Monolithic Architecture

  • 모놀리틱 아키텍처란 전통적인 소프트웨어 아키텍처 스타일로써 하나의 서버에 UI와 비즈니스 로직, 그리도 데이터베이스까지 배포 되는 것으로 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍쳐로 구성되는 것을 의미한다.

제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는지 설명해주세요.

  • 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다.
  • 객체의 타입을 컴파일 타임에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거러움 줄어든다.

장점

  • 타입의 안정성을 제공한다

  • 타입 체크와 형변환을 생략 가능하므로 코드가 간결해진다.

    • 저장된 객체를 꺼낼 때 형변환할 필요가 없다 -> 이미 어떤 타입의 객체들이 저장되어 있는지 알고 있기 때문이다.

    Collection?

  • 컬렉션이란 쉽게 말해서 자료구조이다.

  • 즉,데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것을 말한다.

  • 데이터 관리를 직접할 필요가 없다.

  • 배열을 직접 사용할 경우 공간을 정해놓고 필요에 따라서 늘리는 작업을 해야하는데 콜랙션이 이를 대신해 준다.

List, Set, Map, HashMap의 차이에 대해서 설명해주세요.

자바에서의 자료구조 유형은 다음과 같다.

  • 순서가 있는 목록인 List형
  • 순서가 중요하지 않은 목록인 Set형
  • 먼저 들어온 것이 먼저 나가는 Queue형
  • KEY-VALUE의 형태로 저장되는 Map형

List

  • 순서가 있고 중복을 허용한다.
  • 인덱스로 원소에 접근이 가능하다.
  • 크기가 가변적이다.

List의 종류와 특징

  • LinkedList
    • 양방향 포인터 구조로 데이터 삽입 ,삭제가 빠르다.
    • arrayList보다 검색이 느리다
  • ArrayList
    • 단반향 포인터 구조로 데이터 순차적 접근에 강점을 가진다.
    • 배열을 기반으로 데이터를 저장한다.
    • 데이터 삽입, 삭제가 느리다.
    • 데이터 검색이 빠르다.

Map

  • Key와 Value의 한쌍으로 이루어지는 데이터의 집합이다.
  • Key에 대한 중복이 없으며 순서를 보장하지 않는다.
  • 뛰어난 검색 속도를 가진다.
  • 인덱스가 따로 존재하지 않기 때문에 iterator를 사용한다.

Map의 종류와 특징

  • HashMap
    • Key에 대한 중복이 없으며 순서를 보장하지 않는다.
    • Key와 Value 값으로 NULL을 허용한다.
    • 동기화가 보장되지 않는다.
    • 검색에 가장 뛰어난 성능을 가진다.
  • HashTable
    • 동기화가 보장되어 병렬 프로그래밍이 가능하고 HashMap 보다 처리속도가 느리다.
    • Key와 Value 값으로 NULL을 허용하지 않는다.
  • LinkedHashMap
    • 입력된 순서를 보장한다.
  • TreeMap
    • 이진 탐색 트리(Red-Black Tree)를 기반으로 키와 값을 저장한다.
    • Key 값을 기준으로 오름차순 정렬되고 빠른 검색이 가능하다.
    • 저장 시 정렬을 하기 때문에 시간이 다소 오래 걸린다.

Set

  • 데이터의 집합이며 순서가 없고 중복된 데이터를 허용하지 않는다
  • 중복되지 않은 데이터를 구할 때 유용한다.
  • 빠른 검색 속도를 가진다.
  • 인덱스가 따로 존재하지 않기 때문에 iterator를 사용한다.
  • List는 기본적으로 데이터들이 순서대로 저장되며 중복을 허용한다.
  • Map은 순서가 보장되지 않고 Key값의 중복은 허용하지 않지만 Value값의 중복은 허용된다.
  • Set은 순서가 보장되지 않고 데이터들의 중복을 허용하지 않는다.

참조
https://ooeunz.tistory.com/52
https://cocoon1787.tistory.com/527

0개의 댓글