(자료구조) 면접 준비 - 1
신입 개발자 기술면접 질문 정리 - 자료구조
목차
- Array(List)의 가장 큰 특징과 그로 인해 발생하는 장점과 단점에 대해 설명하시오.
- Array를 적용시키면 좋을 데이터의 예를 구체적으로 들어주세요. 구체적 예시와 함께 Array를 적용하면 좋은 이유, 그리고 Array를 사용하지 않으면 어떻게 되는지 함께 설명해주세요.
- Stack과 Queue, Tree와 Heap의 구조에 대해 설명해주세요.
1. Array(List)의 가장 큰 특징과 그로 인해 발생하는 장점과 단점에 대해 설명하시오.
장점
- Array의 가장 큰 특징은 순차적으로 데이터를 저장하는 점
- 데이터에 순서가 있기 때문에 0부터 시작하는 index가 존재하며, index를 사용해 특정 요소를 찾고 조작이 가능하다는 것이 장점
단점
- 순차적으로 존재하는 데이터의 중간에 요소가 삽입되거나 삭제되는 경우 그 뒤의 모든 요소들을 한칸씩 뒤로 밀거나 당겨줘야 하는 단점
- 정보가 자주 삭제되거나 추가되는 데이터를 담기에 적절치 않다.
- Array Resizing
Array Resizing
- 사이즈를 다시 조정한다는 뜻
- 배열은 메모리가 순차적으로 채워지기 때문에 배열이 처음 생성될 때 어느 정도 메모리를 미리 할당
- 이를 전문 용어로 pre-allocation이라고 함
- 메모리를 pre-allocation 함으로써 새로 추가되는 요소들도 순차적으로 메모리에 저장
- 하지만 요소들이 처음 할당한 메모리 이상으로 많아진다면 resizing이 필요
- 즉, 메모리를 더 할당해야함
- 그리고 추가적으로 할당된 메모리 또한 순차적이어야 한다.
- 그럼으로 배열의 resizing은 상대적으로 오래걸리는 operation이다.
- 그렇기 때문에 사이즈 예측이 잘 안되는 데이터를 다루기에는 적절치 않다.
특징
- 삽입 순서대로 저장된다. ( 즉, 새로 삽입되는 요소는 array의 새로운 꼬리가 된다.)
- 이미 생성된 리스트도 수정이 가능
- 동일한 값도 여러번 삽입 가능
2. Array를 적용시키면 좋을 데이터의 예를 구체적으로 들어주세요. 구체적 예시와 함께 Array를 적용하면 좋은 이유, 그리고 Array를 사용하지 않으면 어떻게 되는지 함께 설명해주세요.
학생들의 시험 점수를 Array로 저장하면 각 학생의 점수를 쉽게 접근하고 비교할수 있습니다. 예를 들어, 학생들의 점수를
정렬하거나 평균 점수를 계산하는 등의 연산을 빠르게 수행할 수 있습니다.
또한, Array를 사용하면 학생들의 점수를 하나의 변수로 효율적으로 관리할 수 있으며, 메모리 공간을 절약할 수 있습니다.
- Array를 사용하지 않으면
학생의 점수를 개별 변수로 저장한다고 가정하면, 학생마다의 변수의 이름을 일일이 지정해야하고,
학생 수가 많아질수록 코드의 복잡성이 증가합니다.
또한, 학생의 점수를 비교하거나 연산을 수행하기 위해서는
각 변수에 접근해야 하므로 접근시간이 늘어나고 작업의 효율성이 떨어진다.
3. Stack과 Queue, Tree와 Heap의 구조에 대해 설명해주세요.
- Stack과 Queue는 선형 자료구조의 일종이며, Array와 LinkedList로 구현할 수 있다.
Stack
- 후입선출 (LIFO)방식
- 나중에 들어간 원소가 먼저 나오는 구조
Queue
- 선입선출 (FIFO) 방식
- 먼저 들어간 원소가 먼저나오는 구조
Tree
- 비선형 자료구조, 계층적 관계를 표현하기에 적합
Heap
- 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 위해 고안된 구조
- 각 노드의 키 값이 자식의 키값보다 작지않거나 (최대힙)
- 그 자식의 값이 키값보다 크지 않은 (최소힙)
- 완전 이진트리
댓글남기기