뮤텍스는 자원에 2개 이상의 자원이 요청될 수 없도록 하는 것이며, 세마포어는 자원에 여러개의 스레드가 접근 가능하되 그 갯수를 일정 개수 이하로 제한하는 것입니다.
가상 메모리의 개념과 페이지 교체 알고리즘에 대해 설명하시오.
실제로 프로그램 메모리 용량을 추가해주는것이 아닌, 현재 일하고 있지 않은 휴식중인 프로세스를 잠시 보관하기 위한 공간을 생성하고, 옮긴 후에 생성된 메모리 공간에 프로세스를 실행해주는것
페이지 교체 알고리즘 - 외부 메모리 막수를 박기 위하여 사용하는 것
교착 상태(Deadlock)의 조건과 해결 방법은 무엇인가?
여러 스레드가 동일한 자원에 대하여 접근하게 됐을 때 발생하게 됩니다. db에 락을 걸거나 대기열을 구현하여 해결할 수 있습니다.
스케줄링 알고리즘의 종류와 각각의 장단점은 무엇인가?
네트워크
OSI 7계층 모델에 대해 설명하시오.
물리계층 - 데이터 링크 계층 - 네트워크 계층 - 전송 계층 - 세션 계층 - 표현 계층 - 응용 계층으로 표기됩니다.
물리 계층에서 공유기와 같은 곳에서 물리적으로 전송되며, 데이터 링크 계층에선 물리적 주소(MAC)을 부여받고, 네트워크 계층에선 IP 전송계층에선 TCP/UDP 방식으로 통신하며, 세션에서는 그렇게 받은 값을 저장하고, 표현계층에서는 값을 해독, 응용계층은 그 값을 표기하는 방식입니다.
TCP와 UDP의 차이점과 사용 사례는 무엇인가?
통신 프로토콜로 TCP의 경우 신뢰받는 데이터 전송 프로토콜이다. 어플리케이션간 통신에 주로 사용된다.
UDP의 경우 신뢰하지 않는 데이터 전송 프로토콜로, 상대방의 수신 여부 등을 파악하지 않습니다. 대신 헤더의 암호화 부분에서 TCP가 20바이트를 사용하는데 비해 8바이트만 사용하는 등 전송속도가 빠릅니다.
HTTP와 HTTPS의 차이점은 무엇인가?
신뢰받는 프로토콜의 차이 (둘다 같은 방식이지만 HTTPS는 사이에 SSH 인증서가 껴있다.) 그렇기 떄문에 통신이 암호화되어있고, 신뢰성이 높지만 속도가 느리다. HTTP는 신뢰할수 없지만 빠른 속도를 자랑한다.
DNS의 역할과 작동 원리에 대해 설명하시오.
DNS는 Domain network 서비스이며, 사용자에게 도메인을 입력받으면 서비스의 ip주소를 반환하는 등의 방식으로 사용됩니다.
IP 주소와 서브넷 마스크의 개념을 설명하시오.
라우팅과 스위칭의 차이점은 무엇인가?
심화 주제
소프트웨어 공학
Agile과 Waterfall 개발 방법론의 차이점과 장단점은 무엇인가?
디자인 패턴의 종류와 각각의 사용 사례는 무엇인가?
소프트웨어 개발 생명 주기(SDLC)에 대해 설명하시오.
코드 리뷰의 중요성과 베스트 프랙티스는 무엇인가?
시스템 설계
대규모 분산 시스템 설계 시 고려해야 할 요소는 무엇인가?
데이터베이스 요청 분산, 메인 트래픽 분산, 동일 ip의 최대 요청수 제한
마이크로서비스 아키텍처의 장단점은 무엇인가?
장점: 안정성, 수용량
단점: 느린 속도, 복잡해지는 코드 구조
데이터베이스 샤딩과 리플리케이션의 차이점은 무엇인가?
db 샤딩의 경우 쓰기 db를 여러개로 나누어 쓰기에 대한 분산, 쓰기 한계량이 증가하지만 구현 난이도가 매우 어렵고, 유지보수가 어렵다.
리플리케이션의 경우 db를 복제하는 것이기 때문에 읽기에 대한 db connection pool의 수용량은 증가하지만, 쓰기의 경우 한계가 그대로다. 다만 구현 난이도가 쉽다.