Q1. parameter와 argument의 차이에 대해 설명해주세요.
parameter는 함수 등에 사용되는 매개변수고, argument는 어떤 연산을 위해 전달 받는 인자 값입니다.
예를 들어, 배열의 특정 인덱스의 값을 찾아주는 findValue 함수가 있습니다. 이때, 함수를 선언하면서 parameter로 array와 index를 선언합니다. 이후, findValue 함수를 호출하며 argument로 [1, 2, 3]을 순서대로 갖는 배열과 찾고자 하는 인덱스 2를 입력하여 3이라는 값을 리턴 받을 수 있습니다.
function findValue(array, index) { // array와 index가 parameter
return array[index]
}
findValue([1,2,3], 2) // [1,2,3]과 2가 argument
Q2. process와 thread의 차이에 대해 설명해주세요.
프로세스는 프로그램(코드 묶음)이 실행되고 있는 상태를 말하고, 개별 프로세스는 개별 리소스를 할당 받습니다. 스레드는 프로세스 내 작업 흐름을 말하며, 이때, 멀티 스레드의 경우, 해당 프로세스가 할당받은 자원을 공유합니다. 스레드는 프로세스의 코드, 데이터, 힙 영역을 공유하고, 개별 stack 영역을 갖습니다.
싱글 스레드에서도 여러 작업을 할 수 있는데, context switching을 통해 병렬적으로 처리하며, 자원을 공유하지 않아 충돌의 위험이 없다는 장점이 있습니다. 반면, 멀티 스레드는 프로세스의 자원을 공유하여 여러 작업을 동시에 처리하며, 싱글 스레드에 비해 향상된 응답성과 context switching 비용이 적습니다. 하지만, 멀티 스레드는 프로세스의 자원을 공유하므로 자원의 충돌을 주의하여야 합니다.
멀티 프로세스의 경우, 하나의 작업을 여러개의 프로세스가 처리하는 경우를 말합니다. 프로세스는 개별 자원을 할당받지만, 이를 공유하려면 IPC, 소켓 등으로 연결을 해야 하며 관련 비용이 큽니다. 이런 경우를 제외하면, 자식 프로세스 중 하나가 문제가 생겨도 다른 프로세스에 영향이 없다는 것을 장점으로 들 수 있습니다. 예를 들어, 크롬 브라우저의 경우, 탭마다 개별 프로세스로 구성되고, 브라우저, GPU, 유틸리티, 렌더러 프로세스가 각각 나뉘어 구성되어 있습니다.
'항해99_10기 > 105일의 TIL & WIL' 카테고리의 다른 글
[기술면접 스터디] [230228] WS & WAS, 자료구조 (stack, queue, array, linked list) (0) | 2023.03.02 |
---|---|
[기술면접 스터디] [230227] 트랜잭션, TCP & UDP (0) | 2023.02.27 |
[기술면접 스터디] [230223] MAS / generics / List, Set, Map, HashTable (0) | 2023.02.23 |
[기술면접 스터디] [230222] DI와 DB 인덱스 (0) | 2023.02.22 |
[기술면접 스터디][230221] OOP와 REST API (0) | 2023.02.21 |