[안드로이드 면접] - 10 :
1. Thread 와 Process 를 설명하자면?
프로세스는 메모리 상에서 실행 중인 프로그램을 일컫는다.
스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.
프로세스는 최소 하나의 스레드를 보유하고 있고, 각각 별도의 주소 공간을 독립적으로 할당 받는다.
스레드는 이 중에 Stack 만을 따로 개별적으로 할당 받고, 나머지 영역은 스레드끼리 서로 공유할 수 있다.
2. Process 가 가진 단점과 스레드 출현 목적은?
프로세스의 문제점
- 프로세스 생성에 큰 오버헤드가 있다.
- 프로세스 컨텍스트 스위칭이 비효율적이고, 이 또한 오버헤드가 크다.
- 프로세스 사이에 통신이 어렵다. (IPC 를 사용해야 함)
스레드의 출현 목적
- 프로세스보다 크기가 작은 실행 단위 필요했다
- 프로세스의 생성 및 소멸에 따른 오버헤드를 낮출 필요가 있다
- 컨텍스트 스위칭의 효율을 높일 필요성이 있다
- 프로세스들의 통신 시간, 방법에 어려움이 있다.
2. HTTP Status Code 에 대해서 설명하자면?
1XX : Information response (정보 응답)
서버가 요청을 받았으며, 서버에 연결된 클라이언트는 계속 잡업을 하라는 의미이다.
2XX : Successful response (성공 응답)
클라이언트가 요청한 동작을 수신하고, 서버와의 요청이 성공했음을 의미한다.
3XX : Redirection message (리다이렉션 응답)
클라이언트가 요청한 동작을 마무리하기 위해 추가 동작이 필요하다는 의미이다.
4XX : Client error response (클라이언트 에러응답)
클라이언트 요청에 에러가 있음을 의미한다.
5XX : Server errors (서버 에러응답)
서버 오류로 인해 클라이언트 요청을 수행할 수 없음을 의미한다.
자세한 Status Code 는 별도 검색을 통해 알아보면 좋을 것 같다.
너무 많은 code 가 존재하여 앞에 숫자로 큰 맥락만 기억하고 있으면 좋을 것 같다.
4. onStart() 와 onResume() 함수의 차이는?
onStart()
Activity 가 사용자에게 보이지기 직전에 호출이된다. (사용자와 상호작용 불가능)
onResume()
Activity 가 화면에 보여지는 단계, 사용자에게 Focus 상태 (사용자와 상호작용 가능)
5. onPause() 와 onStop() 함수의 차이는?
onPause()
Activity 위에 다른 Activity 가 올라와서 Focus 를 잃었을 때, 완전히 뷰가 가려지지 않은 상황에서 출된다. (일부, 투명하게 보일 때)
onStop()
Activity 위에 다른 Acitivity가 완전히 올라와서 덮었을 때 호출 (Home 버튼, 전화가 온 상황, 다른 Activity 가 기존 Activity 전부를 가릴 때)
해당 콜백함수 에선 리소스를 해제하거나, 현재 상태 정보를 저장하기 위한 DB 작업들을 진행하여도 된다.