> 웹 프론트엔드 > 프런트엔드 Q&A > Android 인기 기술 면접 질문 요약

Android 인기 기술 면접 질문 요약

藏色散人
풀어 주다: 2020-07-31 17:04:38
앞으로
3188명이 탐색했습니다.

추천: "2020 Android 면접 질문 모음 [Collection]"

Foreword

많은 분들이 면접 전에 인터넷 회사에 근무하지 않았거나, 인터넷 회사에 근무하셨을 수도 있습니다. 인터넷 회사인데 나이가 짧은데, 인터넷 회사 기술면접에서는 어떤 질문을 하는지 궁금합니다. 게다가 제가 준비를 충분히 하지 못한 채 면접을 몇 차례 진행하는 동안 면접관의 질문에 당황하여 처참한 실패를 겪었을 수도 있습니다.

다음은 제가 정리한 안드로이드 면접 질문을 요약한 것입니다. 지면 관계로 핫한 기술 섹션에만 질문을 나열하겠습니다. 나머지 인터뷰 질문은 나중에 업데이트될 예정입니다. 지금까지 업데이트된 지식을 가지고 있는 동시에 이번 인터뷰 모음집을 편집하는 데에도 많은 시간이 걸렸습니다!

1.컴포넌트화

(1) 개념:

컴포넌트화: APP를 여러 모듈로 나누는 것입니다. 각 모듈은 컴포넌트이거나 독립적으로 디버깅될 수 있습니다. 일부 구성 요소는 서로 종속될 필요가 없지만 서로 호출할 수 있으며, 최종 출시되면 모든 구성 요소는 기본 APP 프로젝트 종속성에 의해 lib 형태로 apk로 패키징됩니다.

(2) 출처:

  1. APP 버전이 반복되고, 새로운 기능이 지속적으로 증가하고, 비즈니스가 복잡해지고, 유지 관리 비용이 높습니다.
  2. 높은 비즈니스 결합도, 비대해진 코드, 팀 내 여러 사람의 공동 개발이 어렵습니다
  3. Android 컴파일 코드 멈춤 갑자기 단일 프로젝트의 코드 결합이 심각해졌습니다. 한 부분을 수정하려면 재컴파일과 패키징이 필요하므로 시간이 많이 걸리고 노동 집약적입니다.
  4. 단위 테스트에 편리하며 다른 모듈에 집중하지 않고 하나의 비즈니스 모듈만 변경할 수 있습니다.

(3) 장점:

  1. 구성 요소화는 재사용을 개선하기 위해 공통 모듈을 분리하고 균일하게 관리하며, 구성 요소는 UI 구현을 포함하고 레이어 및 논리 레이어
  2. 각각을 포함할 수도 있습니다. 구성 요소를 독립적으로 컴파일하여 컴파일 속도를 높이고 독립적으로 패키지할 수 있습니다.
  3. 각 프로젝트 내의 수정 사항은 다른 프로젝트에 영향을 미치지 않습니다.
  4. 비즈니스 라이브러리 프로젝트를 빠르게 분리하고 다른 앱에 통합할 수 있습니다.
  5. 자주 반복되는 비즈니스 모듈은 구성 요소 접근 방식을 채택하여 비즈니스 라인 연구 및 개발이 서로 간섭할 수 없으며 협업 효율성을 향상하고 제품 품질을 제어하며 안정성을 향상시킵니다.
  6. 병렬 개발을 통해 팀원은 스스로 개발한 소형 모듈에만 집중하므로 결합이 줄어들고 향후 유지 관리가 더 쉬워집니다.

(4) 고려사항:

모드 전환: APP가 개별 디버깅과 전체 디버깅 사이를 자유롭게 전환하도록 하는 방법

컴포넌트화 후 각 비즈니스 모듈은 별도의 APP(isModuleRun=false)가 될 수 있으며, 릴리스 패키징 시 각 비즈니스 모듈은 루트 프로젝트 gradle.properties에서 isModuleRun=true로 완전히 제어되는 lib 종속성으로 사용됩니다. isModuleRun 상태가 다르고, 로딩하는 애플리케이션과 AndroidManifest가 달라서 독립 APK인지 lib인지 구별이 가능합니다.

build.grade에서 구성:

리소스 충돌

여러 모듈을 생성할 때 동일한 리소스 파일 이름을 병합할 때 발생하는 충돌을 해결하는 방법 중복된 비즈니스 모듈 및 BaseModule 리소스 파일 이름으로 인해 충돌이 발생합니다.

각 모듈에는 app_name이 있습니다. 리소스 이름이 중복되는 것을 방지하려면 각 컴포넌트의 build.gradle에서 리소스 이름 접두사를 강제로 확인하기 위해 ResourcePrefix "xxx_"를 추가합니다. 각 컴포넌트의 리소스 접두사를 수정합니다. 그러나 값은

종속성

여러 모듈 간 공통 라이브러리 및 도구 클래스를 참조하는 방법

구성 요소 통신

구성 요소화 후 모듈 간은 각각 격리됩니다. 기타 UI 점프 및 메서드 호출을 수행하는 방법은 Alibaba ARouter 또는 Meituan의 WMRouter와 같은 라우팅 프레임워크를 사용하여 수행할 수 있습니다.

각 비즈니스 모듈은 이전에 종속성이 필요하지 않으며 라우팅을 통해 점프할 수 있으므로 비즈니스 간의 문제를 완벽하게 해결합니다.

입력 매개변수

우리는 구성요소가 연결되어 있다는 것을 알고 있으므로 단독으로 디버깅할 때 다른 모듈에서 전달된 매개변수를 가져오는 방법

Application

구성요소가 단독으로 실행될 때 각 모듈이 자동으로 APK에 들어갑니다. 여러 개의 애플리케이션이 있을 것입니다. 분명히 우리는 너무 많은 코드를 반복적으로 작성하고 싶지 않으므로 하나의 BaseApplication만 정의하면 됩니다. 다른 애플리케이션이 이 BaseApplication을 직접 상속하는 것도 괜찮습니다. 매개변수

2. 플러그인화

(1) 개요

플러그인화에 있어서 메소드 개수가 65535개를 초과한다는 문제를 언급해야 합니다. Dex 하도급을 통해서도 해결할 수 있습니다. 플러그인 개발을 사용하여. 플러그인의 개념은 호스트 앱이 플러그인 앱을 로드하고 실행하는 것입니다.

(2가지 장점)

대규모 프로젝트에서는 명확한 업무 분담을 위해 서로 다른 팀이 서로 다른 플러그인 앱을 담당하는 경우가 많아 업무 분담이 더욱 명확해집니다. 각 모듈은 서로 다른 플러그인 APK로 캡슐화되며, 서로 다른 모듈을 별도로 컴파일할 수 있어 개발 효율성이 향상됩니다. 위의 메소드 수가 한도를 초과하는 문제를 해결했습니다. 온라인 버그는 "핫픽스" 효과를 얻기 위해 새로운 플러그인을 실행하여 해결할 수 있습니다. 호스트 APK의 크기를 줄였습니다.

(3가지 단점)

플러그인으로 개발된 앱은 Google Play에서 출시할 수 없습니다. 이는 해외 시장이 없다는 것을 의미합니다.

위 내용은 Android 인기 기술 면접 질문 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿