본문 바로가기
Android Q&A/Android One a day

[안드로이드 면접] - 4 :

by Jman 2023. 1. 27.

1. 조인(join)의 역할은 무엇인가?

조인이란? 

더보기

두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말한다.

조인의 역할이란?

더보기

테이블을 데이터 용량 낭비를 줄이고 데이터 관리하기 편하기 위해 테이블을 분리를 하는데, 이로써 얻는 단점인 데이터가 보기 힘들다는 부분을 여러 테이블의 데이터가 조합된 읽기 편하게 만들기 위함이다.

다양한 Join 방식

더보기
  • INNER JOIN : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
  • OUTER JOIN : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
  • CROSS JOIN : 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
  • SELF JOIN : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.

 

2. TCP 와 UDP 차이점은?

더보기

간략하게 TCP 와 UDP 에 대해 설명하자면,

TCP연결 지향형인 프로토콜이고 3-way handshaking 과정을 통해 연결 후 통신을 시작한다.

UDP비연결형 프로토콜로써 서로 정보를 주고 받을 때 정보를 보낸다는 신호나, 신호를 받는다는 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신의 프로토콜이다. 그리고 데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있다.

 

TCP 는 가상 회선을 만들어 신뢰성을 보장하도록(흐름 제어, 혼잡 제어, 오류 제어) 하는 프로토콜로, 따로 신뢰성을 보장하기 위한 절차가 없는 UDP 에 비해 속도가 느린편인다. 그래서 TCP 는 파일전송과 같은 신뢰성이 중요한 서비스에 사용된다.

 

UDP 는 신뢰성을 UDP 자체에서 보장하지 않는다. 하지만, 개발자가 직접 신뢰성을 보장하도록 할 수 있다. 그래서 HTTP/3 은 QUIC 라는 프로토콜을 기반으로 한다. 정리하자면 UDP 는 신뢰성을 보장하지 않지만 추가적인 정의를 통해 신뢰성을 보장 받을 수 있다.

UDP는 스트리밍, RTP와 같이 연속성에 더 중요한 서비스에 사용된다.

 

 

TCP(Transfer Control Protocal) UDP(User Datagram Protocal)
연결형 프로토콜 비연결형 프로토콜
데이터의 경계를 구분하지 않음 데이터의 경계를 구분함
신뢰성있는 데이터 전송(데이터 재전송 존재O) 비신뢰성 데이터 전송(데이터 재전송 존재X)
일 대 일(Unicast) 통신 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신

 

 

3. TCP 3, 4 way handshake 에 대해서

TCP 3way handshake

더보기

가상회선을 수립하는 단계이다.

 

클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는 지 확인하는 과정이다.

 

SYN, ACK 패킷을 주고 받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한 값을 전송한다.

순서는 SYN(n) -> ACK(n + 1) -> SYN(m) -> ACK(m + 1) 순이다.

TCP 4way handshake

더보기

TCP 연결을 해제하는 단계로, 클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송해주고 최종적으로 연결이 해제된다.

 

단, 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기한다. 그 이유는 혹시나 패킷이 나중에 도착할 수 있기 때문이다.

 

4. 동기 VS 비동기

더보기

동기처리 : 데이터의 요청과 결과가 한 자리에서 동시에 일어나게 된다. 간단히 말하면 사용자가 데이터를 서버에게 요청한다면 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른활동을 할 수 없으며(Blocking) 기다려야만 한다.

 

동기처리 장단점 

  • 장점 : 설계가 매우 간단하고 직관적이다.
  • 단점 : 요청에 따른 결과가 반환되기 전까지 아무것도 못하고 대기해야 한다.

 

비동기처리 : 동기처리와는 반대로 데이터의 요청과 결과가 동시에 일어나지 않는다. 서버에게 데이터를 요창한 후, 요청에 따른 응답을 계속 기다리지 않아도 되며 다른 외부 활동을 수행하여도 되고 서버에게 다른 요청사항을 보내도 상관없다.

 

비동기식 장단점

  • 장점 : 요청에 따른 결과가 반환되는 시간동안 다른 작업을 수행할 수 있다.
  • 단점 : 동기식보다 설계가 복잡하다.

 

5. 블로킹 VS 넌블로킹

더보기

블로킹과 논블로킹은 A 함수가 B 함수를 호출 했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다.

💡 제어권이란?

함수 코드를 실행할 권리 같은 것이다.

제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다(return).

 

블로킹 : A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨준다. 그리고 호출한 A 는 아무 일도 못하고 대기한다.

 

논블로킹 : A 함수가 B 함수를 호출해도 제어권은 그대로 자신이 가지고 있다. 즉, B 함수 작업이 마치지 않았더라도 제어권을 바로 반환(return)하여 호출한 대상인 A 함수는 다른일이 가능하다.

 

 

 

 

 

'Android Q&A > Android One a day' 카테고리의 다른 글

[안드로이드 면접] - 6 :  (0) 2023.01.29
[안드로이드 면접] - 5:  (0) 2023.01.28
[안드로이드 면접] - 3 :  (0) 2023.01.26
[안드로이드 면접] - 2 :  (0) 2023.01.25
[안드로이드 면접] - 1  (0) 2023.01.24