1️⃣ 안드로이드의 4대 컴포넌트는 무엇인가요?
각 컴포넌트에 대해 자세히 설명할 수 있어야 합니다. (Activity, Service, Receiver, Provider)
안드로이드의 4대 컴포넌트에는 Activity, Service, Receiver, Provider가 있습니다. 이 4개의 컴포넌트들은 각각의 생명주기를 가지고 있으며 Intent를 통해 데이터를 주고 받을 수 있습니다. Activity는 사용자와 직접 상호작용을 할 수 있으며, Service는 백그라운드에서도 작업을 수행할 수 있습니다. Receiver는 문자나 배터리와 같은 이벤트를 수신할 수 있으며 Provider는 공유 데이터를 읽고 가능하다면 수정까지 가능합니다.
2️⃣ Activity의 생명주기는 어떻게 구성되어 있나요?
각 메소드가 어떻게 호출되는지, 어떤 역할을 하는지 설명할 수 있어야 합니다.
Activity는 onCreate를 통해 가장 먼저 실행이 됩니다. 이후 onStart와 onResume을 통해 화면이 그려지고 Activity가 잠시 멈출 때 onPause 또는 onStop이 실행 됩니다. Activity가 다시 재개될 땐 onResume이 호출되고 Activity가 사용자로부터 완전히 벗어나게된다면 그때 onDestory가 실행 됩니다.
3️⃣ RecyclerView의 특징을 ListView와 비교하여 설명할 수 있나요?
RecyclerView의 주요 클래스 설명, ListView의 한계와 RecyclerView의 장점을 설명할 수 있어야 합니다.
RecyclerView와 ListView 모두 List로 이루어진 데이터를 나열하여 화면을 그려주는 View입니다. 하지만 ListView는 안의 데이터 값이 바뀔 때마다 새로운 View를 그려내며 값을 넣기 때문에 대용량의 데이터를 처리하기에는 성능에 무리가 갑니다. 반면 RecyclerView는 일정 스크롤이 내려가면 위에서 사용했던 View를 다시 아래로 호출하여 해당 View를 재사용합니다. 이 때문에 이름 또한 RecyclerView인 것이며 ListView에 비해 상대적으로 훨씬 효율적이고 유연합니다.
💡 튜터님 피드백
ListView도 Adapter가 있고 어느정도 View를 Recycle 하는 것을 동일하지만, ViewHolder의 유무가 결정적인 차이입니다.
4️⃣ 추상클래스와 인터페이스의 차이는 무엇인가요?
변수, 접근제어자, 메소드, 상속 측면에서 비교할 수 있어야 합니다.
추상 클래스와 인터페이스는 클래스 그 자체로는 구현될 수 없으며 다른 클래스가 이를 상속 받아야지만 인스턴스화 하여 사용할 수 있습니다. 둘 다 body가 없는 메소드를 작성할 수 있지만 추상클래스는 이러한 추상 메소드가 있을 수도 없을 수도 있습니다. 그리고 이와 같은 경우 상속 받은 클래스에서는 반드시 override 하여 추상 메소드를 구현해주어야 합니다. 또한 인터페이스는 다중상속이 가능하고 inteface로 선언되어 implements로 상속 받지만 추상클래스는 단중상속이 가능하고 abstract로 선언되어 extends로 상속 받아 단일상속만 가능합니다.
5️⃣ Retrofit이란 무엇인지 장점과 함께 설명할 수 있나요?
간결성, 안정성, 확장성, 연동성 측면에서 설명할 수 있어야 합니다.
Retrofit은 Android가 HTTP 통신을 할 수 있도록 도와주는 네트워크 통신 오픈소스 라이브러리입니다. Retrofit은 안정성이 뛰어난데, 상당히 많은 개발자가 사용하고 있음으로서 증명할 수 있습니다. HTTP 통신을 할 수 있는만큼 HTTP 메소드, 요청 파라미터 등을 자유롭게 사용할 수 있으며 GSON, OkHttp 등의 라이브러리와의 호환성도 좋아 확장성 면에서도 좋습니다. 또한 GSON을 사용하기 때문에 사용자가 직접 JSON을 파싱하여 사용할 필요도 없습니다.
💡 튜터님 피드백
GSON만 받아올 수 있는 것이 아니고 원하는 데이터 형식으로 받아올 수 있어 유연합니다.
6️⃣ 프로젝트에서 본인이 맡은 부분에 대해 설명해보세요.
어떤 기술을 사용했는지, 해당 기술 선택 이유, 무엇을 고려했는지…
이번 최종 프로젝트에서 제가 맡은 부분은 Firebase Google Login이었습니다. 이제는 수많은 앱들이 소셜로그인을 필수로 사용한다고 하지만 정작 저는 지금까지 앱을 만들며 소셜 로그인을 연동해본 적이 없었습니다. 때문에 이 작업이 더욱 재밌고 유의미했던 것 같습니다. 구글 로그인을 연동하는 것 자체는 조금 헤맸어도 어렵지 않게 해낼 수 있었는데, 처음부터 끝까지 SHA-1 key 값 문제로 여러 애를 먹었습니다. 우선은 각 팀원 로컬마다 다른 SHA-1 키값이 발급되어 구글 로그인이 잘 되지 않았으며 일련된 키값을 발급받아 FirebaseConsole에 등록할 필요가 있었습니다. 이는 keystore를 등록해 하나의 일관된 키를 발급받아 해결했습니다. 또 MVP 발표 때 시연까지 잘 해냈음에도 내부 테스트를 진행할 때에 구글 로그인이 다시 되지 않는 현상이 발생했습니다. 이 또한 앱 서명키가 추가되면서 FirebaseConsole에 추가해주어야 했는데 이를 하지 않아 발생한 것으로 FirebaseConsole에 새로운 키값을 추가하니 정상적으로 실행 되었습니다.
그리고 Google 답게 필요한 계정정보 잘 받아올 수 있어서 유저 정보를 손쉽게 가공할 수 있었던 점이 매우 유용했습니다.
7️⃣ 앱에 무한스크롤 기능을 구현하는 방법은 무엇인가요?
본인의 방법으로 논리적으로 설명해보세요.
무한스크롤 구현하는 방법은 여러가지가 있지만 RecyclerView에서 scrollListener를 통해 일정 부분 스크롤이 되었을 때마다 이를 감지하여 데이터를 불러오는 것이 대표적입니다. 하지만 제가 직접 코드로 구현해본 적은 없어 추가적으로 자세한 설명은 어려울 것 같습니다.
💡 튜터님 피드백
Compose, paging 처리 등 다양한 방법으로 무한 스크롤링을 구현할 수 있습니다.
'etc' 카테고리의 다른 글
스파르타 국비지원 내일배움캠프? 경력직이 듣기엔 어떨까? (8) | 2024.10.13 |
---|---|
모의면접 준비 2차 (0) | 2024.09.26 |
[스파르타코딩클럽] Android 트랙을 신청한 이유 (0) | 2024.05.08 |