These experiences are my sweat and tears in the last four months, from preparing for the interview to finding a suitable job. I hope they can be helpful to you!
- Define job hopping
- Questions to consider before jumping ship
- What if the money doesn’t arrive
- Heart grievance how to do
- Thoughts before leaving
- Determine what you need to do to prepare for departure
- What’s the market like
- Android job-hopping needs to review the knowledge
- Basic knowledge of
- Advanced knowledge
- Different companies focus on different things
1. Define job-hopping
First consider this question: What do you think job-hopping involves?
/ * * * * * * * * gorgeous lili line begin * * * * * * * * * * * * / / * * * * * * * * think about 3 seconds and then downwards see * * * * * * * * * * * * / / * * * * * * * * gorgeous lili line end * * * * * * * * * * * * /Copy the code
Recently, it is the “golden three silver four job-hopping season”, many friends want to job-hopping, but the understanding of “job-hopping” may be limited to “resume writing, interview”.
I thought so too before I jumped ship.
At that time, my work was not going well, and I happened to see a company’s recruitment in a group, so I sent my resume to the group. After the interview, I felt good, but I was slapped in the face and rejected by the company, because I wanted too high salary.
Upon reflection, I realized that I had prepared too hastily, or not at all, just wrote a resume and went for an interview. During the interview, I could not answer the details of some projects, and I did not answer many knowledge points well, which made people feel that they were of average level.
In the following months, I began to look up various materials related to job-hopping and interview, and sorted out key review points to learn step by step as planned.
Two weeks ago, I felt that I had learned almost, and the situation of the company was basically clear, so I decided to leave.
Therefore, I wrote, sent and interviewed my resume. I met with five different companies and got five offers. Finally, I chose the one that is most suitable for me at present.
In this process, MY understanding of “job-hopping” gradually deepened.
At first glance, “job-hopping” means writing a resume and changing jobs. However, there are a lot of things you need to think about and prepare in order to get a satisfactory offer.
- Think carefully before you jump ship
- Master the knowledge needed to change jobs
- Write a high-quality resume
- Know when and how to send your resume
- Do your homework when you get an interview invitation
- Adjust your attitude and try your best in the interview
- Think about your summary after the interview
- How to choose from multiple offers
- Exit gracefully
- To prepare orientation
These should be a relatively complete process from the beginning to the end of a job hopping. We’ll look at each part in detail next.
Second, to consider the problem before job-hopping
My dream job is a hero in the world, one day he will take a high salary equity to marry me, I guess the beginning, but can not guess the end…
Every job starts with a hope, and we have a vision of what we can do and achieve in the company.
But what brought us to where we are today, about to part with it?
There are two common reasons for leaving a job:
- Money does not reach the designated position
- Heart wronged
1. What if the money doesn’t arrive
There is a common belief in the industry that “jumping ship gets the fastest pay”, and this is true.
Why does the company delay giving us a raise and force us to change jobs?
The answer is simple: it’s because companies don’t recognize the increase in your value.
We may be just rookies when we enter the company, but after working for a period of time, due to personal efforts and business training, our level has changed a lot. We feel that we are no longer rookies and hope to get a higher salary.
But you may have been working on a project without taking on more responsibility, and the company has no way of knowing how capable you are now.
At this time, if the leader is good, you can first take the initiative to undertake the task, actively complete (that is, overtime), and then after a period of time to talk to the leader about a raise. This will be well founded and convincing, and the leader will generally agree. In this way, there is no need to change jobs and save the tedious preparation of interview questions. Over.
If the leader doesn’t agree, nothing can be done.
2. What to do if you feel wronged
Another reason employees leave is that they are unhappy and feel wronged.
Some passive reasons, such as leadership change, job changes, too much overtime, etc., can make people feel uncomfortable.
Take me for example, the company’s business transformation, the work is not android application development, do not feel comfortable for a long time, so I want to leave.
If there are conditions, you can communicate with the leader whether to restore the original, if there is no hope, then have to job-hopping.
But there are a few things to consider before you actually offer to leave.
3. Thoughts before leaving
If you don’t like something, change it. If you can’t change it, change your attitude. Don’t complain.
Some friends may say: don’t talk nonsense, hurry to talk about the interview knowledge, I do not feel good job, what else to think?
No, the cost of each move is very big, apart from the interview time back and forth, the old and new environmental adaptation, business knowledge and grasp of the code, all need cost, if two job-hopping interval is too short, time is actually spent on adapt to the new environment, the real study, the content of the precipitation will not too much, especially in the beginning work, more taboo like this.
So there are three questions you need to ask yourself before you decide to leave:
- Is there nothing I can learn from the current project?
- What would I lose if I left here?
- What do you get when you go to a new environment?
Take myself as an example, I did not have a solid grasp of the code in the project, and I was not clear about many design ideas of the framework layer, so I failed to ask questions in the interview. If you do change jobs, you’ll have to deal with new projects and new code, and you won’t have time to digest the previous code.
In addition to the code, interpersonal relationship also needs precipitation. After staying in this company for so long, I have seen the excellent qualities of some colleagues, and it takes some time to learn from them. If I am busy changing jobs, I may lose the opportunity to have in-depth communication with colleagues.
Therefore, after I failed in the first interview, I studied the project code carefully for more than a month and consulted my colleagues on learning and planning knowledge, paving the way for the future.
4. Determine what you need to do to prepare for departure
In the determination to go, as far as possible not naked resignation, now the market you know, without preparation naked resignation, is equal to cut off their own way back.
Some netizens asked me: how about quitting my job and reviewing for more than a month at home? I advised him to forget it, are not self-conscious people, every day at home but more learn not to go in. The best state is to work, while collecting knowledge points to learn learning materials, on the way off work, in the evening, on the weekend to study, so that the mental pressure will not be too great.
Here are two things you need to know before you start reviewing:
- positioning
- Bright spot
positioning
“Positioning” means identifying where you are and where you want to go. Mainly include:
- What is the current level
- What kind of accumulation
- What are the difficulties in the work project
- What level of job are you looking for
For example, MY position for myself is: now I am an intermediate level, common application development needs can be basically solved, the use of open source framework is no problem, part of the read source code, the work project is mainly mixed development is more complex, I want to find a conducive to their growth, large companies in the advanced Android development work.
Bright spot
Some friends may not understand the definition of “bright spot” very well.
“Highlights” are the qualities that distinguish you from other candidates.
The programmer interview focuses on these points:
- Skill levels
- The ability to learn
- The team cooperation
- Work mentality, etc.
If you have strengths in any of these areas, find them, put them on your resume, and express them in your interview.
For skill level, based on the type of project you have done, determine what you are currently good at. For example, if you are doing e-commerce applications, you might be good at mixed development and custom views. Do radio applications, that may be good at background process survival; If you’re doing a high-volume application, you might be good at monitoring, performance tuning, etc.
Find the bright spots you have or should have and work hard to master them.
5. What’s the market like
Some netizens said that they had long wanted to jump, but they did not dare to jump when they heard that the market was not good.
Actually, the price depends on the value, and what affects the price fluctuation is supply and demand.
In 20117, a lot of start-up companies did die, such as P2P and O2O, but those that survived raised a lot of money and established many new companies, which also needed to hire a lot of people.
At this time, the recruitment standards are higher than a few years ago, go to the recruitment software can also be found, most require more than 3 years of experience. This is because android junior too many now, all kinds of fresh students, training classes into the market, a few years ago you can use ListView to find a job days gone. However, the real advanced, or potential intermediate, is still very popular with enterprises.
Therefore, when we want to change jobs, we should not be stopped by the so-called “bad market”, but to look at their level and determine whether they are looking for entry-level, intermediate, or senior positions.
Before the interview, the interviewer gets your resume and makes a first impression based on the information on it. Therefore, what kind of positioning you want to present to the other party, what highlights, need to think clearly in advance.
After determining the direction, we will begin to prepare, the next section we introduce android job-hopping need to prepare for the review of knowledge.
Three, Android job-hopping need to review the knowledge
Before introducing the interview investigation content, let’s take a look at the knowledge points I think “intermediate Android” needs to master, which are combined with some interviews, their own actual interview and consult the senior summary, mainly including two parts:
- Basic knowledge of
- Advanced knowledge
Interview for intermediate and below positions, in the phone interview, side, or your resume does not highlight the highlights, generally will ask the foundation, the purpose is to determine your basic skills are not solid.
If you have too much basic knowledge, it’s dangerous. You have to be prepared. It’s impossible to hide.
After a phone interview and checking out the basics, it’s time to move on to the next level — ask more advanced questions to see where your best is.
At this stage, it is normal to have problems, because the other party is determining your level, but the attitude must be proactive, even if there is no previous research, also want to combine some experience to say the results of the speculation, do not directly say “I will not”.
All of the technical points below are detailed in open source projects”Lot”You can help yourself if you need.
First, basic knowledge
Basic knowledge mainly includes the following points:
- Java based
- Concurrent/asynchronous
- The android based
- Design patterns
- Common data structure algorithms
- Network based
1. Java based
Although Kotlin is very popular right now, I met with several major companies and asked a lot of Java instead of Kotlin. Therefore, we must ensure that the current knowledge is mastered, and then learn new knowledge, or really become a bear breaking corn.
Java basics include the following:
- Inner class, static inner class distinction, usage scenarios
- Abstract classes and actual interface scenarios
- A collection of
- Set column
- annotations
- What are annotations and the use of runtime annotations
- A simple butterknife-like effect is achieved using compile-time annotations
- reflection
- In-depth Understanding of Java Reflection: Class (Entry to Reflection)
- In-depth Understanding of Java reflection: Field (Member Variables)
- Deeper understanding of Java reflection: Methods
- The generic
- Understand Java generics in depth
- abnormal
- IO NIO
I suggest reading Java Programming Ideas, which not only answers What but also discusses Why.
2. Concurrent/asynchronous
It mainly includes two parts:
- Android Concurrency class
- Java concurrency knowledge
The main thread model of Android requires that time-consuming operations must be asynchronously executed in the thread, otherwise the app will be affected and even slow down.
Therefore, it is necessary to master the Handler, HandlerThread, IntentService and AsyncTask provided by Android. This is the asynchronous class encapsulated by Android for us. From the use to the principle, we should understand, frequent interview customers.
Then you need to learn about Java’s threading, memory model, and Java and ship out the classes provided under the package, which is often used by large companies looking at the basics.
In addition to the interview, if you look at open source frameworks, you will find many ConcurrentHashMap, Lock, and Condition. At first you will be confused, but after mastering Java concurrency knowledge, it will be much easier to look at frameworks.
Java concurrency
- Synchronized is different from Lock
- What is a reentrant lock
- Thread communication method
- There is a difference between ‘wait’ and ‘sleep’
- Wait – notify model
- Producer-consumer model
- The thread pool
Recommended reading books: Android Development Art Exploration, Java Concurrent Programming Art, Java Concurrent Programming Practice
I made a collation of all the Java interview questions and put them in open source projects”Lot”You can help yourself if you need.
3. Android basics
Android basic likes to ask back and forth on those points:
- Four components, life cycle startup mode and other FAQ
- Android Advanced 1: Activity lifecycle
- Android Advanced 2: Task and startup mode for an Activity
- Android Advanced 3: The Intent matches the IntentFilter
- Android Advanced 4: Some details about services
- Custom View related
- Drawing process
- events
- Sliding conflict
This part is common, should most people have mastered almost, share to everyone I organized the Android basic part of the interview questions, there is a need to go to my [GitHub].
4. Design patterns
I am looking for a job this time, the singleton mode appeared twice in the written test. I remember that I lost a good chance because of singleton in the school recruitment a few years ago. The importance of singleton mode, please weigh it by yourself.
The design pattern is not too complex, know several commonly used design pattern use scenarios, will handwritten singleton key several (static internal class double-check knows the difference).
Suggest to look at the “big word design mode”, “Android source code design mode”.
5. Data structure algorithm
I only wrote insertion sort by hand. It is recommended to be familiar with bubbling, insertion, merging time complexity and implementation. It is best to write it down by hand, otherwise it is easy to make mistakes when handwritten on site.
As an aspiring programmer, these data structures and algorithms need to be mastered:
- Array list distinction
- Linked list inserts and deletes
- Stack and usage scenarios
- Queues and usage scenarios (possibly extending to blocking queues)
These are the basics. Learn well to master the rest.
Red black tree, KMP, shortest path, dynamic programming, knapbag problem these belong to the advanced, ask less, understand.
You can buy this “sword finger offer” to see, exercise the common algorithm problem solving ideas. “Algorithm” is too specialized, the average person also can’t see go in, have interest can see.
6. Network basics
In fact, the network does not ask much, because after all, we do not need to implement an HTTP Client, common network problems about the following content:
- Seven layer model
- HTTP content
- Common response code
- Cache related
- TCP three handshakes, four waves
- The use of the Socket
- Socket for process communication (incidentally review TCP UDP)
Advanced knowledge
After making sure your foundation is adequate, the second and third sides will examine your ability to advance. In terms of application development, advanced knowledge mainly includes the following:
- Framework principle: cache, network, picture
- Performance optimization
- Architectural patterns
- JVM
- pluggable
1. Framework principle
As ambitious android developers, how can they just use the framework without knowing how it works?
In the interview, you will often be asked: what framework are you familiar with the source code?
At this time, if you are not prepared, it will be embarrassing, and you will lose the opportunity to give yourself extra points.
Now the mainstream framework is RxJava Retrofit OkHttp Picasso/Glide EventBus3, you can choose about two of them to get familiar with the source code and the general process, the important thing is to understand why this framework, the problem to solve, how to solve.
Recommended reading: Advanced Android Light
2. Performance optimization
Performance optimization is another frequently asked question, which mainly asks about memory optimization and UI optimization.
FAQ:
- Memory optimization
- How can memory leaks be avoided and detected
- Memory jitter
- Did you use any tools?
- How to Avoid OOM
- The UI optimization
- What if the layout is stuck
- How to determine whether the layout needs optimization
- What tools are there
You can see all of these problems in the official performance optimization model. If you can’t get past it, you can read Hu Kai’s blog, which also summarizes it well.
You can also read High Performance Android Application Development.
3. Architectural patterns
Advanced Android development requires not only the completion of a module, but also the design and development of the entire project.
Common architectural patterns are divided into layers by project, such as MVC, MVP and MVVM. You can choose two of them to learn and practice, and compare and understand the advantages and disadvantages. There are many articles on the Internet.
Another is the design idea, OOP object-oriented development ideas are generally known, inheritance encapsulation polymorphism, when to use interface when to use abstract class, in fact, and design patterns complement each other.
There is ALSO AOP, section-oriented programming, large projects will generally use, in the code without intrusion at the same time add functionality, I suggest understanding.
Routing, now componentization is popular, and one of the problems with componentization is how components depend on each other, how they communicate, and that requires a good architectural design. I’m trying to figure it out myself.
This part of the knowledge belongs to personal experience, different people have different experiences, there is no relevant books suitable for everyone, need to write and summarize more.
4.JVM
When I went to a company for an interview, there was also a backstage interview in the next room. I listened to their conversation secretly while waiting for the interviewer. One of the conversations stands out:
- Introduce the CMS garbage collector.
- B: Well, SORRY, I only graduated for one year, so I don’t know much about it.
How many years do you need to work on the JVM?
Different people have different opinions, mine is: as early as possible.
The main contents of the JVM are as follows (from Understanding the Java Virtual Machine in Depth) :
- JMM (Java Memory Model)
- GC (Garbage Collection Strategy)
- Monitor and tune VM performance
- Class file structure
- Class loading mechanism
- Program compilation optimization
This may sound far-fetched, but a lot of people think I just develop a business, do I need to know that much? It doesn’t seem to be working.
Understanding these things greatly facilitates our daily business development:
- Once you know the JMM, your understanding of memory allocation and OOM will be more than superficial
- Understanding GC brings a new level of understanding of performance tuning
- Once you are familiar with the class loading mechanism, it will also help you learn to plug-in
- Understanding how virtual machines optimize programs will help you understand the role and significance of some concurrency primitives
These are also common interview questions, and the more you know, the more points you get.
Recommended reading: Understanding the Java Virtual Machine in Depth
5. The plugin
Plugins are so popular that companies are developing their own plugins, which not only supports their business, but also shows their deep technology in Android development.
Some friends may say: I now have so few project users, what is the use of this.
Regardless of whether it is useful to learn, in the process of learning, you can greatly improve your existing knowledge system, to develop plug-in, need to master the content about these:
- Class loading mechanism
- Four component startup processes
- Resource to load
- A dynamic proxy
See, it is the application of some difficult knowledge points, through purposeful learning, can let us master the basic knowledge more mellow.
In the interview, if you say that you have the initiative to learn this knowledge, but also to speak a part of the knowledge point, not only shows your technical ability, but also reflects your initiative to learn and learning ability, big extra points!
Recommended reading: Tian’s blog
Advanced knowledge is my own experience, if there is any omission, welcome to supplement.
Different companies focus on different things
Some friends may ask: the basic content is too much, I can directly prepare advanced.
First of all, it is difficult for you to learn advanced directly. It is easy to misunderstand and not to say that it is hard to write down and forget it before long. Secondly, I have also mentioned the order of questions in the interview. They all start from the foundation. If the foundation is not solid, they will not survive more than two episodes.
Here’s another nagging, if a company can get in by opportunism, then you are not the only opportunist in the company, is that the company atmosphere you want? If you want to get into the big company of your dreams, take your time.
After mastering the knowledge point, we will focus on the content of each company.
There are a lot of information on the Internet about the knowledge points of the interview. I usually pay attention to some interviews and do some collection and collation to see what is lacking in them, and then find time to make up. If you need a friend, you can go to my [GitHub] for yourself.
The last
If you want to go to a good company, but the current hard strength is not enough, I think it is necessary to try, the level of technical ability can determine how far you go, the level of platform can determine your height.
If you’ve worked your way into the company of your choice, don’t slack off. Career growth is like learning new technology.