본문 바로가기
면접 대비

스프링 면접질문 대비(1.1)

by Hyeongjun_Ham 2022. 9. 14.

List 와 Set의 차이는 무엇인가요?

List는 순서가 있는 자료 구조로써 인덱스로 값을 불러올 수 있고, 중복이 허용된다.

Set은 순서가 없는 자료 구조로써 중복을 허용하지 않는다.

 

Map의 하위 구현체는 무엇인가요?

HashMap : 데이터의 저장을 위해 해시 테이블을 사용한다. 키의 해싱을 통해 값을 저장한다.

LinkedHashMap : HashMap 클래스의 확장으로 LinkedList를 이용해 구현된 HashMap이다. 삽입 순서를 알 수 있다.

TreeMap : Map의 저장을 위해 트리를 사용한다.

 

Set의 하위 구현체는 무엇인가요?

HashSet : 데이터의 저장을 위해 해시 테이블을 사용한다. 해싱을 통해 요소를 저장한다.

LinkedHashSet : HashSet 클래스의 확장으로 LinkedList를 이용해 구현된 HashSet이다. 삽입순서를 알 수 있고, Null 요소도 삽입이 가능하다.

TreeSet : Set의 저장을 위해 트리를 사용한다.

 

ArrayList, LinkedList 서로의 장단점은 무엇인가요?

ArrayList

장점 : Index를 다루기 때문에 원하는 해당 Index의 값을 바로 반환할 수 있다.

단점 :

  • 추가 : 임의의 위치에 ArrayList의 요소가 추가되면 더 큰 크기의 배열이 heap 메모리에 생성되고 현재의 값을 새로운 메모리에 옮긴 다음에 새로운 요소를 추가하고 이전 메모리를 삭제한다.
  • 삭제 : 임의의 위치의 ArrayList의 요소가 삭제되면 해당 공간을 채우기 위해 모든 값들이 한칸씩 앞으로 이동해야 하는 작업이 필요하다.

LinkedList

장점 :

  • 추가 : 임의의 위치에 LinkedList의 요소가 추가되면 단지 heap 메모리에 공간을 만들고 연결관계만 수정하면 된다.
  • 삭제 : 임의의 위치의 LinkedList의 요소가 제거되면 해당 위치의 이전 노드를 다음 노드에 연결하면 된다. (해당 위치를 알기 위해 Head 위치부터 검색해야 하는 비용이 있지만 삭제 자체는 굉장히 빠르다.)

단점 :  항상 Head 위치부터 끝까지 하나씩 확인하면서 가기 때문에 오랜 시간이 걸린다.

 

StringBuilder 와 StringBuffer의 차이는 무엇인가요?

 

StringBuilder 를 사용 해야 할 때 :

StringBuilder는 동기화를 지원하지 않는 반면, 속도면에선 StringBuffer 보다 성능이 좋다.

그렇기 때문에 우리는 단일 스레드 환경 과 문자열의 추가, 수정, 삭제 등이 빈번히 발생하는 경우 StringBuilder를 사용하는 것이 성능면에서 유리하다.

 

StringBuffer 를 사용해야 할 때 :

StringBuffer는 동기화를 지원하여 멀티 스레드 환경에서도 안전하게 동작할 수 있다.

그렇기 때문에 우리는 멀티 스레드 환경 과 문자열의 추가, 수정, 삭제 등이 빈번히 발생하는 경우 StringBuffer를 사용하는 것이 성능면에서 유리하다.

 

연산자와 equals의 차이는 무엇인가요?

==비교는 비교하려는 두 객체 각각의 메모리 내 주소 번지를 비교하는 것

eqauls 비교는 객체가 갖는 값을 비교한다.

'면접 대비' 카테고리의 다른 글

스프링 면접질문 대비(1.3)  (1) 2022.09.19
스프링 면접질문 대비(1.2)  (0) 2022.09.15
기본 CS 질문  (0) 2022.08.25
스프링 면접질문 대비  (0) 2022.08.16
스프링이란?  (0) 2022.08.11