This article is the public number readers goodbye logging machine contributed to the interview experience

Thanks to lumberjack students for sharing

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Welcome to follow our wechat official account: Shishan100

My new course ** “C2C e-commerce System Micro-service Architecture 120-day Practical Training Camp” is online in the public account ruxihu Technology Nest **, interested students, you can click the link below for details:

120-Day Training Camp of C2C E-commerce System Micro-Service Architecture

Write in front:

First of all, I would like to introduce myself to you. I am a graduate student in Didu, and I have 4 months and 4 years of working experience. This time, I interviewed several unicorns and first-line factories, and all got offers, with almost 100% hit rate.

In the whole process of the interview, teacher Ishisugi’s guidance gave me a lot of help, so I will share the interview experience and personal learning method through the teacher’s official account, hoping to help more of our programmer brothers.

First of all, I would like to talk about my thoughts in writing this article. Many friends’ interviews may be their own experiences, or they may be a bunch of long interview questions encountered by various companies

I am well aware of your appeal and desire, after all, I have read a number of sutras. However, it does not mean that you can immediately become stronger after reading this article

Part one is experience + learning methods. Part two is how to prepare for your interview

My review process:

Stage 1 (” Memory Palace – Associative Memory “) :

One year ago, I set myself the goal of going to XX company, and I have been preparing continuously for a year

This year, I searched for other people’s interview questions in zhihu, Maimai and various technology groups everywhere, and then looked, did, met not to consult the data to answer, and then reserve to their own knowledge base….

More than a year later, according to incomplete statistics, I have seen more than thousands of interview questions, an amazing number (so now when people ask me a question, I can basically answer it)

Of course, most of the time in a year is to go to the company to study on Saturday and Sunday, of course, after ordinary holidays, I go home to read and study, and on weekdays, I usually go home after work and spare 1-2 hours to continue my study

This year I read about six or seven frame source code, read a lot of books, all the learning video is twice the speed of training

Some people look at this and think it’s crazy, double speed? Can you understand that fast?

In fact, this is also trained, at the beginning of 1.2 times, to 1.5 times, to 1.8 times, to the last 2 times, faster than the sound will be distorted; Of course, the speed of reading has also increased exponentially. I remember finishing a book in two hours while waiting at the airport.

I vaguely remember that I still spent at least 6 hours a day studying during the holidays of the Chinese New Year, which led to some relatives and friends who thought I was cold and ignored others when they came to visit.

Of course, this is nothing, because the few people around you will be more hard, some people on a weekday continue 3-4 hours of study, 10 hours on a non-weekday, some people may even sleep only 4-5 hours a day…..

Is the so-called method on, on which; The success of this year has exceeded my previous two years of unproductive work and life.

I used to brush thousands of questions in one night. The next day I went to take the test

But not only the tactics, this time I extended my learning way of the first big kill —- “memory palace” “space association”

In fact, my learning methods in high school and even college were very bad, because I could not find my own learning methods all the time. I just used the tactics of writing questions to compete with others by staying up late

Later, I found that my grades did not improve. At that time, I longed for someone to tell me a perfect learning method directly, so I could have followed it directly. However, the fact is that I really found my own learning method when I was working after graduation.

The “spatial association” of the so-called “memory palace” is not to store all the knowledge points in his mind as familiar places like Benedict Cumberbatch

My “memory palace” is also a continuous memory space in my mind, just like an array. At this time, every time I absorb a knowledge point, I will immediately find the place that can be associated with strong reference, soft reference and weak reference of this knowledge point in the continuous memory space, and string them together like a tree structure

So when I think of a knowledge point in the future, I will immediately associate with various related knowledge points, blurting out is no longer a single knowledge point, but both horizontal and horizontal comparison, and vertical and vertical analysis process.

The above description may be a bit abstract, but let me give you an example:

Suppose I have a point in mind right now (I’m trying to keep my examples approachable for simplicity’s sake), and it goes something like this:

A structure CopyOnWriteArrayList, a thread-safe structure that reads and writes non-mutexes based on an exclusive lock.

What we need to learn here is not that it is remembered as a structure, but the ideas in it (copied when writing). Therefore, every time I hear the word COW, a large number of related knowledge points will come out in the area of COW in my brain

For example, The RDB of Redis also uses COW, which is a snapshot idea

And then I suddenly mentioned “snapshot”, at this time the knowledge point in my mind will be associated with mysql MVCC quickly emerged

So a layer of a layer of association, intricate, overlapping hills, but also filar silk buckle, linked to the ring, become a growing tree of knowledge……

Stage 2 (Learning method “Fluency – Deliberate practice”)

As mentioned above, I have already set my goal in the first stage, but THERE is a very practical problem:

Any interview you encounter is a process of communicating with others, and you need to present your strengths fully and in a simple way that people can listen to

So the second stage of deliberate practice is divided into two parts:

In the first part, I will deliberately discuss the knowledge points I have learned with others, such as colleagues or in some technical groups

In this way, not only in the process of communication, you will find that what you say is not rigorous enough, not orderly enough, not deep enough, or other people will ask some questions based on what you say, if you can’t answer it easily, it means that this knowledge is not good enough;

The second part is actually “technology sharing”, sharing technology in a team, or participating in offline technology sharing

The nice thing about this is that when you’re sharing technology, you’re under pressure

You have to not only share the knowledge, what it relates to, what it touches horizontally, what people will ask you when you share, and how to share the knowledge to people who haven’t touched it at all

Sharing a challenge can be so difficult that you have to put 10 times as much effort into preparing for an interview

Later the interview found that this is actually a plus, you said you had a technology to share, sometimes others will let you chat, and even let you share once again, others will feel that you are a love of technology, willing to communicate……

Tips: In some technical groups with good technical atmosphere, people often discuss some problems encountered in production or interview.

At this time do not turn a blind eye, participate in, say their own ideas, and discuss with others, let be given you to correct and so on, a long time is also a disguised exercise process

Stage 3 (learning method of “Enemy at the gate – three rounds of decisive battle”) :

I am naked resignation, so friends, make clear their current state, a good analysis of their own state, I analyzed their own situation:

1. No financial pressure

2. Go home to the library near your home and study for a month without having to worry about anything else

Every day I get up very early and drive to the library to occupy a seat. When I arrive at the library at eight o ‘clock, there are nearly 200 people in line on the first floor. When it officially opens at half past eight, we rush in and grab a seat

I didn’t get a seat for all but two of the 30 days, and went back home to study. The remaining 28 days were mostly rain or shine, from 8 a.m. to 7 p.m

Of course, the goal is very important, the first day of the month to review all the things listed, every day according to the plan

The three rounds I mentioned above are like this. Before I quit, I first looked at myself and found that there were several weak links in my whole knowledge stack system compared with what was asked outside, so I made specific reviews

For example, the JVM was weak, so I went through Zhou Zhiming’s book for the second time

At the same time, I followed the JVM column of fire Fighting team leader every day, and I took the initiative to answer all the questions raised by students in the comment section, so as to exercise myself

Then go back to Zhihu to read all the answers about JVM, so far JVM common, common here I can answer.

The second round is to understand every point on his resume, the project thoroughly, can configure the machine to the flow size, each application layer of the flow, some basic parameters of the limit have to remember, at the same time every day to pick a key interview to see, and then can express it.

The third and final round, the self-interview, if you’re the interviewer and you see your resume what would you ask, the more detailed the better

Look for any gaps in your resume (I’ll break down how you prepared your resume, your projects, and your knowledge points in detail below)

Then I collected a lot of interview questions before the whole round, I will specially pick an hour, self-answer retelling, is a self-rehearsal of the interview process, after the review……

Summary learning methods:

Now I want to summarize the learning method:

  1. Build your own knowledge system, spatial association, repetition, memory curve

  2. Practice deliberately, communicate more, accept more different opinions, expand the idea

  3. Understand which link is weak, specific for, such as MY redis weak, then I this period of time to vigorously grasp redis, do not see Redis, and see ZK, and learn netTY

Key points: How should you prepare for your project?

Here I will not say a single technical stack, knowledge points, this does not have any meaning, can be found on the Internet, many books will have a lot of questions, this is also the whole article I did not have any interview questions

And now slowly has gradually will not ask you a single technical point, are combined with the actual production, you do your own project to know the root

I’m going to ask you to prepare for your project in the form of questions and answers.

1. First, you should be able to briefly describe your project

  • What is the business model? Do you know anything about upstream and downstream business?

  • What do you see as the problem with this business model?

  • What problem does your project solve?

  • Can you draw your project structure on the wall

Software engineering is important. I was asked to draw ER diagrams, system flow diagrams, swimlane diagrams, etc

  • Project day? GMV?

  • Daily visits? A year’s turnover?

  • How many cooperative businesses? How many tenants are there?

  • How much data is there?

  • How many systems are deployed and what is the machine configuration?

  • What is the approximate flow rate of each layer?

  • How much traffic to mysql, mq traffic, Redis traffic?

  • How is the online timeout set?

  • How to configure retry? How do I do idempotent?

  • How to do db and cache consistency?

  • What algorithm does JVM garbage collection use?

  • How much did the old and the new give? What’s wrong with that?

  • What’s the difference between CMS and G1?

  • Why not use g1 online?

  • How can the current architectural model be optimized for the existing volume of business? What are the difficulties? How to expand capacity later?

  • What is the design of database tables? What are the problems and benefits of violating the three paradigms?

  • What is wrong with the current database table design, and what are the points that can be optimized?

  • How to apply the design pattern of modules in your project? Can you draw a UML diagram of this design pattern?

  • How is this design pattern different from the other? What are the advantages and disadvantages?

** I have not detailed any of the framework knowledge points here, because a knowledge point such as sub-database sub-table will bring a lot of problems

Here I focus on the overall project problems, here at least to prepare the highlights and difficulties of three projects, especially big factory interviewers, very picky, that kind of more general difficulties do not come out to say, but will lower the score

2. Second, thinking about the application of technology in your project, architecture selection, why it is chosen, architecture design, why is it designed like this?

  • The rationale for splitting microservices?

  • Why is the XX module not separated from the XX module, or separated?

  • For example, zK and Eureka as registries, which one do you use?

  • Which should you choose for the volume of your business and the number of service instances?

  • These two models are different. Why is one biased toward AP and one biased toward CP? What are the problems?

  • Does the introduction of a new framework create new challenges? Can someone handle a problem? Can team developers pick up the framework quickly?

If an interviewer asks you a technique, why would you use it? How do you use it? What are the advantages and disadvantages of using it? Backup plan?

It shows that you are thoughtful and that you have an advantage over your competitors.

3. Sorting out common problems

These are some of the most common and obligatory questions, such as:

  • Spring related AOP, IOC, Mybatis related

  • Dubbo, ZK, Netty, SpringCloud, springBoot starter

  • Thread pools, HashMaps, concurrency-related collections

  • CAS, Volatile, synchronized (lock escalation after 1.6), atomic classes

  • NIO for the network, class loading process, three-way handshake four-way handshake, one-way HTTP request process

These common questions should at least be familiar with the heart, of course, some things say more in-depth the better, the best can involve hardware, shock to the interviewer

For example, every time I talk about CAS:

  • I’ll mention the underlying MESI protocol

  • We’ll talk about the structure of caching

  • How to switch between Modified, Exclusive, Shared, Invalid

  • We’ll talk about some write buffers introduced after cache locking, and invalid queues

  • What do release, Acquire, Store, load barriers do to ensure visibility, order, etc.

So when it comes to what you’re good at, you spray it hard.

4. Expand the topic a little further

Usually doing some difficult questions will actually improve my thinking ability. Let me give you a few examples. I will take AQS as an example

  1. Why add a new node to the addWaiter and enQ methods and set its prev to tail and then try the CAS instead of constructing a bidirectional link between nodes after the CAS is successful?

  2. Why does the wake up node traverse from tail forward?

  3. There are new threads competing for locks is there a loophole in unparksucceeded?

  4. How does AQS keep queues active?

  5. What is the significance of the node in Propagate state?

Etc etc.

5. Each knowledge point written on your resume should be thoroughly understood and can be described independently for 5min, or the kind that others can understand

6. Attack and defend yourself, you’d better find loopholes for your project every day, and then find solutions, similar to “left and right fight”

Some game masters are not always like this. They may only play two or three games a day, but they are very good at it

That’s because other people are playing games in their heads, rehearsing every situation, every detail, and at the same time taking mock exams and rehearsing themselves, combined with some online interviews.

Time flies, the article is nearing the end, in the review and rapid growth of the year to know a lot of leaders, everyone has also given me a lot of help, here I want to thank them very much

There are also a lot of friends urging me to make an interview, currently can think of only so much, will continue to add later, I hope this article is helpful to you, you have any questions can be followed up with wechat to ask……

A last thought:

I love playing games. I love dota. I’ve been playing LOL for seven or eight years.

I often compare the game to life, never take the initiative to surrender, even if the tree of the world on the back has been fast fading, but I firmly believe that we can find the opponent’s mistake, and then a wave to beat others down.

I often hang in the mouth of the mantra: afraid, you will lose a lifetime. So no matter when and where, maintain their sense of competition, and their own, or and excellent people than, will constantly promote their own forward……

If you refuse to give in, you will not lose!

END

“21 days Internet Java Advanced Interview Training Camp (distributed)” details, scan the two-dimensional code at the end of the picture, try the course