안드로이드 면접대비 _ 4

안드로이드 면접 질문

  • 안드로이드의 시스템 구조 참고링크

  • (버블, 퀵, 삽입 등) Sort 알고리즘을 구현 참고링크

  • 자바와 관련하여 Call by Value와 Call by Reference에 대해 설명.

  • Process와 Thread 설명 및 차이점

    참고링크

    • 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것.
    • 스레드는 프로세스의 실행 단위. 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있다.
  • 인텐트(Intent)에 대해서 설명 공식문서

    • 일종의 메시지 객체. 이를 사용해 다른 컴포넌트에 작업을 요청할 수 있다.
    • 기본적으로 액티비티 시작, 서비스 시작, 브로드캐스트 전달에 사용된다.

    명시적인텐트 : 특정 컴포넌트 클래스를 이름으로 직접 지정

    암시적인텐트 : 해당 기능을 가지고있는 불특정한 앱들을 찾을 때 사용

  • 안드로이드 앱을 구성하는 4대 구성요소는? 공식문서

    • Activity
    • Service
    • Content provider
    • BroadCast Receiver
  • Activity간 데이터 전달에서 POJO(Plain Old Java Object)를 전달하지 못하는 이유와 해결방법

    • 이유 : 인텐트를 전달할때는 IPC를 이용한다. 그러나 프로세스간 통신시에는 메모리참조가 안된다. 그래서 파일에 쓰는 방식을 이용하는데 이 때 직렬화, 역직렬화를 통해 파일을 참조한다.
    • 해결방법 : Serializable, Parcelable 참고링크
    • 안드로이드에서는 Parcelable 을 쓰는 이유 : 참고링크_아래에 있음
  • 안드로이드의 프로젝트 구성요소에 대해 설명(Manifest, gradle, src, res 등)

    • Manifest : 애플리케이션에 대한 필수적인 정보를 안드로이드 플랫폼에 알려준다. 모든 안드로이드 앱은 반드시 AndroidManifest.xml 파일을 자신의 루트 디렉토리에 가지고 있어야한다. 공식문서
    • gradle : 고급 빌드 툴킷인 Gradle을 사용하여 빌드 프로세스를 자동화하고 관리하는 한편, 여러분은 유용한 사용자 지정 빌드 구성을 정의할 수 있습니다. 공식문서
    • src : JUnit 테스트 코드를 비롯한 Java, kotlin 소스 코드 파일을 포함합니다. 이들 파일은 패키지 이름별로 구분
    • res : 코드가 아닌 모든 리소스(예: XML 레이아웃, UI 문자열, 비트맵 이미지 등)를 포함합니다. 이들 리소스는 해당 하위 디렉토리로 나뉩니다.
  • 데드락이란?

  • 데드락 발생 조건
  • 데드락 회피방법

  • 안드로이드의 inflate에 대해서 설명해보세요

  • 안드로이드 수치(DP)에 대해서 설명해보세요 공식문서

    • 목적 : 다양한 화면 크기에서 동일 비율로 출력되도록 하는 픽셀 단위
    • 예시 : px = dp * (dpi / 160)
  • 배우고 싶은 기술은?

  • 기술 트렌드 학습 하는법

  • 접근 지정자에 대해서 설명

  • 쓰레드 동기화 방법에 대해서 설명

  • 해시맵 사용할 때 주의할 점

  • onTouchEvent 리턴값의 의미

    • 이벤트를 사용할 경우 true
  • 안드로이드 O의 변경사항 공식문서

  • ListView와 RecyclerView의 차이점

  • LRU캐시에 대해서 아는대로 설명해보세요.

    • Least Recently Used
  • MVC, MVP, MVVM의 차이점

  • VCS(git, svn 등) 사용 경험 여부 및 특징에 대해 설명

  • RxJava사용경험 여부

  • 안드로이드 앱 개발 대표 라이브러리들 사용경험(Realm, Glide 등..)

  • Generic과 Type캐스팅의 차이점

  • Serializable 과 Parcelable의 차이는? https://band.us/band/71578699/post/80

  • CI(Jenkins,CircleCI) 사용경험

  • NDK 개념

  • Primitive타입과 Wrapper클래스에 대해 설명

  • 사용해본 디자인 패턴에 대해 설명(Singleton, Observer, Factory 등등)

  • AsyncTask에 대해 설명

  • TDD에 대해서 아는대로 설명

  • A/B테스트란

    • 임의로 두 집단을 나누고, 기존 프로그램과 새로운 프로그램을 보여준 후 어떤 집단이 더 좋은 성과을 보였는지 측정하여 새로운 프로그램이 좋은지 정량적으로 평가하는 방식
  • 웹툰 및 전자책과 같은 앱을 구현하기위해 ViewPager를 사용한다 가정하고, 메모리와 관련해서 어떤방식으로 구현할지 설명하시오.

  • 자료 구조와 관련한 질문(예: 좋아하는 언어로 연결리스트를 구현해보세요(화이트보드 또는 컴퓨터에 작성))

  • Dependency Injection이란?

  • 디자이너 또는 기획자와 이견이 생길때 어떻게 대처할 것인가

  • Dalvik과 Art의 차이점 참고

  • 코틀린의 특징

  • startService와 bindService의 차이

  • 프래그먼트와 액티비티의 차이

  • 벡터 이미지 장점과 사용방법

  • 멀티스레드 구현시 고려해야할 점

  • APK의 구조

  • GC알고리즘

  • 즐겨쓰는 디자인패턴과 사용이유

  • Strict Mode에 대해서 설명 : 앱이 메인스레드에서 긴 작업을 수행할 경우 화면이 깜빡이는 디버깅모드

  • 일반 View와 Surface View의 차이

  • 애플리케이션의 성능을 개선한 사례

  • Atomic Type

  • 람다식이란?

Share