💡 동기 방식 (Synchornous)
: 동시에 일어난다는 뜻.
요청과 그 결과가 동시에 일어난다는 약속이다. 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야함.
- 요청과 결과가 한자리에서 동시에 일어난다.
- A노드와 B노드 사이의 작업 처리 단위(transcation)를 동시에 맞추겠다.
특징
- 설계가 매우 간단하고 직관적입니다.
- 응답(결과)를 볼 때까지 아무것도 못하고 대기해야한다.
- 실제 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효율이 저하된다고 할 수 있습니다.
💡 비동기 방식(Asynchronus)
: 동시에 일어나지 않는다는 뜻.
요청과 결과가 동시에 일어나지 않을거라는 약속이다.
- 요청한 그 자리에서 결과가 주어지지 않음
- 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
- 비동기식 처리를 요청할 때 할 일이 끝난 후 처리결과를 알려주는 콜백이라는 함수를 함께 알려준다.
특징
- 동기보다 복잡하다.
- 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.
💡 자료구조의 정의와 중요성
자료구조(Data Structure) 사전적 의미는 자료의 집합을 의미하며, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것이라고 합니다.
자료구조를 사용하는 중요성은 자료를 더 효율적으로 저장하고, 관리하기 위해 하용하며, 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있습니다.
💡 자료구조의 분류
선형구조
- 배열 (Array)
- 가장 기본적인 데이터 구조이며, 배열은 생성되는 순간 설정되는 셀에 인덱스가 부여되고 해당 셀의 개수는 고정된다. 정렬이 용이하다는 장점이 있지만, 생성될 때 셀의 개수가 고정되므로 데이터를 저장할 수 있는 메모리의 크기가 고정되어 있고 데이터를 추가, 삭제하는 과정이 비효율적이라는 단점이 있다.
- 연결 리스트 (Linked List)
- 데이터를 임의의 기억공간에 기억시키되, 데이터 항목의 순서에 따라 노드의 포인터를 이용하여 서로 연결시킨 자료구조이다. 새로운 데이터를 추가하고 삭제하는 것이 용이하고 효율적이다.
- 스택 (Stack)
- 순서가 유지되는 선형 데이터 구조이다. 리스트의 한쪽에서만 데이터의 삽입과 삭제가 일어나므로, 가장 마지막 요소부터 가장 처음 요소를 처리하는 LIFO(Last In First Out)메커니즘을 갖고 있다.
- 큐 (Queue)
- 스택과 비슷하지만 먼저 입력된 요소를 먼저 처리하는 FIFO(First In FIrst Out) 메커니즘을 가진다. 리스트의 한쪽에서는 삽입이 일어나고 다른 쪽에서는 삭제가 일어난다.
비선형구조
- 트리 (Tree)
- 노드(Node)로 구성된 계층적인 자료구조이다. 최상위 노드(루트, Root)를 만들고 그 아래에 자식을 추가하는 방식으로 트리구조는 다양하게 구현할 수 있다. 노드와 노드를 잇는 선을 간선(Edge)이라 한다. 같은 부모노드를 가지며 같은 레벨에 있는 노드를 형제 노드라 하고 자식이 없는 노드를 단말노드라고 한다.
- 그래프 (Graph)
- 정점(Vertex)과 간선(Edge)으로 이루어진 데이터 구조이며 사이클이 없는 그래프를 특별히 트리라고한다. 방향 그래프와 무방향 그래프가 있다. 새로운 요소들의 추가나 삭제가 용이하고 구조를 응용하기에 적합하다. 하지만 데이터 간에 충돌이 일어날 수 있다는 단점도 있다.
'📌ETC > Tech Interview' 카테고리의 다른 글
신입 개발자 기술면접 질문 정리 #1 ~ #6 (0) | 2022.09.26 |
---|---|
신입 개발자 기술면접 질문 정리 #6 (0) | 2022.09.20 |
신입 개발자 기술면접 질문 정리 #5 (1) | 2022.09.16 |
신입 개발자 기술면접 질문 정리 #4 (0) | 2022.09.16 |
신입 개발자 기술면접 질문 정리 #3 (2) | 2022.09.16 |