This article is submitted by the author (original author: Xiao Panger). The original author is a 2021 undergraduate graduate studying in a non-211 or non-985 university. In February this year, I helped him guide his resume and asked him some questions that might be asked according to his resume.
In April, it was said that it had passed the four sides of Ali. Recently, I learned that it had successfully got the Offer of Ali. I feel very happy for him. He also summarized his interview experience and introduced how he prepared for the interview, hoping to bring some help to you.
Here’s what he said, with some of my comments.
preface
Two days ago, I received the offer of summer internship in Alibaba. From the beginning of the interview with senior students to the final offer, I have experienced four technical aspects, one cross face and one HR face. After a long wait and several grueling interviews, I finally got my summer internship offer.
H: The campus recruitment of Ali usually goes through 4-5 rounds of interviews, which will last about a month. Half of the time from each round to the next round will be less than two weeks. If the waiting time is too long, don’t worry, you can contact your internal referees, who can help check the progress.
To introduce myself
I come from a double-non-undergraduate school in southwest China, majoring in Internet of Things Engineering. My major has little to do with Java development, and I only taught some simple programming courses in school. The rest of the programming knowledge was learned and self-taught in the lab in my spare time. Technology is not a big dog, I have done a lot of projects, but most of them are small projects or some interesting small projects, I have not contacted the real sense of big projects. At ordinary times, I like to browse wechat public number, Jane book, excavation and other platforms, and take a look at technical articles. I have also occasionally written some articles myself. I spent a lot of time in the lab at school, and I like the process of writing codes and solving difficult problems.
Brother H: Similar to my own experience, I also graduated from a non-undergraduate school, the same is that I will use my spare time in college to study code. Now it seems that I really want to thank myself for working hard at that time.
The learning process
At the beginning, I learned the basics of Java by myself on Rookie tutorial and other tutorial websites. Later, I strengthened and consolidated the foundation of Java programming by reading Thoughts of Java Programming, Effective Java, and Hollis God’s “Road to God” series of articles. For the Java foundation must learn solid, this is the basic skills of programming, and practice martial arts when the horse step, although boring but must be solid.
Brother H: Yes, Java must have a solid foundation, which is a basic skill. If you don’t have a solid foundation, you can hardly pass the previous rounds of Technical aspects of Ali.
In terms of framework, the lab teacher first asked me to learn JFinal framework (but I didn’t take the initiative to learn it when I saw that spring was mentioned in many places on the Internet at that time). Later, my life mentor asked me to learn SpringBoot and Vue frameworks. Due to my previous experience in framework learning and the friendliness of these two frameworks for novices, The learning process is fast. At that time, I learned several series of articles from the Internet while reading, and then I made a message board within two weeks of learning (two versions were made, one version was separated from the front and back end, and the other version was thymeleaf).
In terms of JVM, I bought In-depth Understanding of Java Virtual Machine in the second semester of my sophomore year. At that time, I read it for the first time, but I did not understand almost everything in it. Later, I read it again in my junior year and during the review interview, and FINALLY I had a little understanding of the knowledge in the book. In addition to reading this book, I often read some tutorials, and then refer to the JVM issues in the tutorials to learn about the JVM.
Java concurrent programming, big three from B station to find a concurrent programming tutorial, and later bought a “Java high concurrent programming”, the first half of the book read 2, 3 times, to high concurrency has a certain understanding.
I have been learning the design mode from videos on B website, and I have also consulted online materials to further understand the design mode.
The above is the whole learning process of my college life. I have been working on projects during the learning process. The most important thing is to find mistakes and correct them, to find more appropriate solutions from reconstruction, and to discover the real operation principle of codes from debugging.
Brother H: When I was preparing for college admission, I also read a lot of books, and read a lot of sutras. Then I studied by myself through books or blogs.
Interview preparation
First of all, it must be well prepared before preparing for the school recruitment. The long-term is their basic programming skills and understanding of all aspects of knowledge, and the short-term is to break through their knowledge points.
I started to make preparations one and a half months before I submitted my resume. First of all, I had to brush Leetcode, the algorithm part is quite important. Besides, Ali also had written test scores, and some pen tests that were not too difficult would be asked during the interview.
Then it is to find a few more interviews, look at the older students at the interview when the interviewer asked what questions, if you can, try to answer again, if you can’t, then go to learn;
However, the online experience may be because everyone’s learning process is not the same, the probability of finding similar experience personal feeling is not too big, I happen to be in the knowledge planet of H university, I looked for H University to do a resume guidance (not advertising, is really thank H University);
Finally, I found a very complete Java interview questions and answers document (paid resources, but very valuable) in the knowledge planet of H University for review materials.
The interview process
First Technical Side (60min)
- What kind of thread pool do you use? What are the parameters of a custom thread pool
- Talk about the thread pool execution flow
- How are the number of core threads, maximum threads, and queue size defined in your project? Why is it defined this way? (This question is a plus for my tutor.)
- How to prevent oversold in the project
- How are your SQL statements for placing orders written? (Look at optimistic locks in MySQL.)
- If some users say that the feedback of the whole system is slow, how do you troubleshoot and solve the problem?
- What are the reasons for the slow system response?
- Algorithm: Given an unordered array and a target value, find all combinations in which the sum of the two numbers in the array equals the target value, and figure out their time complexity. (A very simple algorithm, leetcode easy difficulty)
- Know anything about the JVM memory model? What are threads exclusive and what are threads shared?
- Tell me more about the partitions of the Java heap, their scale, and what happens if you scale it up?
- Tell me about the JVM’s GC algorithm, why mark-tidy is better, and what problems it solves.
- Are you familiar with the Java class loading mechanism? What kinds of loaders are there?
- What commands do you need to enter if you want to view GC logs for running services online?
- If you know anything about hashmaps, let’s talk about how hashmaps work.
- If two objects have the same hashCode, are they necessarily the same object? If two objects are equal, do they have the same hashCode?
- How do I resolve hash conflicts?
- Is HashMap thread-safe, and how to make HashMap thread-safe?
- What database engine does MySQL database have?
- What is the data structure of InnoDB index? Explain its principle
- Can you give an example of database transaction levels and what problems they solve
- What is the default transaction level of MySQL?
- How to enable slow query in MySQL?
- What modules does Spring contain?
- Talk about your understanding of the Spring IOC container and the startup process
- Know anything about RPC frameworks or distributed stuff? (This is to test the understanding of new technology and attention to the development of the Internet)
- Tell me about a book you’ve read about Java
Brother H: On the one hand, I asked a total of 26 questions, which is a lot of information, but it can be seen that these questions are not difficult, mainly to observe the grasp of basic knowledge. The difficulty data of this round of interview is the normal difficulty of Ali, and the duration is also within the normal range. It’s all about the Java foundation, MySql database, and Spring framework.
Second Technical Side (30min)
- Tell me about the best project you worked on. Describe the technical difficulties and challenges of your project.
- How to solve the problem of overselling and selling less in the mall project?
- What is idempotent
- How does Redis ensure high availability
- You know the Redis sentinel mode?
- Do you see any drawbacks with Redis?
- How do you stress test? What are the stress test numbers?
- What are the parameters of a line city?
- What is the difference between the core thread count and the maximum thread count?
- What are the common rejection strategies?
- This section describes SpringBoot features
- What is the singleton pattern
- What is hungry and lazy mode
- What are the DOS and don ‘ts of slacker mode
- Talk about what the volatile keyword does and how it works
- Talk about spinlocks and some common spinlocks implementations
- Talk about the left outer join of the database
- Database index optimization
- The data structure of a database index
Brother H: On the basis of the first part, the second part begins to include some optimization methods, underlying principles, as well as the advantages and disadvantages of relevant frameworks. I hope to test whether the interviewee has the spirit of research and independent thinking, rather than the kind of person who can only use technology without thinking.
Third Technical Side (25min)
- How to solve the problem of overselling and selling less in the mall project?
- What were the problems encountered during the development project?
- How to solve the problem when Redis and database synchronization
- Let’s talk about thread states in Java
- What is the difference between blocking and waiting for a thread
- This section describes some Java locking mechanisms
- You know which types of locks
- why
wait
,notify
This method will be under the Object class - Distributed, RPC framework
- What is the threading model of Redis (NIO)
- How does the message queue implemented by Redis ensure that messages are not lost
- How is heap sort implemented
- How does TCP/IP ensure the reliable transmission of messages
- What is TCP/IP optimized for (congestion control and traffic control)
Brother H: The scope of this round is similar to that of the last round of interview, and the main purpose is also to make a selection round. From this round and the last round as a whole, the focus of the test is poor knowledge of concurrent programming and Redis.
Fourth Technical Side (15min)
- What is the content of the article you submitted
- Introduce message queues
- How is overselling solved?
- How is the ordering process designed?
- Let me introduce the snowflake algorithm
- How do you understand distributed?
- How do distributed groups communicate with each other?
- How does the producer-consumer model work?
- Java in the way to create threads
- Code scenario: Given a string, count the number of occurrences of each uppercase letter, sort by number, output the letter and the number of occurrences from smallest to largest
Brother H: At the beginning of this round, I asked about some knowledge related to distribution. This part of knowledge is indeed a little difficult for undergraduates, because most of them have not been exposed to it, so the requirements are not too high. They generally focus on some theoretical knowledge or conceptual understanding
Cross-interview (30 minutes)
- What might have been your better grades in school and why
- How long have you been learning Java
- How did you learn Java?
- What open source frameworks have you read?
- What do you think of open source framework source code?
- Describe a project that you worked on a lot or that was difficult
- Do you have any technical problems that you worked on as a team
- Has this project you are working on borrowed from other mature projects
- Tell me what the requirements and metrics are for your project
- How is the thread pool queue capacity determined in your project
- Are some of the solutions in the project individual ideas or the result of team discussions
- If let you do a mall system, you will do what technology selection
- What safety measures have been taken in the project
- How would you design a Taobao membership system?
- Where are you going in the future?
Brother H: This round of questions are more open, because all the explanatory techniques that can reach this round are ok. This round will generally give some questions and ask for solutions, so as to better investigate the interviewers’ understanding of all aspects of knowledge and how to flexibly use them.
The interview summary
Every interview is torture. Although I have seen many interviews with Ali before, it is said that ali interviewers will grasp a certain point and keep asking until they ask you not, but when you experience it for the first time, it is still torture.
However, the final result was good, at least I received the offer I wanted, and I was able to find an internship under the bad environment during the epidemic.
For the whole learning process and interview process, the biggest feeling has four:
- The basic knowledge should be solid, especially the basic knowledge of Java and database. If the basic knowledge is not solid, what framework and actual combat will not have good results
- Read some technical blogs or articles, but to have their own thinking, because a lot of technical articles are closely with the development of the Internet, read some can better understand the development direction of the Internet; At the same time their own thinking can also let themselves filter out some of the articles in the poor point of view, do take its essence to its dregs
- Initiative is very important, give me the senior is I take the initiative to know, my tutor is I take the initiative to know, learn technology is also I take the initiative to learn, there is no pie in the sky in this world, initiative will have a story
- A proper tutor is really important. Before I met my tutor, I was at a loss about my learning direction and didn’t know how to start with many things, and many articles didn’t solve my problems. The teacher at this time can point out the direction, let me learn a lot less bumpy road
Brother H: These four points are quite well summed up. If many people like the author of this paper can make efforts in accordance with these four points during their college life, I believe they will get good offers
The above is the whole process of applying for my summer internship. Of course, as a technical personnel, we should maintain the attitude of lifelong learning and constantly improve our core competitiveness, so as not to be eliminated by The Times.
The above is the author’s summary. In fact, we have had some communication since he started to prepare for the school recruitment and finally got the Offer from Ali. It can be seen that his satisfactory Offer is not only related to his own strength, but also played a great role in his own efforts.
From the beginning of preparing the resume, to preparing for the written interview, to getting the Offer, until this interview he wrote recently, it can be seen that he has made serious efforts to find a job.
Many people say that ali is becoming more and more demanding now, so if it is not 985/211, there will be no chance at all. However, in fact, through the experience of the author of this paper, we can know that opportunities are created by their own efforts.
Finally, a message to the author of this article, Fatty, myself and all readers:
May you work hard and be loved all your life. Want all have, can’t get all let go.