1. 운영체제
프로세스와 스레드의 차이는?
- 프로세스는 실행 중인 프로그램, 스레드는 프로세스의 실행 단위
- 프로세스는 운영체제로부터 자원을 할당 받아 실행하고, 스레드는 프로세스로부터 자원을 할당 받아 실행함
- 하나의 프로세스 안에서 여러 스레드 생성이 가능하며, 각 스레드는 개별 스택을 가지고 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행함
- 보통 프로세스는 코드/데이터/스택/힙 메모리 영역을 기반으로 실행하며, 스레드는 프로세스 안에서 개별적인 스택을 가지고 코드/데이터/힙 영역을 공유하며 실행함
프로세스 제어 블록(PCB; Process Control Block)이란?
- PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조임
- 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성함
- 프로세스 전환이 발생하면 처리하던 작업의 진행 상황을 모두 PCB에 저장하고 CPU를 반환함
- 그리고 다시 CPU를 할당 받게 되면 PCB에 저장된 내용을 불러와 다시 작업을 수행함
멀티 스레드란 무엇이고, 장단점은 무엇인가?
- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티 스레딩이라 하고, 각각의 스레드는 독립적인 작업을 수행하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있음
- 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들고 자연스럽게 프로그램의 응답 시간이 단축됨
- 멀티 스레드는 동일한 자원을 공유하기 때문에 동기화 작업이 필요하고, 동기화 작업시 과도한 락(Lock)으로 병목현상이 발생하면 성능이 저하될 수 있음
멀티 스레드와 멀티 프로세스의 차이점은?
- 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 안고 있음
- 반면 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있음
- 대상 시스템의 특징에 따라 적합한 동작 방식을 선택하고 적용해야 함
동기식과 비동기식의 차이점 및 장단점은?
- 차이점: 동기식은 요청에 대한 응답을 기다린 후 응답이 오면 다음 요청을 하는 방식이고, 비동기식은 요청에 대한 응답을 기다리지 않고 다음 동작을 진행하는 방식임
- 장단점: 동기식은 구성이 단순하고 순서대로 실행이 가능함. 하지만 여러 일을 동시에 수행하는 멀티태스킹은 불가능함.
비동기식은 동시에 여러 일을 수행할 수 있지만, 일정 시간당 요청량이 많아질 경우 부하가 발생할 수 있으며 이를 위한 추가적인 처리가 필요할 수 있음
Lock이란 무엇인가?
Deadlock의 개념 및 Deadlock 해결 방법에 대해 설명해주세요.
뮤텍스와 세마포어의 차이점에 대해 설명해주세요.
가상 메모리에 대해 설명해주세요.
컨텍스트 스위칭에 대해 설명해주세요.
- CPU가 어떤 프로세스(P0)를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선순위를 가진 프로세스(P1)가 실행되어야 할 때, 기존의 프로세스(P0) 정보들은 PCB(P0)에 저장하고 다음 프로세서(P1)의 정보를 PCB(P1)에서 가져와 컨텍스트를 교체하는 작업
(* 컨텍스트: CPU가 특정 프로세스를 실행하기 위한 프로세스의 정보, **컨텍스트 스위칭의 주체: OS 스케줄러) - 컨텍스트 스위칭을 통해 멀티 프로세싱, 멀티 스레딩 운영이 가능하다.
- 스레드는 프로세스의 코드/데이터/힙 영역을 공유하기 때문에, 스레드의 컨텍스트 스위칭이 프로세스의 컨텍스트 스위칭보다 빠르다.
- 컨텍스트 스위칭시 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오버헤드가 발생해 성능이 떨어진다.
2. 네트워크
TCP와 UDP의 차이점과 장단점은?
- UDP는 비연결형 프로토콜로 흐름제어, 오류제어를 하지 않는데 반해, TCP는 연결형 프로토콜로 흐름제어와 오류제어를 함
- UDP는 TCP처럼 종단간 연결설정, 흐름제어, 오류제어를 하지 않기 때문에 송수신에 적은 데이터를 필요로 하고, TCP는 데이터 송수신에 신뢰성을 가짐
IP의 역할은 무엇인가?
OSI 7계층에 대해 설명해주세요.
- Layer 7. 응용 계층(Application)
- Layer 6. 표현 계층(Presentation)
- Layer 5. 세션 계층(Session)
- Layer 4. 전송 계층(Transport)
- Layer 3. 네트워크 계층(Network)
- Layer 2. 데이터 링크 계층(Data Link)
- Layer 1. 물리 계층(Physical)
TCP/IP 4계층에 대해 설명해주세요.
- Layer 4. 응용 계층(Application)
- Layer 3. 전송 계층(Transport)
- Layer 2. 인터넷 계층(Internet)
- Layer 1. 네트워크 엑세스 계층(Network Access)
HTTP와 HTTPS의 차이점에 대해 설명해주세요.
- HTTP는 평문 통신이기 때문에 도청이 가능하고, 위장과 변조가 가능하다.
- 통신 자체를 SSL(Secure Socket Layer)라는 보안 프로토콜을 조합함으로써 HTTP 통신 내용을 암호화할 수 있다. HTTP와 SSL을 조합해서 부르는 것이 HTTPS다.
- SSL은 상대를 확인하는 수단으로 증명서를 제공한다. 증명서는 신뢰할 수 있는 제3자 기관에 의해 발행되기 때문에 서버나 클라이언트가 실재하는 사실을 증명한다. 따라서 HTTPS는 HTTP에서 통신상대를 확인하지 않아서 의미 없는 리퀘스트도 수신하는 일을 방지할 수 있다. (DoS 공격을 방지할 수 있다.)
- HTTPS는 새로운 프로토콜이 아니라 HTTP 통신하는 소켓 부분을 SSL 또는 TLS라는 프로토콜로 대체하는 것 뿐이다. HTTP는 원래 TCP와 직접 통신했지만, HTTPS는 HTTP가 SSL과 통신하고, SSL이 TCP와 통신한다.
- HTTPS를 사용하면 HTTP에 비해 CPU나 메모리 등 많은 리소스를 소비한다.
쿠키와 세션의 차이점에 대해 설명해주세요.
- 쿠키와 세션은 HTTP의 connectionless, stateless한 특성을 보완하기 위해 사용한다.
- 쿠키는 클라이언트 로컬에 저장되는 키와 값 등이 들어있는 데이터다. 클라이언트의 요청에 따라 서버에서 쿠키를 생성해서 HTTP 헤더를 통해 전달한다. 쿠키는 클라이언트 로컬에 저장되기 때문에 보안에 취약하지만 처리속도가 빠르고, 서버 자원을 소모하지 않는다. 쿠키는 유효기간이 남아있다면 브라우저가 종료되어도 클라이언트에 계속 보관되어 있다. (예: 장바구니)
- 세션은 쿠키와 달리 서버에서 관리한다. 서버는 클라이언트를 구분하기 위해서 각 클라이언트에게 고유의 세션ID를 발급한다. 세션은 서버에서 관리하기 때문에 쿠키보다 보안에 우수하지만 서버의 자원을 소모하기 때문에 사용자가 많아지면 성능 저하의 원인이 된다. 세션은 유효기간이 남아있더라도 브라우저가 종료되면 사라진다. (예: 로그인)
- (참고) 캐시는 image나 css, js파일 등을 브라우저나 서버 앞단에 저장해놓고 사용하는 것이다.
TCP의 3-way-handshake와 4-way-handshake 방식의 차이점에 대해 설명해주세요.
- 3-way-handshake는 클라이언트와 서버를 연결하기 위한 과정으로, 먼저 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. 요청을 받은 서버는 클라이언트에게 요청을 수락한다는 ACK(a+1)과 SYN(b)가 설정된 패킷을 보낸다. 클라이언트는 응답으로 ACK(b+1)를 서버로 보내고 연결이 성립된다.
- 4-way-handshake는 클라이언트와 서버를 해제하기 위한 과정으로, 먼저 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 요청을 받은 서버는 확인 메세지로 ACK을 보낸다. 그리고 잠시동안 데이터를 모두 보낼 때까지 TIME_OUT이 된다. 데이터를 모두 보내고 통신이 끝나면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다. 클라이언트는 확인 메세지로 ACK을 보내고, 서버는 소켓을 닫는다. 클라이언트는 서버로부터 아직 받지 못한 데이터가 있을 경우를 대비해 잠시동안 세션을 남겨놓고 잉여 패킷을 기다리는 TIME_WAIT 과정을 거친다.
웹브라우저에서 보안을 위해 https://www.google.com 를 입력했다. 페이지가 열릴 때까지 PC에서 일어나는 네트워크 과정을 서술하세요.
3. 데이터베이스
데이터베이스에서 인덱스를 사용하는 이유와 장단점은?
- 인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용함
- 단, 데이터 삽입/변경이 수시로 일어나면 매번 인덱스를 변경해야 하므로 성능 저하를 막기 위한 고려가 필요함
- RDBMS에서 인덱스는 데이터의 저장 성능을 희생하는 대신에 데이터의 읽기 속도를 높임
Redis와 mongoDB에 대해 간략히 설명하세요.
- 둘 다 NoSQL 방식
- mongoDB가 document 형식으로 데이터를 저장하는데 반해, Redis는 Key-Value 형식으로 데이터를 저장함
- Redis는 인메모리DB로 데이터를 메모리에 저장하고 관리하기 때문에 성능이 좋지만, 데이터를 유한하게 저장하기 때문에 캐시 등과 같이 데이터의 저장기한이 있고, 빠른 성능이 필요한 기능에 사용됨
- mongoDB는 MySQL처럼 서버-클라이언트 방식으로 설치해서 사용하고, MySQL 같은 SQL 방식이 아니므로 가변적 데이터 구조를 다루는데 유용함
Transaction의 개념에 대해 설명해주세요.
- 하나의 논리적 기능을 수행하기 위한 작업 단위
- 원자성(Atomicity): 모두 완료되도록 Commit 또는 전혀 반영되지 않도록 Rollback 되어야 함 (All or Nothing)
- 일관성(Consistency): 시스템 고정요소는 트랜잭션 수행 전과 후에 같아야 함 (데이터의 일관성)
- 독립성(Isolation): 각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야 함
- 영속성(Durability): 트랜잭션의 완료 결과가 DB에 영구히 기억되는 성질
- (참고) Lock은 동시성을 제어하기 위한 기능이고, Transaction은 데이터의 정합성을 보장하기 위한 기능임
Transaction시 교착상태(Deadlock)란 무엇이고, 빈도를 낮추는 방법은 무엇인가?
- 두 개 이상의 트랜잭션이 특정 자원의 Lock을 획득한 채 다른 트랜잭션이 소유하고 있는 Lock을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태가 되는데, 이를 교착상태라고 함
- 빈도를 낮추는 방법
- 트랜잭션을 자주 커밋한다.
- 정해진 순서로 테이블에 접근한다.
관계형 데이터베이스 시스템과 NoSQL의 차이점에 대해 설명해주세요.
정규화란 무엇인가?
- RDMBS에서 중복을 최소화하기 위해 데이터를 구조화하는 작업
- 종속성 제거를 위해 여러 개의 테이블로 분해하는 과정
프로시저와 트리거란 무엇인가?
4. 자료구조/알고리즘
배열과 링크드 리스트의 장단점에 대해 설명해주세요.
BST의 최악의 시간 복잡도와 최악의 시간이 걸리는 케이스에 대해 설명해주세요.
해쉬 테이블에 대해 설명해주세요.
Fibonacci 공식을 recursive와 dynamic programming으로 구현시 차이점에 대해 설명해주세요.
DFS와 BFS에 대해 설명해주세요.
행렬 곱의 시간복잡도는 얼마인가?
'정보처리기사, 기술면접' 카테고리의 다른 글
[기술면접] 백엔드 관련 (Java, Spring, JPA 등) (0) | 2021.04.08 |
---|---|
[기술면접] 웹개발자 기초 지식 (0) | 2021.04.08 |
2020 정보처리기사 필기 내용 정리 (0) | 2021.03.23 |