Java Android 개발! 올해 Android 인터뷰의 이러한 기술적 측면을 질문해야하며 고화질 PDF 버전을 공유해야합니다.

기본 상황

저는 평범한 학부 Android 개발 포스트입니다.

이 기사는 주로 가을 모집 인터뷰 경험을 요약 한 것으로, 마침내 Baidu와 Tencent로부터 제안을 받았습니다.

주로 알리의 3면, Tencent의 4면, Baidu의 3면, Netease의 3면 및 Meituan의 한쪽이 포함됩니다.

HR 측면이라고 생각했지만 그 결과는 기술이었습니다.

  • 1. 활동의 수명주기를 설명하십시오.

  • 2. 다른 활동을 시작하는 활동의 수명주기 설명

  • 3. 활동 태그에서 구성 할 수있는 항목

  • 4. IntentFilter의 태그는 무엇을 할 수 있습니까?

  • 5. 서비스 시작 방법

IntentService를 알고 계십니까?

  • 6. 몇 가지 주요 컨트롤은

  • 7. 데이터를 저장하는 방법이 있습니다.

  • 8. Intent는 무엇을 할 수 있습니까?

  • 9. Sharedpreference에서 적용과 커밋의 차이점은 무엇입니까?

  • 10. ContentProvider를 사용 했습니까? 이것을 사용하는 이유

  • 11. ASyncTask를 사용해 보셨습니까? 그것을 달성하는 방법을 알고 있습니까?

  • 12. 스레드 풀을 알고 있습니까? 그것을 만드는 방법? 하단 레이어를 실현하는 방법은 무엇입니까?

  • 13. Set, List, Map의 차이점과 Map의 하단 레이어 구현 방법

  • 14. View를 다시 작성하는 방법은 무엇입니까?

  • 15. 빠른 행 실현

  • 16. 두 개의 연결 목록으로 표시되는 정수의 추가를 실현합니다 (공간 복잡성 요구 사항이 매우 낮음).

아직까지 인터뷰 과정을 꼼꼼히 파악하지 못한 프로그래머가 많다는 것을 알았습니다. 오늘은 알리바바를 예로 들어 주요 인터넷 기업의 인터뷰 과정과 과정에 대해 이야기 해 봅시다!

이 기사는 주로 대행사 모집의 인터뷰 과정에 대해 이야기합니다! 기술적 인 사회 인터뷰에서 알리바바와 다른 주요 인터넷 회사들이 일반적으로 4 차례의 인터뷰를 진행합니다. 첫 번째와 두 번째 측면은 기술적 측면, 세 번째 측면은 감독자 인터뷰, 네 번째 측면은 HR 인터뷰입니다. 목표 수준이 P6 + 인 지원자의 경우, 더 복잡한 고용위원회 등급 프로세스를 포함하기 때문에 팀 간 검토 인터뷰를 1 회 이상 추가 할 것입니다. 다음 내용은 주로 일반적인 상황에서 P5 ~ P6 인터뷰를 위해 소개 된 내용이므로 직접 무시하시기 바랍니다.

01  기술

1. 개인 소개 및 기초 지식 시험

이 부분은 필수 기술로 간주됩니다. 개인적으로 저는 기초 지식 시험을 약화시키는 경향이 있습니다. 결국 후보자마다 배경이 다릅니다. 지능, 학습 능력, 의사 소통 이해 등에 더 많은 관심을 기울여야합니다. 기초 지식은 그가 우수한 엔지니어가 아님을 증명할뿐입니다. 하지만 그를 증명할 수는 없습니다.
2. 프로젝트 경험 검토

이 단계에서는 면접관이 반드시 후보자의 이력서를 스캔 할 필요가 없기 때문에이 단계에서 특히 중요합니다. 따라서 후보자의 프로젝트 소개를 듣는 것이 후보자를 이해하는 가장 중요한 방법입니다. 이 과정에서 면접관은 다양한 회사의 내부 기술 검토와 매우 유사한 질문의 밑바닥에 도달하려고했습니다. 몇 가지 핵심 사항에 대해 특별히주의를 기울이시 기 바랍니다.

  1. 프로젝트의 배경을 이해하고 요구 사항이 어디서 왔는지 모르는 것은 끔찍합니다. 이것은 당신이 책임자가 아닌 실행자에 가깝고 프로젝트에 대한 전반적인 생각이 부족하다는 것을 보여줍니다.
  2. 수요의 합리성을 분석하고, PM에게 맹목적으로 순종하며 수요의 연구 개발을 통제하지 못하는 것은 끔찍합니다.
  3. 기술 솔루션 설계에 대한 연구 및 선정을 위해 귀사의 솔루션이 충분히 생각, 연구, 비교 및 ​​입증 되었으면합니다.이 프로세스를 통해 후보자의 시스템 설계 기술이 업계의 기술에 충분한 지 확인할 수 있습니다. 오픈 소스 기술에 대한 숙달과 오픈 소스 기술을 적용 할 의향이 있는지 여부. 프로젝트가 단순한 비즈니스 시스템 일지라도 여전히 많은 밝은 부분을 찾을 수 있어야합니다. 그렇지 않으면이 프로젝트 경험이 점수를 잃을 수 있습니다.
  4. 결과를 얻었습니다. 많은 엔지니어는 결과가 아닌 프로세스 만 중요하게 생각하므로 바람직하지 않습니다.

3. 프로그래밍 기술 시험
우리 팀에서는 모든 기술 측면에서 적어도 하나의 프로그래밍 질문이 필요합니다. 한편으로 우리는 후보자의 코드 스타일, 우아함, 경계 조건에 대한 고려를 중요하게 생각하며, 이는 훌륭한 프로그래머가 갖추어야 할 자질입니다. 코드가 혼란스럽고 경계가 불분명 한 사람들에게는 프로그래밍 기술과 추구가 충분하지 않고 논리적 사고 수준도 부족하다고 생각할 것입니다. ** 이러한 후보자가 팀에 들어 오면 단기간에 버그가 많고 프로젝트 품질이 저하 될 수 있으며, 장기적으로는 협력 개발 및 프로젝트 상속에 도움이되지 않습니다. ** 반면 ** 우리는 데이터 구조, 알고리즘 등의 효율적인 구현을 매우 중요하게 생각합니다. 효율적인 프로그램을 신속하게 설계 할 수있는 능력은 응시자의 일일 심층 축적과 궁극적 인 프로그래밍 추구를 반영합니다. ** 얼마 전까지 만해도 일반적인 경우가있었습니다. 운영 및 유지 관리 학생들은 백엔드 모듈의 처리 성능이 온라인 상태가 된 후 수십 개의 QPS에 불과하다는 사실을 발견했으며 성능이 왜 그렇게 나쁜지 이해하지 못했습니다. 코드를 검토 할 때까지 "고전적인"문제, 즉 for 루프에서 sort를 호출한다는 사실을 발견했습니다 (몇 번의 함수 호출 임에도 불구하고). 간단한 최적화 후에 성능이 1 향상 될 수 있습니다. 규모의 2 배까지. 우수한 엔지니어는 가능한 한 이러한 문제를 피할 수 있으며 몇 줄의 코드를 최적화하면 사용자 경험을 개선하고 서버 비용을 절감하며 코드 유지 관리를 용이하게하고 형제의 작업량을 줄일 수 있습니다.
4. 논리 문제 또는 수학 문제

이러한 유형의 문제의 핵심은 그것이 얼마나 복잡한 지 또는 얼마나 많은 경험 배경이 필요한지가 아니라 논리가 명확하고 신중한 사고 인 한 대부분의 결과를 얻을 수 있다는 것입니다. 해결책. 몇 가지 예를 들어 보겠습니다.

  1. 6 자리 숫자가 시계 반대 방향으로 180도 회전했을 때 이전과 똑같을 확률은 얼마입니까?
  2. 변의 수는 3 * 4 격자인데, 왼쪽 하단의 A 지점에서 오른쪽 상단의 B 지점까지 걸어 갈 수있는 방법은 몇 가지입니까?

이런 종류의 문제는 실제로 매우 간단합니다. 재귀 (물론 다른 많은 방법이 있습니다), 확률 이론, 조합 수학, 심지어 하나의 "숫자"에 대한 답과 같은 프로그래밍 아이디어로 해결할 수 있습니다. 문제에 대해 생각하는 과정에서 응시자의 사고 습관을 볼 수 있고 응시자의 논리적 능력도 볼 수 있습니다. 또한 실제로 이러한 유형의 질문에는 많은 변경 사항이 있습니다. 응시자가 쉽게 답변을 완료하면 면접관이 적절하게 난이도를 높일 수 있습니다. 예를 들어 통과 할 수없는 3 * 4 그리드에 포인트가있는 경우 결과가 될까요? 이러한 유형의 주제는 단순 해 보일 수 있지만 실제로는 해상도가 매우 높아 후보자의 잠재력을 충분히 활용할 수 있습니다. 위의 소개 외에도 후보자는 경쟁 제품, 오픈 소스 프로젝트 등을 포함한 산업 상황을 이해해야합니다. 이것은 개인의 비전과 산업 통찰력 능력을 반영 할 수 있으며 개인의 학습 태도도 볼 수 있습니다. 그는 계속해서 지식 보유량을 업데이트합니다.

02   임원 얼굴

기술적 인면과 비교할 때 감독자 인터뷰는 기본 지식, 데이터 구조 및 알고리즘을 너무 많이 검토하지 않지만 대부분의 기술 감독자는 강력한 기술 배경을 가지고 있기 때문에 여전히 기술 프로세스에서 누락 된 부분을 다룰 것입니다 (인터뷰 일 수 있음). 경찰관이 확인하지 않았거나 응시자의 답변이 완벽하지 않을 수 있음) 보충 확인에 초점을 맞 춥니 다. 또한 감독의 얼굴의 핵심은 후보자가 기술 능력을 제외한 다른 차원에서 팀과 일치하는지 여부를 판단하는 것입니다. 첫 번째 유형의 치수, 부드러운 품질 능력. 부드러운 품질의 차원은 매우 풍부하며 모든 인터뷰 프로세스를 철저히 검토하지는 않지만 몇 가지 중요한 차원은 확실히 처리됩니다.

1. 논리적 사고.
기술적 인 논리 문제와 유사하게, 팀은 충분히 똑똑하지 않은 사람을 받아 들일 수 있지만 논리가 명확하지 않은 사람은 받아 들일 수 없습니다. 이 링크에서 후보자에게 매우 복잡한 문제와 같은 몇 가지 고급 주제를 제시하고 후보자가 분석 및 분해를 시도하여 겉보기에 지저분한 문제가 명확하고 달성 가능하도록 할 수 있기를 바랍니다. 또는 응시자가 가장 어려웠던 문제, 문제를 정의하고 분석하고 해결하는 방법에 대해 자세히 설명하도록합니다. 물론 직장에 처음 온 학생들이 이러한 질문에 완벽하게 답하기는 어렵지만, 2 년 이상 일한 학생들에게는 분석, 분해, 목표 설정, 계획, 실행이 문제는 모두 필요한 자질입니다. 이 능력은 직장에서 빠르게 발전하기 어렵고, 지난 10 ~ 20 년 동안의 지원자의 공부와 업무 경험을 통해 조금씩 쌓이는 능력이라 사회 채용을 위해서는 이미 좋은 실력을 가지고 있기를 바랍니다. 능력.
2. 의사 소통 능력.
효과적이고 효율적으로 의사 소통하지 못하는 것은 팀 프로젝트에 재앙입니다. 일상 업무에서 여러 반 친구들이 문제에 대해 논쟁하는 것을 자주 봅니다.하지만 사실 그들은 종종 서로의 대화의 요점이 무엇인지 이해하지 못하며 심지어는 같은 용어와 개념에 대해 일관성이없는 이해도 있습니다. 합리적이고 비효율적 인 의사 소통은 긴 회의로 이어지는 가장 중요한 요소입니다. 이 유형의 인터뷰 테스트는 일반적으로 프로젝트 소개 또는 디자인 질문에 첨부됩니다.

응시자가 이미 좋은 의사 소통 능력을 가지고 있다면, 우리는 일반적으로 설득과 영향력과 같은 고급 기술도 검토합니다. 이것은 기술 / 프로젝트 리더가되기 위해 필요한 능력입니다. 면접관은 후보자가 면접관이 특정 관점 또는 기술 제안을 수락하도록 설득 할 수 있기를 바라면서 후보자와 짧은 가상 커뮤니케이션 또는 토론 세션을 가질 수 있습니다. 물론이 과정에서 면접관의 악당은 극단적 인 어휘와 행동을 사용할 수 있습니다. 한편으로는 응시자의 의사 소통 능력과 설득력, 영향을받는 능력에 따라 달라지며 다른 한편으로는 스트레스 테스트이기도합니다. 반응은 충분히 전문적입니다. 창의성.

과거 프로젝트에서 전통적인 방법의 단점을 발견하고 문제를 해결하기 위해 새로운 방법을 시도하고 성공을 거둔 경험에 대해 알려주십시오. 이러한 유형의 주제는 매우 개방적이지만 안타깝게도 제가 인터뷰 한 후보자의 거의 절반이 잠시 생각한 후 "아무것도"라고 대답하지 않았습니다.

물론, 한편으로는 후보자가 매우 겸손 할 수 있지만 다른 한편으로는 후보자가 혁신을 시도하지 않았을 가능성이 매우 높습니다.

인터넷 산업에서 혁신은 모든 것의 원천입니다. 정말로 "아무것도"가 없다면 어떻게 제안할까요?

두 번째 차원은 문화적 가치입니다.

엔지니어 문화는 실용적이고 자기 주도적이며 후속 조치 (끝까지, 시작 및 끝까지)입니다. 화려하고, 영감을주지 않고, 모든 것에 책임을지지 않고, 프로젝트를 끝까지 따라갈 수없는 후보자는 우리의 파트너가되기가 어렵습니다. 사실 이러한 차원에 대해 이야기 할 경험이 많지 않은데 회사마다 고유의 문화적 유전자가 있고 후보가 그와 일치하는지 여부는 유전자와 환경에 의해 결정됩니다. 나는 개인적인 관점에서 가장 중요한 콘텐츠에 대해서만 이야기 할 것이며, 그렇지 않으면 반대 투표를 할 것입니다. 낙관적이고 긍정적입니다. 누구나 긍정적 인면과 부정적인면이 있음을 인정해야하는데, 전문적 사고는 가능한 한 긍정적 인면을 보여주고 부정적인면은 최소화하는 것입니다.

일상 업무에서 모든 사람은 얼굴을 찌푸리고 불평하는 동료 그룹을 만나기를 원하지 않습니다. 협력을 잘한다. 동급생이 우리 팀에 합류 할 때 그는 뛰어난 개인 능력이 있어야 할뿐만 아니라 다른 사람들과 협력하여 1 + 1> 2의 효과를 얻을 수 있어야합니다. 과거 경험에서 협력에 대한 후보자의 태도, 여러 역할 또는 팀에 걸친 더 복잡한 협력에 노출되었는지 여부, 어떤 협력의 어려움이 있었는지, 그러한 어려움을 해결하는 방법을 검토 할 것입니다. 일부 후보자들은 종종 프로젝트 개발 과정에서 여러 사람이 코드를 작성하지만 요구 사항 동기화, 설계, 인터페이스 협상, 공동 디버깅이 필요하며 버그 수정을 촉진하는 것이 매우 번거 롭다고 무의식적으로 표현합니다. 혼자 개발하면 해결됩니다. . 이런 생각은 이해할 수 있지만 모든 사람이 더 많이 볼 수 있기를 바랍니다. 대규모 프로젝트는 한 사람이 완료 할 수 없습니다. 다 인간 협력의 맥락에서 협력의 효율성과 품질을 향상시키는 방법이 초점입니다. 너무 많은 관심을 기울이지 않습니다. 궁극을 추구하십시오. 이것은 어렵습니다. 내가 보낸 많은 제안 중이 수준의 후보자는 거의 없지만 그들이이 수준을 가진 한 거의 확실하게 제안을 할 것입니다. 물론 궁극을 추구하는 것은 고집을 부리는 것과는 다릅니다.

03 요약

면접에는 많은 지식이 있고, 제가 말할 수없는 부분도 많이 있습니다. (예 : HR 등 말을 많이 할 수 없습니다. 가장 긍정적 인면을 보여주세요). 가족의 관점에서, 간단히 말해서 이것들이 있으면 저에게서 만족스러운 제안을받을 수있을 것입니다.

더 많은 학습과 토론을 원하시면 지식 지구에 참여해 주셔서 감사합니다!

우리와 함께하려면 여기를 클릭하십시오!

그룹에는 일선 기술 전문가와 소규모 공장 또는 아웃소싱 회사에서 일하는 코드 농부가 많습니다. 우리는 동등하고 고품질의 Android 커뮤니케이션 서클을 만들기 위해 최선을 다하고 있습니다. 모든 사람이 단기적으로는 비약적인 기술 발전을 이루고 있으며, 장기적으로는 비전, 패턴, 장기적인 발전 방향이 가장 중요합니다.

% 81.md)

그룹에는 일선 기술 전문가와 소규모 공장 또는 아웃소싱 회사에서 일하는 코드 농부가 많습니다. 우리는 동등하고 고품질의 Android 커뮤니케이션 서클을 만들기 위해 최선을 다하고 있습니다. 모든 사람이 단기적으로는 비약적인 기술 발전을 이루고 있으며, 장기적으로는 비전, 패턴, 장기적인 발전 방향이 가장 중요합니다.

공부를 외롭지 않게 해줄 2000 명 이상의 친구들이 있습니다 ~ ·

추천

출처blog.csdn.net/fanzhang_vip0723/article/details/114260535