본문 바로가기
IT/Interview

20.10.02 면접 스터디

by YEON-DU 2020. 10. 4.
반응형

1. REST API란?

RESTful 하다는 것의 의미

REST의 구성요소

REST API의 장점

기존 방식과 REST 방식의 차이점

SOAP와 REST 방식의 차이

 

REST는 웹에 존재하는 모든 자원에 고유한 주소 URI를 정의하고 자원에 Create Read Update Delete를 실행하는 방식을 정해놓은 아키텍처 스타일이다. 이러한 방식로 API를 만든 것을 REST API라고 한다.

 

REST 아키텍처의 6가지 제한 조건

클라이언트/서버 구조, 무상태(클라이언트의 내용이 서버에 저장되면 안 된다), 캐시 처리 가능, 계층화, 인터페이스 일관성, Code on demand이 있다.

 

또한 REST의 원리를 따르는 시스템은 RESTful 하다고 한다.

 

REST의 구성 요소는 자원, 행위, 표현이다. 자원은 URI로, 행위는 HTTP 메소드로 표현되는 것이다.

REST API의 장점은 REST의 원리를 따르기 때문에 후에 다른 개발팀이 API를 인계받게 되더라도 통일성과 확장성이 있기 때문에 구조를 이해하고 파악하기 쉽다는 점이 장점이다.

 

기존 방식과 REST 방식의 차이점은 GET과 POST 방식만을 사용하여 CRUD를 처리했다면 REST는 GET POST PUT DELETE를 사용하여 CRUD를 처리한다.

 

SOAP는 프로토콜이며 성공/반복 실행 로직이 규정되어 있기 때문에 통신 시 처음부터 끝까지 신뢰성을 제공한다. 

 

2. 객체지향

객체지향 언어의 특징 5가지

오버로딩, 오버라이딩이란?

객체지향의 장점, 단점

 

객체란 하나의 역할을 수행하는 메소드와 변수의 묶음을 의미한다.

객체지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나로 프로그래밍 로직을 객체로 만들어 나가는 것을 의미한다.

 

객체 지향의 특징은 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 있다.

캡슐화와 정보은닉은 간단히 말해 자판기를 예로 들 수 있다. 우리가 음료수를 자판기에서 뽑는다고 해서 자판기 내부를 볼 수 없는 것이다. 또한 자판기라고 하는 하나의 캡슐로 묶는 것을 의미한다.

 

추상화의 경우엔 불필요한 정보는 숨기고 중요한 정보만을 표현하여 공통의 속성이나 기능을 묶어서 이름을 붙이는 것이다.

상속성은 이미 정의된 상위 클래스의 변수와 함수를 하위 클래스가 물려받는 것이다.

다형성은 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있는 것이다.

즉 오버라이딩과 오버로딩이 가능하다는 이야기이다.

 

객체지향으로 코드를 작성하면 이미 작성된코드에 대한 재사용성이 높고, 유지보수가 쉽다.

단점으로는 처리 속도가 상대적으로 느리다. 객체가 많으면 용량이 커질 수 있으며, 설계 시 많은 시간과 노력이 필요하다.

 

3. 세마포어와 뮤텍스

세마포어는 무엇인가요?

뮤텍스는 무엇인가요?

세마포어와 뮤텍스의 차이점을 말해주세요.

 

공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이 때 공유된 자원의 데이터에는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야한다. 이를 위해 세마포어를 사용한다.

 

세마포어는 리소스 상태를 나타내는 간단한 카운터를 의미한다. 세마포어는 이진수를 사용하거나 추가적인 값을 가질 수 있다.

 

멀티스레드 상황에서 스레드들의 실행시간이 서로 겹치지 않고 실행되게 하는 기술은 뮤텍스를 의미한다. lock과 unlock이 있어 이진 세마포어라고도 한다.

 

세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없다.

가장 큰 차이점은 동기화 대상의 개수이다. 뮤텍스는 동기화 대상이 오직 하나일 때, 세마포어는 동기화 대상이 하나 이상일 때 사용한다.

 

4. CPU 스케줄링

선점 스케줄링과 비선점 스케줄링의 차이

선점 스케줄링과, 비선점 스케줄링의 예시 몇 가지

Round Robin의 타임 슬라이스를 무한정 크게하면 어떻게 되는가? 작게 하면 어떻게 되는가?

기아 상태란 무엇인가? 해결방안은?

 

CPU 스케줄링이란 멀티 프로세스 상황에서 프로세스들이 어떻게 실행될 지의 순서를 스케줄링하는 방법이다.

CPU 스케줄링은 선점 스케줄링과, 비선점 스케줄링으로 나뉜다. 선점 스케줄링의 선점은 프로세스가 점유한 자원을 다른 프로세스가 뺏어와서 사용할 수 있는 것이고, 비선점은 다른 프로세스가 사용중인 자원을 뺏어서 사용할 수 없는 것이다.

 

선점 스케줄링의 예시에는 라운드 로빈과 다단계 큐가 있다. 비선점은 FIFO와 SJF 방법이 있다.

라운드 로빈의 타임 슬라이스를 무한정 크게하면 비선점의 FIFO와 같아 진다.

작게 할 경우 프로세스의 Context switching 비용이 커져, 오버헤드가 늘어난다.

 

우선순위가 높은 프로세스가 계속 할당되어 우선순위가 낮은 프로세스는 자원을 할당 받지 못하는 상태를 기아 상태라고 한다. 이를 해결하기 위해서는 에이징 기법을 사용하여 들어온 순서와 우선순위를 함께 고려하여 자원을 할당시키면 된다.

반응형

'IT > Interview' 카테고리의 다른 글

20.10.09 면접 스터디  (0) 2020.10.09
20.10.06 면접 스터디  (0) 2020.10.09
20.09.28 면접 스터디  (0) 2020.09.28
암호화 기법  (0) 2020.09.15
정렬 알고리즘  (0) 2020.08.31

댓글