Copyright notice: This article is originally published on crossoverJie, and is reproduced with the authorship of the author

Write it up front

First of all, declare again: this article is not the author’s original, the article is from the public account (crossoverJie), reproduced by the author’s authorization.


During the June graduation season, is also the so-called interview season, reprint this article was a miracle of a three-month interview experience idea, I hope the article can help friend is preparing for the interview and inspiration. (the authors for the back-end interview, so please don’t get about technology, mainly to you rose up knowledge and cognitive!)

The body of the

Recently, some friends are interviewing Ali, and some friends have also discussed with me the reasons for the Java-interview project. Recently, I am also in charge of the recruitment of the department, which reminds me of the wonderful three-month Interview experience at the beginning of the year 🤣.

I wasn’t gonna say it, because it didn’t work out.

However, due to the experience of those months, I have a new understanding of the working mode of dACHang, the focus of the examination of candidates and the routine of interviewers, etc.

Of course, the most important thing is that this period of time to make up for the leakage of their own progress.

A little background:

From December last year to the end of March this year, I went back and forth with three departments of Ali.

Two of the departments passed the technical interview, and one was kneeling on three sides.

The results were good, but the process was tortuous.

Below I will try to describe the process and the general outline of the interview questions, hoping to bring some inspiration to the students who want to change jobs and are interviewing, help may not be, but inspiration can still have.

The following content is longer, please prepare the melon seed bench again.

A department

First of all, I had my first opportunity. In December last year, a big man joined me. Later, I found out that the technical Leader of a department saw my blog on the Internet and asked me if I wanted to try ali.

It had been more than a year since the last time I had met Ali, so I agreed.

A week after the recommendation, I received a call from Hangzhou. Coincidentally, AT that time, I was waiting at the airport with about an hour to check in. I thought I had enough time.

It was my first interview in more than a year, in a noisy environment like the airport. I was more or less nervous.

One side

Here are some of the things that impressed me:

Interviewer:

Tell me about a project you have done that impressed you deeply or that you think you have done well.

Blogger:

I think I did a good job in XX. I used XX requirements to achieve XX functions, and the performance was improved by N times.

Interviewer:

You said you used AOP, can you talk about its implementation principle?

Blogger:

It relies on dynamic proxies, which are divided into JDK and CGLIB…

Interviewer:

Well, can you talk about their differences and their strengths and weaknesses?

Blogger:

While the JDK is based on interface implementations, CGLIB inherits proxy classes…

That’s the way it goes on and on, and if you get to the end of the conversation you start asking random questions:

  • How is the JMM memory model divided? What is stored separately? Thread safe or not?
  • Class loading mechanism, when we talk about the parent delegate model we ask what violates the parent delegate model? Why is that? Why parent delegate? What are the benefits?
  • How do I use multithreading? What are the benefits? What do the core parameters of the thread pool mean?
  • How do threads communicate?
  • How does HashMap work? ConcurrentHashMap ConcurrentHashMap ConcurrentHashMap ConcurrentHashMap ConcurrentHashMap
  • How to design sub-database sub-table? Vertical split, horizontal split?
  • What are the rules for generating service ids?
  • SQL tuning? What should I pay attention to when using the database?
  • How to optimize when an application starts slowly?

It was all of those things, but by the time we got to the last one, I was already on the plane. Finally, I had to hang up in advance and told me that I would change another colleague to communicate with me before the end. It should be too much on one side after hearing such a reply, which was confirmed later.

Second interview

About a week later, the second interview came.

I recognized the voice, so I tried to ask if it was the same interviewer I had interviewed before, and it was.

Because the interviewer of the second interview had something unexpected, he came to take the place. So I quickly asked him if he could repeat the bad answer before? I got a positive response and started my performance.

Had the experience for the first time this time natural also easy road, originally feel everything is in master but be told to need written test suddenly excited wake up.

The written test is an online platform that requires writing code in a web page and will have a clear question:

Logs are read from a log file by keyword, the number of occurrences is recorded, and finally printed in order of occurrence.

In this process, it is important to communicate with the interviewer more, because the written test has a time limit, do not find the question in the end to understand the wrong, which is the same as the college entrance examination composition found the wrong direction.

In addition, it shows how you think about solving the problem, even if the final result is wrong, but the process of thinking may be in line with the interviewer’s appetite. This is the same as this year’s college entrance examination; High marks for correct process, low marks for results.

On three sides

After another week or so, I received calls from three people, who were usually technical leaders.

This process is less about technical details and more about software capabilities, such as teamwork and learning ability.

But I remember also asking the following technical questions:

  • What is your understanding of the HTTP protocol?
  • What do you understand about TCP? Three handshakes? Sliding Windows?
  • Basic algorithm, Base64, etc.
  • Java memory model, understanding Happen Before.

A week later I got a call from the HR assistant to set up a video interview with HRBP and the head of product technology.

But I did not face down, specific reasons have to look down.

B department of

After finishing the three aspects of department A, I waited for almost A week, during which TIME I received an email.

Basically, he saw me on GitHub, and their CTO was very interested in me (I couldn’t believe my glasses) and asked if I wanted to try Ali.

After comparing the differences between A and B departments, I found that B department was indeed more attractive in what it did. Then I expressed my concern that an interview was in the process. The other side said that they could have three interviews with me quickly in private, and I would make my own choice if everything was ok. At least it’s a win-win for both parties.

I thought it would not be a loss, and the other party was very sincere, agreed to try; Hence the following interview:

One side

Interviewer:

Understanding Java locks?

Blogger:

I talked about the use of the Synchronize Lock interface.

Interviewer:

What are their differences and advantages and disadvantages?

Blogger:

Synchronize (previously known as a weight lock in JDK1.6) synchronizes by moving in and out of an object monitor. After 1.6, XX optimization was made…

ReentrantLock is implemented using a clever data structure, and locking is explicit…

After that, we talked about distributed locks for almost half an hour.

Then I talked about my open source project:

  • How did you want to do this project?
  • There’s been some concern about what’s going on?
  • What is your future study plan?
  • What books do you read?

I didn’t talk much about technology, but I talked a lot about personal development.

For details about ReentrantLock, see here: Implementation principle of ReentrantLock Synchronize Keyword

Second interview

After almost a day’s interval, the second interview came soon.

It’s not very much:

  • Multiple ways to communicate between threads?
  • Traffic limiting algorithm? Single-machine current limiting? Distributed traffic limiting?
  • Guava Cache was mentioned. Do you know how it works?
  • How to locate an online problem?
  • High CPU load? OOM check?

After the chat said the next day should have three.

On three sides

The interviewer for the third interview should be the director mentioned in the previous email, who used to be a technical powerhouse at the front line. Not many questions:

  • Talk about your understanding of Netty?
  • Netty’s threading model?
  • Write an LRU cache.

The written test

I thought I had finished the technical interview, but I was informed that all the interview procedures would have to have a written test, so I took the written test again:

Print odd and even numbers alternately

This is relatively simple, lock-based, wake-on-wait mechanisms are ok. Finally, I was informed that I had passed the written test.

Later, with the help of the big man who recommended me, I passed the whole technical round in A dramatic way (I really appreciate his recognition), and I was informed of this news just after I had scheduled A video interview with department A.

Which means I have to turn down a department!

That’s right. I’m turning one down. It was really hard for me. I didn’t even think there were two more opportunities in front of me.

Finally, based on my personal interests and the enthusiasm of DEPARTMENT B, I was embarrassed to reject department A…

HR side

I have never met the HR process of such a big factory before, so I frantically searched, hoping to make up for some experience.

Maybe that’s how happiness begets sorrow. I did guess most of the questions asked by HR, but unfortunately I still failed in the end.

Then I wondered if I hadn’t rejected A, would the outcome have been different?

But that’s the way it is, there are no assumptions and everyone is responsible for their own choices!

The general question is:

  • Why do you want to come to Ali?
  • What is the most successful and challenging thing you have done?
  • Most memorable experience on the job?
  • What are your expectations for joining our team?

C department

Not long after I passed HR, I received an invitation from the third department.

To be honest, I refused. I was devastated that I couldn’t get my wish after nearly two months.

I expressed my idea to the boss who contacted me, but he thought that the reason why I was finally passed was a small problem. If I tried again, I would have a great chance to pass.

After I told my friends about it, they supported me to try again. There was nothing to lose and the interview was still going on.

So I was beaten chicken blood again, just have the following interview:

One side

Interviewer:

Selection and difference of servitization framework?

Blogger:

The differences, advantages and disadvantages of SpringCloud, Dubbo and Thrift are discussed together.

Interviewer:

How does the consistent Hash algorithm work?

Blogger:

Hash the data into a ring of 0 ~ 2^32-1…

Interviewer:

What do you understand about Zookeeper?

Blogger:

As a distributed coordinator…

Interviewer:

How do I handle MQ repeat consumption?

Blogger:

Business idempotent processing…

Interviewer:

Client load algorithm?

Blogger:

Polling, random, consistent Hash, failover, LRU, etc.

Interviewer:

Is an assignment of type long atomic?

Blogger:

It’s not…

Interviewer:

How does the volatile keyword work? Happen Before?

Blogger:

Visibility, consistency.

Second interview

About a week later, I received a second call:

I thought I would enter the written test directly as before, but THIS time I talked briefly first:

  • What is your understanding of microservices, their benefits and drawbacks?
  • Distributed cache design? Hot cache?

After that, the written examination process was officially entered:

This is about design skills, which is understanding design patterns, right? Whether it can cope with subsequent expansibility.

After finishing the written test, I communicated with the interviewer. I thought it would be an algorithm test, but later I learned that he could see the written test of the previous rounds, so he chose a direction that he had not done before.

So we do not have to deliberately go to the topic, there is always you can not think of, usually more accumulation is the hard truth.

On three sides

About two weeks later, I was informed by HR. I hope to attend the on-site interview in Hangzhou. And Ali paid for the round-trip tickets, hotels, etc.

Ali can be seen to be eager for talent or willing to pay the cost.

Since all this, as a travel so went to hangzhou.

The in-person interview is different from other interviews in that there are two interviewers:

Give a scenario and talk about the way you frame it.

This is higher to the usual accumulation requirements.

There is also a deep impression:

The entire process of clicking a button on a web page to the server is as complete as possible.

In fact, I have seen it before. It seems to be an interview question for Google.

After that, let me go back and wait for the notice. I knew I was cold before I saw HR.

conclusion

I’ve compiled most of the interview questions mentioned above on GitHub:

Warehouse Address:

Github.com/crossoverJi…

Finally, summarize the interview experience of nearly four months:

  • Must actively promote themselves, like in the A department of three, because the basic answer is not very good; Therefore, I finally expressed my attitude and enthusiasm for work and technology. Show the interviewer that your potential is worth an HC place.
  • In the interview process, you can take the initiative to put forward what you don’t know. You can’t pretend to know what you don’t know. You can direct the interviewer to your area of expertise. For example, I was working on locks at the time, so half an hour with the interviewer was a plus.
  • Always take the initiative to accumulate knowledge. Blogging and working on open source projects are great ways to do this.
  • Blog can record the pits I have stepped on to deepen my impression, and in the process of writing, I can check and fill in the gaps, and finally consolidate the whole knowledge system. Good content can also get unexpected harvest, such as my first interview opportunity.
  • GitHub is a calling card for developers, and being actively involved in open source projects can be a great way to brainstorm with global moguls, and a great plus in the interview process.
  • Interviewers usually end up asking, “Is there anything you want to ask me? Don’t ask about company benefits. May I ask about the performance of this interview? What else needs to be improved? So that you know how well you answered and you can complete yourself.

Another point: do not deny yourself after a failure in an interview, sometimes it is really not their ability. This is also about fate.

Behind bad luck comes good luck

The author of this article is a case in point. Although he failed to work for Ali, he is also the technical director of a department in the company he works for. He still has a nest in the city where he lives, a sweet home and a beautiful girlfriend to struggle for the life he wants.

Isn’t that what life is all about? There are things you want to do, people you care about And a warm place to live. I hope this article can give you a little inspiration or cognition on your way to job interview.

Finally, thanks again to the author crossoverJie dry goods to share, if you are learning back-end friends strongly recommend you pay attention to the same name public number crossoverJie, a lot of back-end dry goods waiting for you to take oh!

Then attach an original author’s public number map, recommended attention yo!

Welcome to darryrzhong, more dry goods waiting for you to get yo.

A little red heart, please! Because your encouragement is the biggest power that I write!

Please pay attention to more wonderful articles

  • Personal blog: Darryrzhong
  • The Denver nuggets
  • Jane’s book
  • SegmentFault
  • Moocs Notebook