Author: developerHaoz
First, LET’s talk about my own situation. I am a senior student majoring in computer science and have joined the Android development team of the college’s entrepreneurial team since I was a freshman.
Shortly after the Spring Festival last year, I began to apply for my resume. I applied to Tencent, Ali, Meituan and CVTE, and got internship offers from Tencent, Ali and CVTE. Finally, I chose Tencent, which was a satisfactory end to my first job hunting journey.
I became a regular employee from internship last September.
This article is a summary of last year’s spring recruitment, mainly to share my own preparation for this spring recruitment and some experience and thinking in the interview process, because this year’s spring recruitment practice will also start, so I share it, I hope it can help you find some internship.
Spring recruitment runs from March to June, and phone interviews can start as early as February, which means you have to do all your review work before February if you want to get a good offer.
First, I would like to talk about my previous planning. In order to prepare for this spring recruitment, I began to prepare for the review half a year in advance. The review stage is mainly divided into three parts:
-
Learn what you know you won’t
-
Comprehensive learning, building their own “knowledge system”
-
Learn what you don’t know you can’t do
1.1 Learn what you know you won’t
In fact, in the development process, there are always some things that I want to learn, but because of the pressure of the project or other reasons, and then I plan to learn later, that is, the so-called “I know I can’t” knowledge.
Such as:
-
Some commonly used frameworks, such as client network request, image loading framework
-
Source code for commonly used classes and collections, such as ArrayList, LinkedList, HashMap
-
Concepts that I felt I couldn’t articulate, such as “memory leak”, “Java concurrency”
This stage is a stage of their current knowledge system, you have to do, is the whole list of their own things, and then one by one to break.
At this stage, it is best to express what you have learned “in your own language” through the form of a blog. If you can speak clearly and completely with your own understanding, and even let others understand what you say, it is basically no problem.
But if you can’t form a clear concept in your mind, it shows that you don’t understand it enough.
And now a lot of companies will be “blog” as a plus point, a resume is not how many things, but if you have a long-term maintenance of the blog, the interviewer can more clearly understand you through your blog, but insist on itself is a not easy thing, the interviewer for people who can stick to write blog also will be more good feeling.
1.2 All-round learning to build our own “knowledge system”
In fact, many people learn a lot in the process of learning technology and daily development, but few people will systematically review, so as to build their own knowledge system, so that many knowledge points they have learned can not be better connected, and may lead to a knowledge point soon forgotten.
So how do we construct our “body of knowledge”?
The so-called “knowledge system” in Android, I think, mainly includes the following parts:
-
Java and android basics
-
Computer network
-
The operating system
-
Design patterns
-
Data structures and algorithms
That is to say, we need to gradually break down these parts and gradually improve our knowledge system. This stage takes the most time and energy, but sticking to it will make our foundation more solid and build our knowledge system to the maximum extent.
Here I recommend a very good source: The Android School Recruitment Interview Guide
https://lrh1993.gitbooks.io/android_interview_guide/content/
1.3 Learn what you don’t know you can’t do
This title may make you wonder a little, how can you learn something that you don’t even know you don’t know?
This is where interview questions come in. “Programming for interview questions” is actually a very good way to fill in gaps and strengthen your programming foundation.
When you’re doing interview questions, you’ll come across a lot of weird questions, many of which are questions that you “haven’t seen before” or “have seen but haven’t thought about”.
These interview questions can be uncomfortable at first, but they can also maximize our understanding of the connections between knowledge and trigger thinking about specific application scenarios.
Of course, what is more important is that we can brush the interview questions of major Internet companies in the past years, so that we can have a general understanding of the interview questions of the company and also know some routines and practices of the interviewer in advance.
Here are some of the interview materials I’ve read and found to be great:
Android Interview Guide
https://xiaozhuanlan.com/android-interview
AndroidInterview-Q-A
https://github.com/JackyAndroid/AndroidInterview-Q-A
Android LearningNotes
https://github.com/francistao/LearningNotes
Android interview
https://www.jianshu.com/nb/3450453
First of all, it should be emphasized that the most important thing to get a satisfactory offer is to improve my programming ability, especially the foundation of computer, which is required in every round of technical interview. No matter how high your interview skills are, they are useless without sufficient competence.
However, there are a lot of things to be aware of in an interview, and there are even some general rules of thumb.
Only by mastering some necessary interview skills can we show our real level to the maximum extent in front of the interviewer, and even play beyond our normal ability, so as to get a satisfactory offer.
2.1 Find your interest and cultivate it into your Swiss Army knife
In the process of learning Android, in fact, everyone has their own interests different from others. For example, I have great interest in the knowledge of “Android network” and “picture loading”.
If you want to stand out in an Android interview and get the job offer you want, it’s essential to have a skill that’s “better than most people,” which is what makes you best.
At the beginning of the second Ali technology interview, the interviewer said, “The last round of interviewers have asked a lot of questions about the project, so tell me what you think is the best thing you learned from Android.
When I heard this question, I felt very happy, because I had spent a lot of time and energy in learning “Android Network” and “picture loading”. I was quite confident about these two aspects, and finally passed the technical interview of Ali.
The above example illustrates the importance of having certain technical skills. Many times in an interview, the interviewer will focus on what you can do rather than what you can’t do.
And the depth of the technology is more important than the breadth, if you are in a certain aspect of the study than deep, very own experience and experience, even the interviewer in this aspect can not ask you, through the success rate of the interview will greatly increase.
2.2 Write all knowledge points into corresponding verbatim draft
In the daily Android development and learning process, I believe that many people will think that we have learned things they have understood, but really in front of the interviewer, when the interviewer asked questions, but do not know how to “complete”, “clear” expression.
My own solution to this problem is to make verbatim notes of all the knowledge points we might encounter during an interview.
The verbatim draft here has three main points:
-
Must be their own summary and experience
-
Combine your own development and project experience
-
Be able to read fluently
The purpose of writing verbatim draft is to let us in front of the interviewer can “complete”, “clear” expression of our grasp and understanding of knowledge, so we must use “own language” to write out their own summary and experience, only in this way we can remember more firmly.
After writing the verbatim draft, we can try to read it aloud and see if it can be smoothly read out. If there are some awkward or awkward sentences in the middle, we can gradually improve it.
Here, I use the question “Tell me about your understanding of processes and threads” to elaborate, which we might have just said if we hadn’t prepared the corresponding verbatim draft beforehand:
Thread is the smallest unit of CPU scheduling, and thread is also a limited resource. A process is a “container” for threads, a program or application on PCS and mobile devices. A process can contain multiple threads.
And that’s it, that’s it, that’s it. Answer the question in 20 seconds, and the interviewer will probably tell you to call it a day.
Here I share my own verbatim draft of “processes and threads” for your reference.
Processes and threads
Follow the description in the operating system. Thread is the smallest unit of CPU scheduling, and thread is also a limited resource. A process is a “container” for threads, a program or application on PCS and mobile devices. A process can contain multiple threads.
process
When an application is first started, Android starts a Linux process and a main thread.
By default, all components of the same application run in the same process. If we need to control the process to which a component belongs, we can do so in the AndroidManifest file.
The process in which the component runs is specified in the AndroidManifest file. The Activity, service, Receiver, and provider all support the Android: Process attribute, which specifies the process in which the component should run. We can set this property so that each component runs in its own process.
Priority of the process
The Android system will hold on to application processes as long as possible, but in order to create new processes or run more important ones, the old processes will eventually need to be removed to reclaim memory. To determine which processes to keep or kill, each process is placed in an “importance hierarchy” based on the components that are running in the process and the state of those components. If necessary, the system first eliminates the least important processes, then the relatively more important processes, and so on, to reclaim the processes.
There are five levels of importance hierarchy
Foreground process — Foreground Process
Visible process — Visible process
3, Service process – Service process
4. Background processes – Background processes
5. Empty process – Empty Process
thread
Thread is a very important concept in Android. In terms of usage, thread is divided into main thread and sub-thread. The main thread is used to “run the four major components and deal with their interactions with users”, while the sub-thread is used to “execute time-consuming tasks, such as network requests and I/O operations”. If a time-consuming operation is performed on the main thread, the program will not respond in a timely manner. Therefore, time-consuming operations must be performed in child threads.
Thread patterns in Android
In addition to threads themselves, there are many other functions that can play the role of threads in Android, such as AsyncTask and IntentService, and handlerThreads are also a special type of Thread.
While AsyncTask, IntentService, and HandlerThread all “behave” differently from traditional threads, they are essentially traditional threads.
I’m sure the interviewer will be pleased if you can articulate your understanding of processes and threads in conjunction with the Android knowledge as I did in my verbatim draft above.
I have attached my own verbatim draft list, and you can follow this classification to create different verbatim drafts of your own “body of knowledge”.
2.3 Do not understand the interview questions directly answer do not understand, but it is best to bring the interviewer’s ideas to what we will
During the interview, don’t pretend to know what you don’t.
We are interviewing for technical positions. The interviewer only needs to ask a few questions to know. If the interviewer asks you a certain knowledge point, you just have a little impression or do not know much about it, you can directly answer that the knowledge is not very familiar. If not, the interviewer will slap you in the face with a few more questions.
Of course, after saying that I am not familiar with this knowledge, you can try to bring the interviewer’s interview ideas to the things we will know. For example, when I met ali in the second interview, the interviewer asked me whether I had used B tree, because I am not familiar with B tree, so I said like this: “Not very familiar with B tree, but before reading HashMap source code, have studied red black tree, red black tree is more familiar.” I managed to redirect the interviewer’s questions to the source code for red-black trees and HashMap that I was familiar with.
2.4 Consciously exercise your communication and expression skills
If you want to get a satisfactory offer, besides excellent technical strength, good communication and expression skills are also very important.
No matter how strong your strength is, if you can’t express it well, it’s in vain. Communication and presentation skills require a long period of “deliberate practice” and there are no shortcuts.
In fact, in my freshman year, my communication and expression skills were also quite poor, but later I began to understand the importance of this ability, so I would “deliberately practice” this skill on many occasions.
In addition, I became the leader of the team later, and I was required to give speeches or share things internally on many occasions. In addition, I was fond of playing “Werewolf Killing” later, so my expression ability has been greatly improved in the past two years.
2.5 Make a review after each interview and record the questions in detail
After each round of interviews, don’t be in a rush to relax or take a break. Take out a memo detailing “all” of the questions the interviewer asked. Find a quiet place to take time to reflect on any areas of the interview that you didn’t perform well or need to improve.
Every interview is a very valuable experience and wealth, want to undertake according to the interview after the interview, find out we are not enough good place in the interview, and then pointed to improve, and collected during the interview answer not to come out of the interview questions, we have to review, sometime the next round of the interview you last round of the interview is not the problem, And there’s a good chance that interviewers will be communicating with each other and your performance will be passed on to the next interviewer.
In order to get a satisfactory offer, “persistence” is the most important, apart from efforts and persistence, all other methodologies are useless.
Any industry is not easy, only continuous “effective” efforts, can go further. The above is my spring recruitment interview for some experience and experience, I hope to help you.
You might like it
About old Liu and code farmer turn over
I’m a thread
I’m a Java Class
Object-oriented Bible
TCP/IP daming postman
CPU forrest gump
I am a network card
I’m a router
A story over HTTPs
The pinnacle of programming languages
Java: The Birth of an Empire
JavaScript: A loser’s counterattack