After three years of Android development, I had no choice but to go out of business and lose my position. It is very important to start again and find the right "big factory attack strategy"!

img

background

In recent days, I have seen some netizens posting their interview experience. Some of them successfully got the offer, and some of them failed the interview. Next, let's look at some setbacks and confusions encountered during job interviews after Android development for about 3 years.

1. Android development, the small start-up company that I have been working for for 3 years suddenly disappeared. Where can I find my "pit position"?

Let me introduce myself first. I am currently working in a small start-up company, and I have been there for more than 3 years, and the salary is average. Because the company is also transforming in recent years. Work experience can be roughly divided into 3 stages.

The first stage is to start android app development from entering the company, whether it is outsourcing or the company's main product.

The second stage is ROM development. Due to the small scale of the company, apart from the hardware and underlying things, basically one person is responsible for the modification, compilation, and release of the entire ROM (a certain ROM based on MTK, and then do some "weird" customizations at the android framework level).

The third stage is the present. The sales of mobile phones adapted to the previous ROM did not meet expectations, and the company no longer plans to invest more, basically doing simple maintenance. And the new task I was assigned was to do some things in machine learning, such as Tensorflow, OpenCV for image processing , training and so on.

My evaluation of myself:

The Android app development ability is average, but it is good enough for general app development tasks (because it is true that I have not done the app development of the company's official project for a while, but it does not mean that the skills have been abandoned);

Know more about Android frameworks than ordinary developers;

The ability to solve problems and learn and practice new technologies is good (whether it is from compiling AOSP for the first time to the development and release of the entire ROM later. Or from being completely unfamiliar with machine learning to being able to describe common machine learning algorithms and using Tensorflow to achieve some of these requirements).

Speaking of yesterday's interview, the interviewer asked questions almost one by one according to the Android interview questions he had prepared. Such as: View customization, handler mechanism, memory leaks, etc. My performance made me very dissatisfied. I could answer most of the questions he asked, but the language I organized and the results of the description were not satisfactory. Most of it is because of my own ability to express myself. I think I can answer these questions more calmly if they are written test questions. What I am looking forward to more is the description of my own project experience. Because this is where I am different from other candidates. The interviewer didn't ask me about the project experience on my resume at all. Although in the end I insisted on talking about it myself, the interviewer was not interested, and what I said was very dry. That's it for the final interview.

My own thoughts: I wasn't prepared enough to answer these "Android Standard Interview Questions" cleanly . At least these basic questions should be able to be explained clearly in a sentence or two. It did not reflect the difference between myself and other applicants at all. I think I can do a good job of development faster and more stably, I can study the framework and source code in depth, and solve some difficult problems, but how can I make the interviewer think the same?

2. I have been working on Android for three years, and the company can no longer pay wages, what should I do?

The coordinates are in Chongqing, and I have been working on Android for more than three years. The company I came to after graduation, because the wages could not be paid (recently, the wages from three months ago have been paid in installments), so I started to look for a way out.

But I found that there is really nothing to write in the resume. Before, an old man in the group said every day that he wanted to recruit people. Then I asked for a so-called reference material.

I saw that the other party wrote that he had contributed code to aosp...leading the group or something...

As a brick mover, where did this experience come from?

So let me ask you guys, how do you write your resume.

img

Next, let me talk about my personal opinion

Regarding the last sentence of the first netizen, "I think I can do a good job of development work faster and more stably, I can deeply study the framework, source code, and solve some difficult problems, and how can I make the interviewer think so?"

His confusion lies in how to show his highlights to make up for his shortcomings (insufficient preparation for interview questions). This is knowledge, and I think it is far beyond the meaning of your memorizing questions:

1. Regardless of whether we are doing front-end/back-end/framework/underlying hardware/algorithms, what we serve is ultimately a mobile app. So we must have a finished App as a display (not a demo). This impresses him more than a nonsense that confuses the interviewer (the lower the opponent's level, the more effective this is). It is best to have a competing product for comparison at the same time, highlighting the advantages (of course you choose the competing product yourself). If the other party starts to ask how we achieved it. This is our home field.

2. We must have expertise other than App development. The above-mentioned netizen mentioned TF, which can be used

3. We also need interview rehearsal. If there is no one to ask and answer, it is better if someone cooperates with our words. The purpose is to speak clearly. It's easy to say, but many first-time interviewers can't even speak well. This directly affects people's first impression. For technical interviews, more attention should be paid to the use of words. It is better to use with 1

Do you want to brush the questions/memorize the interview questions? I think it is necessary. (The above is a case of insufficient preparation)

1. The interview is more practical, and it can also be used as a temporary response reserve. 2. Show your attitude. "Spend a lot of time memorizing the questions" itself is the emphasis on the interview, as for the effect, it is another matter. 3. Check and fill in the gaps in the knowledge you have, and consolidate and deepen it. No matter how you look at it, it's a good thing. If the interviewer sees that you are brushing the questions and thinks that brushing the questions is a bad point, it means that his realm is too narrow.

Android technology development. From the perspective of the talent market, it is really top-heavy (front-end) and light-footed (back-end), and it is normal to have this kind of embarrassment. And the three years of technical experience of the above-mentioned netizens, I think the field of vision should not only be limited to Android.

About Resume

Basic information part:

1. You can write your name, contact number and email address at the head of your resume. (eye-catching, let others see at a glance when they want to contact you). 2. Target position: clear, don't be vague, it is best to fill in the recruitment position issued by the company (the general effect of Haitou is not good) 3. Career intention: such as: business function module development, or architecture design. 4. Target salary: You can write a face-to-face discussion, or you can write a target monthly salary (preferably based on the scope).

Work experience, education experience:

If it is 985 and 211 institutions, it can be written after the basic introduction and before the work experience. If it is a general undergraduate or junior college, you can pass it along later.

Work experience: write based on work experience, with as much content as possible. Write down what you are specifically responsible for or involved in. Usually a project contains the following modules:

1. Participate in system analysis and design 2. Development of functional modules (what functions can be specified here); 3. Modification of functional defects 4. System maintenance (system problem handling, system upgrade) (all projects will be used)

professional skill:

If you have one or two years of work experience (or one or two years of writing experience), you can probably introduce the basic skills.

It is best to emphasize outstanding skills in a targeted manner according to the requirements of the positions recruited by the company, and you can also emphasize the technologies you are good at. Avoid writing a lot of technical names, so that others can see that they came out of the training class.

Project section:

1. First introduce the environment: such as using Jetpack + glide + OKHTTP, etc.) 2. The project description part: keep it simple and keep it in two to three lines. The interviewer basically knows what the project name is, and generally doesn't look at it carefully. 3. Focus: The more detailed the responsibility description, the better.

Technical Description:

Indicates the technical highlights used. Use with caution if you are not confident in your skills. Generally, the interviewer will directly ask questions on this part. But if you do have work experience, you can summarize some new and difficult technologies used in your work. This is a bonus question.

img

Android development direction

Many people think that the depth of Android technology is not deep, the technology stack is not huge, and the career development of Android is limited. This is really a big misunderstanding.

Let me talk about technology first. The Android technology stack has become larger and larger with the passage of time, and there are more and more subdivisions, mainly including Android application development, reverse security, audio and video, Internet of Vehicles, Internet of Things, mobile phone development, and SDK development.

Besides, in terms of career, it is true that Android application development is difficult to be promoted to CTO. The general CTO is mainly the back end. This is mainly due to two reasons:

1. The back-end technology stack has matured very early. When I switched to Android development 8 years ago, the 30-year-old Java developers were already very good. As time goes by, the number of back-end technology experts is far greater than that of Android experts. They are also more powerful. When they were technical managers, we were still moving bricks. 2. The back-end can indeed coordinate the overall situation, which is an important position in the company's business.

But we overlooked the most important point. If we are in the back end, can we be CTO? I think it is also very difficult, so don't just focus on the high place, first think about how far you can reach, it is unreasonable to say that the scenery below the mountain is not open when standing halfway up the mountain.

How to improve your own competitiveness

select a segment

There are many subdivided fields for Android. The aforementioned ones include application development, reverse security, audio and video, Internet of Vehicles, Internet of Things, mobile phone development, SDK development, and smart TV box development, etc. Choose one of these fields and continue to deepen. For example, audio and video, when I first started Android 8 years ago, audio and video made a lot of money (on the PC side), and the salary was ridiculously high. Now on the mobile side, audio and video are not as profitable as before, and Framework development is a good choice.
Try to learn knowledge with a long half-life

The half-life of knowledge refers to: as the knowledge update cycle becomes shorter, the speed of knowledge fission accelerates, a cycle in which knowledge becomes obsolete. Professions with a long half-life of knowledge are more valuable as they get older, such as English teachers and surgeons, whose knowledge is updated slowly and almost never becomes obsolete. This is absolutely incomparable to our programmers. The half-life of most of our knowledge is relatively short, and a framework may be eliminated in just a few years. This also leads to the need for programmers to continuously learn new knowledge, and each of us has limited time and energy. Therefore, according to the half-life of knowledge, it is particularly important to learn strategically.

img

The above half-life diagram is not completely accurate, but it is worth referring to. If you are in other technical fields, you can also refer to this half-life diagram. This picture does not tell us not to learn RN and small programs, but to learn knowledge with a long half-life as much as possible based on our own work.

Do subtraction, try to specialize in one technology

In today's society, the technical division of labor is becoming more and more detailed, and the finer it means that most enterprises (except for small workshops) need specialized talents (preferably proficient in one discipline and multiple disciplines). You will find that most of the technical people who stand out around you rely on one technology, but it is rare to see a bunch of technologies that are not proficient. For example, in the world of martial arts, masters will show their martial arts at the same time in the duel. If the housekeeper is not good at martial arts and is abused every minute, there is no need to use the remaining martial arts to make a fool of yourself. Reminiscent of the real version, I went to a big company to interview Android. As a result, I didn’t know much about Android technology and was abused in various ways. The interviewer was not interested in understanding the remaining front-end technology, back-end technology, python, etc. So it's not that the more skills you know, the better. You must do subtraction well, specialize in one skill first, and then learn other skills.

Talk about the hot technology of Android

The hot technologies related to Android have also appeared frequently in recent years, and I just refresh the screen when I have nothing to do. Let me talk about my views on these hot technologies.

  • Kotlin, judging from the half-life of knowledge, this language is very worth learning, but it is still very difficult to popularize it, because Kotlin has not yet shown the competitiveness that must be used, and the cost of using it in many enterprises is relatively high.
  • Flutter, from the perspective of the half-life of knowledge, this framework will not exist for a long time. At present, some companies with technical reserves are trying to experiment. If the company’s technical reserves are not enough, it is obviously not very wise to rashly act as a guinea pig.

Both of these technologies are recommended for everyone to learn, but don’t expect them to give you too much competitiveness. Li Si can learn it in a week, and Zhang San can do the same.

  • Framewrok has been the first choice for Android development from the beginning to the end. In the past, application development was too popular, and Framewrok was difficult to learn, so not many people entered the industry.
    But now the market for application development is saturated.

Now big companies need developers to have a deeper understanding of the Android system, so that they can develop more stable and efficient applications. Therefore, Android Framework development experience is becoming more and more important in the job hunting process.

end

Finally, share a study material,

Due to the large content of the article and the limited space, the information has been organized into a PDF document. If you need a complete document, you can add WeChat to get it for free!

"Android Framework Source Code Development Secret"

This learning manual deeply analyzes the Android system source code, explains in detail the initialization process of the Android framework and the working principle of the main components, and aims to introduce the core concepts and technologies of the Android Framework through examples and cases, so as to help developers better understand the design and development of Android applications.
This manual is suitable for programmers with certain experience in Android application development, hoping to help developers better understand and master this technology through in-depth study of Android Framework.

insert image description here

Chapter 1 System Startup Process Analysis

The complete startup process of the Android system can be divided into three stages: the Linux system layer, the Android system service layer, and the Zygote process model from the perspective of the system level; knowledge points: the first section Android startup
overview
,
the second section init.rc analysis,
the third section Zygote, and
the fourth section Interview questions

insert image description here

"The most detailed Android version of kotlin coroutine entry advanced combat in history"

Table of contents

insert image description here

Chapter 1 Introduction to the Basics of Kotlin Coroutines

  • 1.1 What is a coroutine
  • 1.2 What is Job, Deferred, and coroutine scope
  • 1.3 Basic usage of Kotlin coroutines

insert image description here

"Flutter technical analysis and actual combat, family bucket learning materials"

Table of contents

insert image description here

Chapter 1 Why Flutter is the ultimate choice for cross-platform development

  • 01 Why is this?
  • 02 Cross-platform development
  • 03 What is Flutter
  • 04 Flutter Features

insert image description here

Guess you like

Origin blog.csdn.net/Gaga246/article/details/131680567