Android - YunByungKwan/Fundamental Wiki

Android

LMK(Low Memory Killer)에 대해 설명 LMK(Low Memory Killer)는 가용 메모리가 설정된 Threshold 이하로 떨어지게 되면, 우선순위에 따라서 프로세스를 종료시키는 역할을 합니다. 안드로이드에서 레이아웃이 그려지는 과정에 대해 설명 Activity가 포커스를 얻게 되면 시스템은 Activity의 Root Node를 요청합니다. (setContentView에 세팅한 레이아웃이 Root Node) View는 레이아웃의 Root Node를 시작으로 레이아웃 트리를 순회하면서 View를 그리기 시작합니다. View를 그리는 과정은 Measure[메져]->Layout->Draw 3단계로 진행이 됩니다. 측정(Measure) 단계에서 뷰의 크기를 측정하고, 레이아웃(Layout) 단계에서 뷰의 크기와 위치를 결정하고, 그리기(Draw) 단계에서 뷰를 화면에 그립니다. View와 ViewGroup의 차이점에 대해서 설명 View는 Button, EditText, TextView와 같이 안드로이드에서 UI를 구성하는 기본 요소를 말합니다. ViewGroup은 ConstraintLayout, LinearLayout과 같이 View 또는 ViewGroup을 포함하는 요소를 말합니다. Display, Window, Surface, Canvas에 대해서 설명

Retrofit의 동작 원리에 대해서 설명 Retrofit을 사용하기 위해서 먼저 사용할 API를 인터페이스로 정의합니다. 그리고 레트로핏 빌더의 create 메서드를 통해서 인터페이스의 구현체를 생성합니다. 구현체의 생성에는 프록시와 리플렉션이 사용됩니다. 구현체를 생성하는 과정은 런타임에 어노테이션을 파싱해서 리플렉션을 통해 정의한 인터페이스를 읽고 이를 바탕으로 프록시 클래스를 만들고 그 구현체를 생성합니다. 이후 생성된 구현체를 통해 네트워크 통신을 진행합니다.

OkHttp의 동작 원리에 대해서 설명 OkHttp라이브러리는 내부적으로 여러 인터셉터들의 체이닝으로 동작합니다. BridgeInterceptor, CacheInterceptor등을 거쳐서 마지막에 CallServerInterceptor에서 request를 날리고 response를 받아 통신하는 것으로 알고 있습니다.

Gson에 대해 설명 Gson은 자바 오브젝트와 JSON간의 변환을 도와주는 라이브러리입니다.

Mockito에 대해서 설명 Mockito는 모의 객체를 주입해주는 자바 기반의 프레임워크입니다.

Mockito는 왜 사용했나요 유닛테스트시 실제 객체가 아니라 모의 객체를 통해서 테스트하기 위해서 사용했습니다.

Hamcrest에 대해 설명 Hamcrest는 조금 더 가독성 있는 테스트 코드를 짤 수 있도록 도와주는 라이브러리입니다.

테스트 더블(Test Doubles)에 대해 설명 테스트 더블은 실제 객체로 테스트가 어려운 경우 이를 대신해서 사용할 수 있는 객체들을 말합니다.

테스트 더블의 종류와 그 종류들에 대해 설명

테스트 더블은 크게 Dummy, Fake, Stub, Spy, Mock으로 나뉩니다.

상태 검증과 행위 검증에 대해서 설명