How do programmers solve their midlife crisis? Android Framework learning route guide, hang the interviewer series!

foreword

The reason why our programmers are worried about being laid off at the age of 35 is because our experience and capabilities do not match. The current situation of domestic IT, most programmers work in outsourcing companies, the framework is aging, the code is written to complete the task, and the requirements have just been determined You make half of the product and suddenly let you change your needs... everything, causing you to repeat basic additions, deletions, modifications, and simple business processing every day. The people around you are not as good as you or even worse than you, and you can’t find a direction to improve Myself, day after day, although you have been working for a long time, you still don’t know anything about the code at a deeper level, you can’t understand the source code, you can’t write good code, you know everything you should know, whether you should or you won’t , It was like this three years ago, and it is still like this three years later, nothing has changed.

One side (104min)

  • Self introduction.
  • Difference between thread and process.
  • thread safe. The interviewer asked if he understood the volite keyword, but Xiao Jin forgot to answer it. The interviewer asked if he knew about spin locks, optimistic locks, pessimistic locks, etc. Xiao Jin replied that he knew but had never used it.
  • What is the implementation of http.
  • The difference between TCP and UDP.
  • Why TCP is reliable. Pay attention to the algorithms involved in the congestion mechanism (slow start, congestion avoidance, fast retransmission, fast recovery).
  • Difference between Get request and Post request. Note that the Get request is more efficient than the Post request. The Post request requires the server to return 100 before sending the data for processing. The Get request is directly through the URL. The interviewer asked if he knew other request methods, Put, Delete, Head.
  • In the project, I asked an A Activity to jump to a B Activity, move through the life cycle, and click Back to return. What if an A Activity is transparent? What if B Activity is a Dialog? The interviewer asked about the life cycle of horizontal and vertical screen switching, and whether he understood onConfigurationChanged.
  • HashMap source code, expansion conditions.
  • There are two algorithms, one is to merge two ordered linked lists, and Xiaojin wrote it with the idea of ​​merging, sorting and merging process (using IDE for a long time, there are many mistakes, but the interviewer is very patient to help me correct them). One is the way of thinking, outputting the words in a piece of text in reverse order, mainly examining the knowledge of data structures, using stacks and queues.
  • Ask about Xiaojin's basic situation, internship time, etc.
  • Rhetorical questions: In fact, I didn’t ask. The interviewer suggested that Xiaojin should have a deeper understanding of common knowledge, read more source codes, use Notepad to write more codes, and read more about basic data structures and algorithms.

Two sides (57min)

  • Self introduction.
  • The difference between Android static library and dynamic library.
  • Binder mechanism in Android.
  • Communication between Android processes.
  • Talk about spin locks, internal implementation.
  • Asked about thread synchronization, Xiaojin said sychroized again, or refer to that blog.
  • Do you know Java's atomic, and many low-level things, I can't remember, and most of them have not been answered.
  • Algorithm problem: To find the shortest path from the starting point to the end point of a rectangle, you can only go right or down. This is a simple dynamic programming problem.
  • Ask about Xiaojin's basic situation, internship time, etc.
  • Rhetorical questions: Ask Xiao Jin which part of knowledge he needs to improve if he wants to join, and the interviewer suggests participating in more actual projects.

Three sides (40min)

  • Self introduction.
  • Difficulties in the project and their solutions. What Xiaojin said is to use addView to achieve the effect of the pop-up box, but it takes a long time. Later, I learned about Fragment and used Fragment instead of addView. The interviewer asked if he could analyze why it was so slow, and Xiao Jin talked about the drawing process of Android's Activity->PhoneWindow->DecorView->ContentView->WindowManager->RootViewImpl. The interviewer continued to ask about the type of ANR, the reason and the method of investigation. The interviewer continued to ask about the difference between Fragment and Activity and the advantages of Fragment.
  • Talk about how to use multithreading in Android. The interviewer pressed on how to stop a thread.
  • The principle of Handler. Looper, MessageQueue, Message. The interviewer asked about sending a message to another Handler in one Handler, but Xiao Jin didn't really understand it.
  • Java memory, search algorithms for recycling: reference counting and root search algorithms.
  • Algorithm question: Reverse the order of a 32-bit int integer, Xiaojin uses rounding and subtraction to obtain each bit and save it in the linked list, and then reverse the linked list.
  • Inquire about Xiaojin's basic situation, internship time, career planning, etc.

Hr plane (20min)

  • Self introduction.
  • Inquire about Xiaojin's basic situation, internship time, career planning, etc.
  • A verbal offer was given.

learning sharing

In the current era of information sharing, many resources can be found on the Internet, it just depends on whether you are willing to find it or how to find it, right?

It’s not that many friends don’t have information, most of them have tens or hundreds of Gs, but they are disorganized, I don’t know how to read them, or even forget them after reading them.

If you feel that the information you find on the Internet is very messy and unsystematic, I will also share a set with you. It is more systematic, and I usually study it myself.

"Android Framework refined kernel analysis"

Scan the complete document content for free!

Table of contents

imgimg

The first chapter in-depth analysis of Binder

​ ● Section 1 Binder Series - Opening

​ ● Section 2 Binder Driver Preliminary Study

​ ● Re-exploration of Binder Driver in the third section

​ ● The fourth section Binder starts ServiceManager

​ ● Section 5 Get ServiceManager

​ ● Section 6 Registration Service (addService)

​ ● Section 7 Get Service (getService)

​ ● Section 8 Framework layer analysis

​ ● Section 9 How to use Binder

​ ● Section 10 How to use AIDL

​ ● Section 11 Binder Summary

​ ● Full Analysis of Binder Interview Questions in Section 12

img

Chapter 2 In-depth Analysis of Handler Message Mechanism

​ ● Section 1 Macro Theoretical Analysis and Message Source Code Analysis

​ ● Section 2 Source Code Analysis of MessageQueue

​ ● Section 3 Looper source code analysis

​ ● Section 4 Handler source code analysis

​ ● Section 5 Summary of the Implementation Principle of the Handler Mechanism

​ ● Full Analysis of Handler Interview Questions in Section 6

img

Chapter 3 Dalvik VM Process System

​ ● Section 1 Android System Start-Overview

​ ● Section 2 Init

​ ● Section 3 zygote

​ ● Section 4 SystemServer Part 1

​ ● Section 5 SystemServer Part 2

img

Chapter 4 In-depth analysis of WMS

​ ● Section 1 WMS Overview

​ ● Section 2 The Birth of WMS

img

Chapter 5 PackageMS Startup

​ ● Section 1 PackageMS related framework classes

​ ● Section 2 PackageMS startup process

img

Chapter 6 AMS Interview Topics

​ ● Section 1 AMS

img

Guess you like

Origin blog.csdn.net/Android23333/article/details/130388624