1. 너가 구현한 복잡한 앱 아키텍쳐와 왜 선택했는지를 설명하세요
* 큰 앱에서 나는 MVVM 패턴을 사용한다. UI와 비즈니스 로직을 분리하는걸 유지하기 위해서,
이 MVVM은 앱을 테스트 하기 쉽게 만들고 유지보수가 용이하게 만든다.
이 아키텍처는 UI 로직을 매니징하기 위한 ViewModel이 포함되어있으며, 레포지토리를 통해 데이터핸들링을 한다.
그리고 라이브데이터를 이용해 데이터가 변경될때마다 UI를 자동으로 업데이트한다.
2. 큰 안드로이드 프로젝트에서 너가 종속성 관리하는 방법
나는 di관련해서 프레임워크를 dagger나 hilt를 사용한다. 이 툴은 컴파일 타임에 종속성 관리를 하고, 반복적인 코드를 줄여준다.
그리고 이 프로젝를 더 모듈화하고 테스트를 쉽게만들어준다.
힐트는 특히 미리 정의된 컴포넌트와 스코프로 절차를 단순화 합니다.
3. 안드로이드 앱에 퍼포먼스 향상을 위해 너의 전략은 무엇인가요?
단순한 레이아웃은 뎁스를 줄입니다.
listview대신 recyclerview를 사용합니다
메모리 누수 방지를 위해 weakreferences를 사용하고, 적절하게 생명주기를 따릅니다.
proguard를 사용하거나 r8을 사용해 코드를 축소하고, 최적화 시킵니다
백그라운드 작업은 워크매니저를 이용하거나 코루틴을 사용합니다
4. coroutine의 규칙과, flow에 대해 설명하세요. (코틀린 기준으로)
* coroutine: 비동기 프로그래밍을 단순화합니다. 관리가 쉽고, 코드를 읽기쉽게 만듭니다.
코루틴은 순차적으로 코드를 작성할수있게 만들고, 작업이 백그라운드에서 돌아갈동안 콜백 지옥을 피할수있습니다.
* flow: 이것은 반응형 스트림 api입니다. 비동기 데이터 스트림 작업을 위해 코루틴과 함꼐 동작하며, 반복적으로 값을 방출합니다.
5. 안드로이드에서 테스팅에 어떻게 접근합니까?
unit testing: Junit을 사용하거나, Mockito를 사용해 비즈니스 로직을 테스팅합니다
UI Testing: espresso 툴을 이용해 유저 인터페이스를 자동으로 테스트합니다.
통합 테스트: 앱에 여러 구성요소들이 잘 동작하는지 확인하빈다
End-to End Testing: 유저 여정에 앱이 잘 완료하는지 테스트합니다.
TDD: 신뢰성을 보장하기위해 기능 구현 전에 테스트를 작성합니다.
6. 컴포즈는 무엇이고, 전통적인 뷰 시스템과 다른점이 무엇인가요?
컴포즈는 현대적인 UI 툴킷입니다. 선언형 방식이고,xml이 아닌 코틀린 내에서 UI컴포넌트를 생성 할 수 있습니다.
이 방식은 플렉서블하고 간결한 코드작성을 돕습니다.
recomposition 기능을 통해 자동으로 UI를 업데이트 하고 상태 관리를 할 수 있게 합니다.
7. 더 나은 확장성과 유지보수성을 위해 안드로이드 앱에서 최적화 한 방법에 대해 설명하세요.
나는 앱을 향상시키기 위해 아키텍쳐 모듈화를 채택했습니다. 기능단위로 모듈을 분리했습니다.
이 코드베이스는 간결하며, 유지보수가 용이하고,병렬개발을 허용했습니다.
나는 효과적인 상태 관리를 위해 viewmodel과 livedata를 사용했습니다.
8. 안드로이드엡에서 고려한 보안 은 어떤게 있습니까?
* encryptedSharedPreferences로 암호화함으로써 데이터를 보호합니다
* https를 사용하고 암호화된 데이터를 수신합니다
* oauth와 같은 적절한 인증이나 권한을 구현합니다
* inject attack과 같은 보안 취약점을 방지하기 위해 유저 인풋을 검증합니다
* 리버스 엔지니어링을 막기위해 프로가드나 r8을 활용해 코드를 흐리게합니다
9. 지속적인 통합을 구현하기 위한 방법과, CI/CD를 안드로이드 프로젝트에 어떻게 적용하나요?
* Ci/CD 파이프라인은 젠킨스와 깃허브 액션, bitrise를 사용합니다
* 빌드와 테스트, 배포 프로세스는 자동화합니다
* 깃플로우 버전 컨트롤에 따른 브랜치 전략을 사용합니다
* 이슈를 쉽게 캐치하기 위해 자동화 테스트 파이프라인을 포함합니다
10 .안드로이드 개발에 최신 트렌드를 업데이트 하는 방법은 무엇입니까?
* 안드로이드 개발 블로그를 팔로우하고, 공식 안드로이드 웹사이트를 봅니다
* STackoverflow와 레딧과 같은 개발자 커뮤니티에 참여합니다
* 개발자 컨퍼런스나 웨비나에 참석합니다
* 튜토리올, 온라인코스를 수강합니다
* 개인 프로젝트에 새로운 라이브러리를 적용함으로써 경험합니다.
'영어 데일리' 카테고리의 다른 글
Mockk와 Mocking 기본 소개 (24.01.08) (1) | 2025.01.08 |
---|---|
컴포즈 단점에 대한 반박댓글 (25.01.07) (0) | 2025.01.07 |
compose를 사용안하는 10가지 이유 (25.01.06) (0) | 2025.01.06 |
컴포즈에서 다국어하는 법 (25.01.05) (0) | 2025.01.05 |
Coroutine 상위 10개의 실수 (25.01.04) (1) | 2025.01.04 |