preface

In most cases, the individual skills of programmers grow much faster than the size of the company or the business. Therefore, job-hopping has become one of the most common words in this industry.

In fact, the purpose of job-hopping is for salary increase or career development, and I am no exception. After graduating from an ordinary university, I joined an Internet company. In the past few years, I have been accumulating experience. Finally, I chose to join Meituan and got a salary increase of 50%.

The following content involves: interview questions (including answers) + study notes + electronic books + learning video, free package to share, help forward, after attention to add assistant VX: Yunduoa2019 or scan the two-dimensional code below, follow the guidance of the assistant to obtain

A: Preparation for the interview

1. Target enterprise

Before changing jobs, you must think clearly about what your target company is, whether you want to be a screw in a big company or a cure-all in a small or medium-sized company.

Of course, going to a big company is not necessarily a screw, the key is to see their technical level and ability. Therefore, considering the actual situation, the target enterprise should choose meituan, Byte and JINGdong. Of course, all three companies applied, and finally got the Offer in the interview with Meituan.

2. Time node

The time node of job-hopping is very important, and the degree of difficulty of job interview may vary at different time nodes, which is mainly determined according to the degree of vacancy and the number of HC positions.

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

  1. When you need someone to do a job
  2. At the end of the year, when there are more pits

3. Resume preparation

As for the preparation of the resume, I don’t need to say much, everyone should also understand. Your resume should address at least the following points:

  • Design your resume around the project
  • Tailor your skills to the needs of the organization
  • Three elements of a project (Project = Product + Technology + Result)
  • Quantify your project and give numbers

As for the preparation of resume, many people may not know where to start. I can provide some resume templates for reference, which is very helpful to me personally.

Please forward it and add assistant VX: Yunduoa2019 after following it or scan the qr code below and follow the guidance of the assistant to obtain it by yourself

4. Review for interview

As for the importance of review before the interview, I will not repeat too much. I believe that as long as anyone who has been interviewed knows, even if it is cramming, it is much better than directly 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 the interview

Beautiful group side:

  • Redis cluster, why 16384? The sentry model, the election process, is there a split brain problem? Raft algorithm, advantages and disadvantages
  • JVM class loader, custom class loader, parent delegate mechanism, pros and cons, Tomcat class loading mechanism
  • Tomcat hot deployment, hot loading? How did you do that?
  • CMS collector process, G1 collector principle, how to achieve predictable pauses? Region Size and structure
  • Memory overflow, memory leak encountered? What scene was created? How did it work out?
  • During lock upgrade process, can light locks become biased locks? Can biased locks become unlocked? Spin lock, object header structure, lock state change process
  • How to ensure that Kafka is not rebalanced? What’s the plan?
  • How to understand distributed and microservices? Why split services? What problems will arise? How to solve these problems?
  • What kind of messaging middleware do you use? Kafka, why 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 non-equal natural numbers 1-n, please implement the sort of ARR, but do not replace the numbers in positions 0 ~ N−1 by direct assignment to 1 ~ N
  • Algorithm 2: Determine whether a tree is a balanced binary tree

Meituan Second Side:

  • Is the structure of Innodb understood? How do disk pages and cache work together and find? What if the buffer and disk data are inconsistent? Will data be lost when mysql is down suddenly?
  • Redis string implementation, SDS and C difference, space pre-allocation
  • How is redis ordered set implemented? What is a skip watch? The process of adding an element to a jump table, adding and getting elements, getting the time complexity of the score, why not use a red-black tree? What are the characteristics of red-black trees? Left to right rotation operation
  • IO model? Multiplexing, selete, poll, epoll, epoll structure, how to register events, ET and LT modes
  • How to understand high availability? How to ensure high availability? What are the drawbacks, circuit breaker mechanism, how to achieve?
  • What about high concurrency? How to calculate high concurrency? Does your project have it? If so, what problems will arise and how to solve them
  • Project introduction
  • Algorithm: Given a binary tree, calculate the sum of the node values of the path with the largest sum of node values. The start and end nodes of this path can be any node in the binary tree

Three aspects of Meituan:

  • Project introduction
  • Online have encountered large traffic situation, what problems, why the database 2000QPS can not support, have thought about the reason, you then how to deal with?
  • How do you do flow limiting? If you were to design a flow limiting system, how would you do it?
  • Algorithm: Find the cube root of a float number, Newton iterative method
  • When can you start this position and what are your expectations?
  • Are you still interviewing other companies and what is the current process?

Answer:

C: How to achieve a qualitative leap?

1. Technology accumulation (learning + accumulation)

For technical newcomers, whether in large or small factories, or in outsourcing companies, it is basically simple CRUD work. Many people think that doing simple tasks over and over doesn’t improve their skills, but there are people who can actually fight their way out of them, so it’s all about the thought and effort you put in.

Of course, I also have my own learning methods and habits. I like to use my spare time to read something, such as some technical books or documents, and some videos to explain, which often makes me feel enlightened and helps me a lot in my work.

  • Read the book documentation:

  • Watch the video to learn:

  • Interview brush:

BAT first-line factory interview question

Thematic interview questions

2. Establish the right technical direction

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

For programmers, as early as possible to do their own career planning, the establishment of the path of development, is very necessary. I think the same strength, good at spotting and judging opportunities, will always have the advantage.

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

  • The architect
  • The project manager
  • managers

First of all, put aside the manager, in terms of the first two directions, there are certain requirements for your technical level and working ability. First of all, we should be clear that technology is the foundation, followed by ability deviation.

For example, the architect needs you to have a sound and solid technical system, have certain self-cultivation, have good system analysis and design ability, have rich experience in development projects; And the project manager, in addition to the technology to pass, but also should understand the various links of software development, understand the development of various technologies and applications, understand the level and characteristics of the development team.

3. Learn how to read other people’s code (Notes)

For some reason, many developers have a sense of “confidence in the puzzle”, thinking “everyone else’s code is crap but me”, using Yang Li’s concept: Why are you so confident when you are so ordinary?

In fact, being able to work on other people’s code is a great skill with multiple benefits. No matter how messy or ill-conceived the previous code was, you need to extend it.

Thus, it will benefit you in both ways:

  • Being able to read other people’s code is a great opportunity to learn about bad design.
  • Being able to read other people’s messy code also makes it easier to update when needed.

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

Note: Spring buckets, Redis, MySQL, JVM, etc.

  • Spring Source Code

  • SpringBoot Technical Notes

  • Play with Redis practical notes

4. Develop your own contextual thinking

During the first two years on the job, I have been cultivating my own scenariothinking, which is difficult to replicate in university study. What is scenario-based thinking? This means proactively thinking about how end users might use your software incorrectly.

Since most programming is maintainable, it usually means changing code that is highly coupled to other code. Even simple changes need to keep track of every possible reference to objects, methods, and apis. Otherwise, it’s easy to accidentally break module connections that you’re not aware of. Even if you only change the data type in the database. It also involves thinking through edge cases and integrated high-level design before moving into development.

For scenarios where you’re developing new modules or microservices, it’s even more complex, and it’s important to take the time to think about the operational scenarios you’re building. Think about how future users might need to use your new module, how they might use it incorrectly, what parameters might be required, and whether future programmers might need your code differently.

Simple coding and programming is only part of the problem. It’s easy to create software that works well on your computer. But there are many ways deployment code can go wrong. Once in production, it’s hard to say how the code will be used and what other code will be attached to the original code. Five years from now, future programmers may be frustrated by the limitations of your code.

conclusion

As a Java programmer, the most valuable time you have is the “golden five years” of computing from the moment you start working. These five years are the best time to learn and grow.

To lay a good foundation for themselves, to be able to take some detours on the road of development in the future, to achieve their annual salary of 500,000, one million dream.

Friendship to share: the article code word is not easy, hope more points zan+ turn FA + comment lun three even a wave oh ~

Need the interview questions mentioned in the article, notes, e-books, learning videos, can follow me, thenPlease forward it and add assistant VX: Yunduoa2019 after following it or scan the qr code below and follow the guidance of the assistant to obtain it by yourself