첫 포스트!
이번 주에 스타트업 인턴 면접이 잡혔는데 기술 면접이 1시간이라고 한다. 지금 공부한다고 답변을 술술 말하는 똑똑이 개발자가 되진 않겠지만 이참에 안드로이드 개발 이론에 대해 공부하는 시간을 가져보려고 한다.
면접 X털렸다. 근데 내가 많이 부족하다는 점을 알기 때문에 할 말이 없다. 그런 의미로 받았던 질문들을 추가해본다. 최신 트렌드를 꾸준히 공부하는게 필요하다는걸 아주 절실히 깨달았다. (*표시)
해당 포스트는 여러 블로그와 이전 면접 경험들을 기반으로 작성되었습니다
액티비티가 시작하는 순간부터 종료되는 순간까지의 주기를 말한다.
onCreate(): 액티비티가 시작될 때 레이아웃을 구성하면서 한 번 실행
onStart(): 액티비티가 사용자에게 보이기 직전에 실행. BroadcastReceiver 실행
onResume(): 사용자가 액티비티와 상호작용하는 기능을 넣는 곳으로, 무조건 실행되어야 하는 기능이 들어감
onPause(): 포커스를 잃어 화면이 부분적으로는 보이지만 곧 사라질 때 실행
onStop(): 사용자에게서 화면이 완전히 사라지고, 다른 액티비티가 보여질 때 호출
onDestroy(): (화면회전 혹은)화면이 완전히 종료되기 직전에 호출
onAttach
onCreate
onCreateView
onPause
onStop
onDestoryView
리스트뷰와 리사이클러뷰는 모두 스크롤 가능한 리스트 형식의 레이아웃을 구현할 때 사용. 리스트뷰는 스크롤할 때 나오는 아이템을 끊임없이 새로 만들어 메모리 성능에 부담이 갈 수 있음. 반면, 리사이클러뷰는 처음 만들어지는 아이템의 개수는 정해져있고, 뷰홀더를 통해 들어가는 뷰의 재사용을 가능하게 함.
onSaveInstanceState()의 Bundle에 저장되어야 할 상태 데이터를 저장하여 유지
Process는 운영체제로부터 필요한 메모리를 할당받아 실행되는 프로그램의 단위, Thread는 Process 내에서 실행되는 흐름의 단위
Thread는 Process 내에서 실행되는 흐름의 단위로 Handler를 통해 구현이 가능
하나의 프로그램에 동시에 여러개의 일을 수행하는 것. 비동기적.
안드로이드 시스템이 어플리케이션 또는 컴포넌트 등을 관리하기 위해 만들어놓은 일종의 ID. 현재 내가 사용하고 있는 어플리케이션 환경의 정보에 접근할 수 있는 수단.
get, post과 같이 어떤 역할을 하고, 재사용성이 있는 API. 서버와 클라이언트를 잇는 인터페이스.
가능하지 않다. 응답이 반드시 10초 이내에 온다는 보장은 없기 때문에 ANR이 발생할 가능성이 크다. 네트워크 통신이나 데이터베이스 저장같은 경우에는 주로 스레드를 별도로 이용한다.
클라이언트와 서버간 http 통신을 쉽게 하기 위해 사용. Retrofit은 OkHttp라는 Http 통신 라이브러리 바탕으로 이루어져있으며, Annotation을 사용하여 가독성 제공. OkHttp는 Interceptor를 통해 로그인을 위한 jwt 토큰을 자동으로 헤더에 붙여주는 등의 편리 제공.
안드로이드 앱을 쉽고 빠르게 구축하는데 도움이 되는 도구들의 모음으로, 기존의 support library를 단일화한 것으로 보면 됨. AndroidX가 Jetpack의 라이브러리들을 묶은 패키지 명. 내부에는 ViewModel, DataBinding, ViewBinding 등등이 있음.
서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 JSON 토큰을 넣어서 보내면, 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해 인증
Application Not Responding. Main Thread(UI Thread)가 일정 시간이상 어딘가에 붙잡혀있을 때 발생.
안드로이드 시스템에서 커뮤니케이션을 담당하는 역할로 컴포넌트간의 호출과 메시지 전달에 이용
Git은 로컬에서 버전 관리하는 프로그램이고, Github는 버전 관리, 소스 코드 공유 등이 가능한 원격저장소
*출처
http://heavybros.dothome.co.kr/?p=543
https://www.notion.so/imwj/Android-Interview-3ce7ddf12ddb413a9d2213173654d52c
https://ppizil.tistory.com/1
https://bbul-jit.tistory.com/m/23
https://github.com/taeiim/Android-Study/blob/master/study/week16/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C%20%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0%20-%20%EB%A9%B4%EC%A0%91/%EC%8B%A0%EC%9E%85%20%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C%20%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0%20-%20%EB%A9%B4%EC%A0%91.md