Increase salary by 50%, counterattack from a small factory, sit on Ant P8 technical expert (face experience + experience)

Preface

In most cases, the growth rate of programmers' personal skills is much greater than the growth rate of the company's size or business. Therefore, job-hopping has become the most common vocabulary in this industry.

In fact, the purpose of job-hopping is nothing more than salary increase or career development, and I am no exception. After graduating from an ordinary undergraduate, I joined an Internet company. In the past few years, I have been accumulating experience. I finally chose to jump to Meituan and my salary increased by 50%. Let me share my personal experience and some suggestions.

ä¸æå¸¦ä½ äºè§ £ èèéæï¼ä¸åªæ¯æ个æ¯ä »å®é £ ä¹ç®å

ä¸æå¸¦ä½ äºè§ £ èèéæï¼ä¸åªæ¯æ个æ¯ä »å®é £ ä¹ç®å

The following content relates to: interview questions (including answers) + study notes + e-books + study videos, packaged and shared for free, and can be obtained by adding VX [MXM9809] .

A: Preparation before the interview

1. Target company

Before quitting, you must think clearly about what your target company is, whether you want to be a screw in a large company or a panacea in a small and medium company.

Of course, going to a big company is not necessarily a screw. The key is to look at your own technical level and ability. Therefore, based on our own actual situation, the target company chooses from the three homes of Meituan, Byte and JD. Of course, all three companies submitted their resumes, and they finally made an effort to win the offer during the interview with Meituan.

 

2. Time node

The time point of job-hopping is very important. At different time points, the difficulty of the job interview may be different, mainly based on the degree of lack of people and the number of job HCs.

Generally speaking, it is easier to get an offer through an interview in the following two situations:

  1. When eager to hire people to work
  2. When there are more pits at the end of the year

3. Resume preparation

Regarding the preparation of your resume, I don't need to say much, everyone should understand it. The resume must meet at least the following points:

  • Design your resume with the project as the main body
  • Focus on the needs of the business and highlight your skills
  • The three elements of the project (project = product + technology + result)
  • Quantify your project, give the numbers

Regarding the preparation of the resume, many people may not know where to start. I can provide some resume templates as a reference. Personally, it is very helpful.

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

4. Interview review

Regarding the importance of review before the interview, I won’t repeat it too much. I believe anyone who has interviewed knows that even if it’s a temporary holdover, it is much better than being naked. As for my review methods and some skills, I will talk about them in detail in the third part of the article, hoping to give you some inspiration.

B: The whole process of interviewing ants ( interview questions sharing)

Ant side:

  • Redis cluster, why is it 16384? Sentinel mode, the election process, will there be a split brain problem? raft algorithm, advantages and disadvantages
  • JVM class loader, custom class loader, parent delegation mechanism, advantages and disadvantages, tomcat class loading mechanism
  • Tomcat hot deployment, hot reloading understand? How did you do it?
  • The cms collector process, the principle of the g1 collector, how to achieve predictable pauses? The size and structure of the region
  • Memory overflow, have you encountered a memory leak? What scene produced? How to solve it?
  • During the lock upgrade process, can a lightweight lock become a biased lock? Can bias lock become lock-free? Spin lock, object head structure, lock state change process
  • Kafka rebalances, how to restart the service to ensure that Kafka does not rebalance? What are the options?
  • How to understand distributed and microservices? Why split the service? What will be the problem? How to solve these problems?
  • What message middleware do you use? Kafka, why use kafka? High throughput, how to ensure high throughput? Design model, zero copy
  • Algorithm 1: Given an integer array arr of length N, in which there are N unequal natural numbers 1-N, please realize the sorting of arr, but do not assign the numbers in the position of subscript 0∼N−1 directly Is replaced with 1∼N
  • Algorithm 2: Determine whether a tree is a balanced binary tree

Two sides of ants:

  • Do you understand the structure of Innodb? How do the disk pages and the cache area cooperate, and how to find them? What should I do if the buffer and disk data are inconsistent? Will there be data loss if mysql suddenly goes down?
  • Redis string implementation, difference between sds and c, space pre-allocation
  • How to implement redis ordered collection? What is a skip table? The process of adding an element to the jump table, adding and obtaining elements, and the time complexity of obtaining scores, why not use red-black trees? What are the characteristics of red-black trees? Left-hand and right-hand operation
  • Do you understand the io model? Multiplexing, the structure of single, poll, epoll, epoll, how to register events, et and lt modes
  • How to understand high availability? How to ensure high availability? What are the drawbacks, the fuse mechanism, and how to achieve it?
  • What do you think about high concurrency, how is high concurrency, does your project have it? If there are any problems, how to solve them
  • Project Introduction
  • Algorithm: Given a binary tree, please calculate the sum of node values ​​of the path with the largest sum of node values. The start node and end node of this path can be any node in the binary tree

Three sides of ants:

  • Project Introduction
  • Did you encounter a large amount of traffic online? What was the problem? Why did the database fail at 2000qps? Have you thought about the reason? How did you deal with it at the time?
  • How to do current limiting, if you are asked to design a current limiting system, how to achieve it?
  • Algorithm: Find the cube root of a float number, Newton iteration method
  • When can you start, and what are your expectations for the position?
  • Are you still interviewing other companies, and what is the current process?

Answers to Ant Interview Questions:

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

C: How to achieve a qualitative leap?

1. Technology precipitation (learning + accumulation)

For technology newcomers, whether in large factories or small factories, or in outsourcing companies, they basically do simple CRUD work. Many people think that repeating simple tasks will not improve their skills, but in fact, there are some people who can smash a blood path out of it, so the key is whether you have spent your mind and effort.

Of course, I personally have my own set of learning methods and habits. I usually like to use fragmented time to see something, such as some technical books or documents, and some video explanations, etc., which often makes me feel like I am suddenly realized. It also helped me a lot in my work.

  • Read book documents:

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

  • Watch the video to learn:

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

  • Interview questions:

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

BAT first-line interview questions

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

Thematic interview questions

2. Establish the right technical direction

In my opinion, sometimes choice is more important than ability. As the saying goes: standing on the wind, pigs can take off.

For programmers, it is necessary to make their own career planning as early as possible and establish a development route. I think that people with the same strength and good at discovering and judging opportunities will always take the lead.

The development direction of programmers can be roughly divided into three categories:

  • Architect
  • project manager
  • Manager

First of all, regardless of the manager, as far as the first two directions are concerned, there are certain requirements for your technical level and work ability. First, we must be clear that technology is the foundation, and secondly, the ability deviation.

For example, an architect needs you to have a complete and solid technical system, a certain level of accomplishment, good system analysis and design capabilities, and rich experience in development projects; and a project manager, in addition to technical skills, should also understand software Understand all aspects of development, understand the various technologies and applications of development, and understand the level and characteristics of the development team.

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

3. Learn how to read other people's code (notes)

I don’t know why, many developers always have a "fascinating self-confidence", holding the idea of ​​"Everyone except me, the code written by everyone is rubbish", using Yang Li's concept: why you are obviously ordinary, but So confident again?

In fact, being able to continue working on other people's code is a great skill with multiple benefits. Because no matter how messy or poorly thought out the previous code is, you need to extend it.

As a result, it will benefit you in two ways:

  • Being able to read other people's code is a good opportunity to understand what bad design is.
  • Being able to read other people's messy code also makes it easy when you need to update.

I personally read the technical notes of some big guys, which include some development skills and source code:

(The space is limited, only part of it is shown, the notes include Spring Family Bucket, Redis, MySQL, JVM and other knowledge points)

  • Spring source notes

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

  • SpringBoot technical notes

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

  • Practical notes for playing with Redis

Increase salary by 50%, counterattack from a small factory, sit on Meituan L8 technical expert (face experience + experience)

 

4. Cultivate your own scenario thinking

In the first two years of work, I have been cultivating my own scenario-based thinking, which is difficult to replicate in university studies. What is scenario thinking? That is to take the initiative to think about how end users might use your software incorrectly.

Since most programming is maintainable, it usually means changing code that is highly coupled with other code. Even simple changes need to track every possible reference to objects, methods, and APIs. Otherwise, it is easy to accidentally break the module connection that you did not realize. Even if you just changed the data type in the database. It also includes thinking through edge cases and integrated high-level design before entering development.

The scenarios for developing new modules or microservices are more complicated, and it is very important to take time to consider the operational scenarios that are constructed. Think about how future users might need to use your new module, how they might use it incorrectly, what parameters might be needed, and whether future programmers will need your code in a different way.

Simple coding and programming are only part of the problem. It is easy to create a software that runs well on your computer. But there are many ways in which the deployment code may go wrong. Once in the production environment, it is difficult to say how the code will be used and what other code will be added to the original code. After five years, future programmers may be frustrated with the limitations of your code.

to sum up

For Java programmers, the most precious time is the "golden five years" calculated from the moment you start working. These five years are the best period for you to learn and grow.

Lay a good foundation for yourself, so that you can avoid detours on the road of future development and realize your dream of an annual salary of 500,000 or 1 million.

Friendship Sharing: The code word of the article is not easy, I hope more zan + turn fa + comment on lun in three consecutive waves~

If you need the interview questions, notes, e-books, and learning videos mentioned in the article, you can follow me and add VX [MXM9809] to get the download method for free.

Guess you like

Origin blog.csdn.net/Sqdmn/article/details/115186604