부시기 시리즈/취업 부시기 시리즈

CS 면접 부시기 - JAVA plus

Benn.dev 2021. 7. 10. 23:06

java의 대표 collection에는 어떤 것들이 있나요?

더보기

자바의 대표 컬렉션에는 list, map, set, stack, queue와 같은 것들이 있습니다.
이 추상화된 컬렉션 인터페이스 아래, 특정한 기법으로 구현된 자료구조가 들어갑니다.
예를들어, List 라는 인터페이스에는 구현방법에 따라 ArrayList가 들어갈 수도, LinkedList가 들어갈 수도 있습니다.

 

List에 대해 설명해주세요

더보기

리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있습니다.
List에는 대표적으로 ArrayList와 LinkedList가 있습니다.

 

ArrayList는 배열로 구현된 List입니다.
배열과 같은 자료구조이기 때문에, 리스트의 연산 수행시간 속도는 배열과 같습니다.

LinkedList는 다음 노드의 주소를 기억하고 있는 List입니다.
배열에 비해 삽입과 삭제가 간단하다는 장점이 있습니다.
하지만 탐색의 경우에는 첫 번째 노드부터 탐색해 나가야 하기 때문에 느리다는 단점이 있습니다.

 

Map에 대해 설명해주세요

더보기

Map에는 HashMap, TreeMap, LinkedHashMap이 있습니다.
그중 HashMap은 가장 일반적으로 사용하는 Map입니다.

HashTable을 사용하며 Key 값에 해시 함수를 적용하여 나온 index에 Value를 저장하는 식입니다.
중복을 허용하지 않으며, 순서가 없다는 것이 특징이라고 할 수 있습니다.

TreeMap은 Red-Black Tree 자료구조를 이용한 Map이고, Tree 구조이기 때문에 어느정도 순서를 보장합니다.

LinkedHashMap은 LinkedList로 구현된 HashMap입니다.
List로 구현되어있기 땜누에 순서사 보장됩니다.
하지만 LinkedList 특성상 랜덤접근에서는 느릴 수 있습니다.

 

Set에 대해 설명해주세요

더보기

Set에는 HashSet, TreeSet, LinkedHashSet이 있습니다.

HashSet은 HashMap에서 Key값이 없는 자료형이고, 집합이라고 생각해도 무방합니다.
값이 포함되어 있는지 아닌지에만 관심이 있고
순서를 보장하지 않으며, 중복값을 허용하지 않습니다.
Set 중에는 가장 많이 사용됩니다.

TreeSet은 Red-Black Tree 자료구조를 사용한 Set 입니다.

LinkedHashSet은 LinkedList로 구현된 HashSet으로, 순서를 보장합니다.

 

Array와 ArrayList의 다른점이 뭔가요?

더보기

Array는 길이에 대해서 length 변수를 쓰고, ArrayList는 size() 메서드를 사용합니다.
Array는 크기가 고정되어 있지만, ArrayList는 사이즈가 동적인 배열입니다.
Array는 int, byte, char 등과 같은 Primitive type 과 Object 모두 담을 수 있지만,
ArrayList는 Object만 담을 수 있습니다.

 

class와 Obejct의 차이점을 설명해주세요

더보기

클래스 오브젝트 인스턴스

 

일단 오브젝트 = 객체이다

 

클래스란

객체를 만들어 내기 위한 설계도 혹은 틀
연관되어 있는 변수와 메서드의 집합

 

Object란

소프트웨어 세계에 구현할 대상

클래스에 선언된 모양 그대로 생성된 실체

 

클래스는 Object를 만드는 틀이고, Object는 그 클래스 틀로 만든 실체이다.

 

인스턴스

소프트웨어 세계에 구현된 구체적인 실체

실체화된 인스턴스는 메모리에 할당됨

 

oop관점에서 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 부름

 

인스턴스는 추상적인 개념으로부터 '생성된 복제본'을 의미

 

 

(내가 알아보기 위한 간단 정리)

클래스는 틀

오브젝트는 클래스로 찍어 낸것

인스턴스는 메모리에 올린것