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 |