많은 분들이 면접 전에 인터넷 회사에 근무하지 않았거나, 인터넷 회사에 근무하셨을 수도 있습니다. 인터넷 회사인데 나이가 짧은데, 인터넷 회사 기술면접에서는 어떤 질문을 하는지 궁금합니다. 게다가 제가 준비를 충분히 하지 못한 채 면접을 몇 차례 진행하는 동안 면접관의 질문에 당황하여 처참한 실패를 겪었을 수도 있습니다.
다음은 제가 정리한 안드로이드 면접 질문을 요약한 것입니다. 지면 관계로 핫한 기술 섹션에만 질문을 나열하겠습니다. 나머지 인터뷰 질문은 나중에 업데이트될 예정입니다. 지금까지 업데이트된 지식을 가지고 있는 동시에 이번 인터뷰 모음집을 편집하는 데에도 많은 시간이 걸렸습니다!
컴포넌트화: APP를 여러 모듈로 나누는 것입니다. 각 모듈은 컴포넌트이거나 독립적으로 디버깅될 수 있습니다. 일부 구성 요소는 서로 종속될 필요가 없지만 서로 호출할 수 있으며, 최종 출시되면 모든 구성 요소는 기본 APP 프로젝트 종속성에 의해 lib 형태로 apk로 패키징됩니다.
컴포넌트화 후 각 비즈니스 모듈은 별도의 APP(isModuleRun=false)가 될 수 있으며, 릴리스 패키징 시 각 비즈니스 모듈은 루트 프로젝트 gradle.properties에서 isModuleRun=true로 완전히 제어되는 lib 종속성으로 사용됩니다. isModuleRun 상태가 다르고, 로딩하는 애플리케이션과 AndroidManifest가 달라서 독립 APK인지 lib인지 구별이 가능합니다.
여러 모듈을 생성할 때 동일한 리소스 파일 이름을 병합할 때 발생하는 충돌을 해결하는 방법 중복된 비즈니스 모듈 및 BaseModule 리소스 파일 이름으로 인해 충돌이 발생합니다.
각 모듈에는 app_name이 있습니다. 리소스 이름이 중복되는 것을 방지하려면 각 컴포넌트의 build.gradle에서 리소스 이름 접두사를 강제로 확인하기 위해 ResourcePrefix "xxx_"를 추가합니다. 각 컴포넌트의 리소스 접두사를 수정합니다. 그러나 값은
여러 모듈 간 공통 라이브러리 및 도구 클래스를 참조하는 방법
구성 요소화 후 모듈 간은 각각 격리됩니다. 기타 UI 점프 및 메서드 호출을 수행하는 방법은 Alibaba ARouter 또는 Meituan의 WMRouter와 같은 라우팅 프레임워크를 사용하여 수행할 수 있습니다.
각 비즈니스 모듈은 이전에 종속성이 필요하지 않으며 라우팅을 통해 점프할 수 있으므로 비즈니스 간의 문제를 완벽하게 해결합니다.
우리는 구성요소가 연결되어 있다는 것을 알고 있으므로 단독으로 디버깅할 때 다른 모듈에서 전달된 매개변수를 가져오는 방법
구성요소가 단독으로 실행될 때 각 모듈이 자동으로 APK에 들어갑니다. 여러 개의 애플리케이션이 있을 것입니다. 분명히 우리는 너무 많은 코드를 반복적으로 작성하고 싶지 않으므로 하나의 BaseApplication만 정의하면 됩니다. 다른 애플리케이션이 이 BaseApplication을 직접 상속하는 것도 괜찮습니다. 매개변수
플러그인화에 있어서 메소드 개수가 65535개를 초과한다는 문제를 언급해야 합니다. Dex 하도급을 통해서도 해결할 수 있습니다. 플러그인 개발을 사용하여. 플러그인의 개념은 호스트 앱이 플러그인 앱을 로드하고 실행하는 것입니다.
대규모 프로젝트에서는 명확한 업무 분담을 위해 서로 다른 팀이 서로 다른 플러그인 앱을 담당하는 경우가 많아 업무 분담이 더욱 명확해집니다. 각 모듈은 서로 다른 플러그인 APK로 캡슐화되며, 서로 다른 모듈을 별도로 컴파일할 수 있어 개발 효율성이 향상됩니다. 위의 메소드 수가 한도를 초과하는 문제를 해결했습니다. 온라인 버그는 "핫픽스" 효과를 얻기 위해 새로운 플러그인을 실행하여 해결할 수 있습니다. 호스트 APK의 크기를 줄였습니다.
플러그인으로 개발된 앱은 Google Play에서 출시할 수 없습니다. 이는 해외 시장이 없다는 것을 의미합니다.
위 내용은 Android 인기 기술 면접 질문 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!