- Today
- Yesterday
- Total
메이쁘
[Android] 2021.01.28. 오늘의 면접 Q&A 본문
안녕하세요.
벌써 2021년이 되었네요..
CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다.
틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음
언젠간 면접하게 될 때 모아서 쓰려고 합니다.
(실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!)
이번 글은 Android 카테고리 입니다.
-- 질문 목록
Q1. Activity와 Fragment의 차이가 무엇인가요?
Q2. Android Lint 가 무엇인가요?
Q1. Activity와 Fragment의 차이가 무엇인가요?
A. Activity 란, 안드로이드의 4대 컴포넌트 중 하나로써 안드로이드의 다양한 작업을 수행하는 앱의 페이지 입니다. 앱의 화면을 출력할 뿐 아니라, 사용자의 다양한 이벤트 처리도 가능합니다. 또한, 스텍 구조로 되어있습니다.
Fragment 는 Activity의 View를 뜻합니다.
보통, Activity가 변하게 되면 이에 따라 View 또한 변해야 하는데요. 만약, 전체적인 틀은 같지만, 여러 비슷한 작업들을 수행하게 된다면 각 작업별로 Activity를 만들어야 하고, 이는 메모리와 코드의 효율성이 저하됩니다.
즉, 하나의 액티비티 화면 내에 동시에(또는 원할 때 마다) 여러 View를 보여주고 싶을 때 Fragment를 사용합니다. 이러한 Fragment는 Activity의 모든 기능을 사용할 순 없지만, 기본적인 여러 기능들은 사용할 수 있습니다.
예를 들어, 전기차 Activity, 휘발유차 Activity가 있다고 합니다. 각각의 Activity는 각각에 맞는 View가 존재합니다.
갑자기 전기차와 휘발유차를 합친 하이브리드차를 만들어야 한다고 했을 때, 각각의 액티비티 내 기능을 가져와 새로운 액티비티를 만들어야 한다면, 그리고 다른 종류의 차가 나올 때마다 Activity를 만들어야한다면 메모리 효율성이 매우 저하되고 번거로운 작업을 계속해야 합니다.
이 때, 전체 기능을 가진 자동차 Activity를 하나 만들고, 안에 자동차 종류에 맞게 Fragment를 만들어 적절하게 View로 보여준다면 효율성이 증대될 것입니다.
이렇게, 하나의 큰 Activity를 만들고, Fragment A, B, C 3개만 만들면 됩니다. 이 때, View는 통일해도 되고, Fragment 별로 따로 만들어도 됩니다.
만약, Fragment가 없다면, A, B, C 각각 Activity를 만들고, intent를 활용해 Activity 간 이동을 해야합니다.
Q2. Android Lint가 무엇인가요?
A. Android Lint는 안드로이드 코드 스캔 도구입니다. 즉, 소스파일 검사 도구 인데요.
기존에 빌드/컴파일 할 때에도 오류를 자동으로 검사하는데, 별도로 Lint가 존재하는 이유는 이러한 빌드/컴파일 시 오류 체크하는 검사 외에도 사용자가 커스텀해서 소스코드를 검사할 때 사용하기 때문입니다.
그럼, 이렇게 굳이 추가 검사를 해야하는 이유는 안드로이드 개발 시 Java만 사용하는 것이 아니라, xml, image(png, jpg, svg=xml 등), ndk 등 여러가지 파일을 활용하기 때문에 이러한 것들에 대해 추가적으로 검사하여 오류를 줄이기 위함입니다.
대표적인 특징은 테스트 사례(단위테스트)를 작성하지 않고도 코드의 구조적인 문제를 확인할 수 있습니다. 또한, 커스텀 기능이 있어 원하는 기준의 검사를 수행할 수 있습니다.
Kotlin 사용 시 코틀린 정적 분석 도구인 Ktlint 를 사용합니다.
이상입니다.
감사합니다!
'면접 대비 CS지식 > SELF CS면접 Q&A' 카테고리의 다른 글
[Spring] 예상 Q&A 공부(Transactional 트랜잭션 적용 범위) (5) | 2021.12.26 |
---|---|
[WEB] 예상 Q&A 공부(HTTP Status Code, Web과 WAS의 차이) (0) | 2021.03.02 |
[Network] 2020.12.04. 오늘의 면접 Q&A (0) | 2020.12.04 |
[Network - 전송] 2020.11.21. 오늘의 면접 Q&A (1) | 2020.11.21 |
[Programming] 2020.11.20. 오늘의 면접 Q&A (2) | 2020.11.21 |