23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

background:

This week, I got an interview invitation from Alibaba. The position I applied for was a JAVA software engineer in an IOT department in Alipay . The interview time was notified 1 day after the telephone interview, and the location was the high-end Shanghai Building.

After receiving the interview notice, I was both happy and a little timid. I’m glad that one of the top manufacturers in the country will give me an interview opportunity, proving that some parts of me have been initially affirmed by the interviewers; what’s timid is: I have long heard that a large company like Alibaba has high requirements. It is difficult for people who are not waiting to get in, and they feel insufficient confidence in their technical knowledge.

Interview prelude

In the afternoon of the interview day, I took the subway to the Lujiazui subway station according to the available interview time. As it was the first time to participate in such a big factory interview, I was very nervous and excited along the way. After getting out of the subway, I walked to Shanghai Tower by myself (fortunately, I went to Lujiazui a few times when I was bored, and the tallest revolving building in the Lujiazui area that went straight to the sky was everywhere, otherwise I would have to navigate by foot again). I walked like flying quickly and successfully reached the Nth floor after applying for the certificate. I got out of the elevator and saw the three characters "Alipay" showing the entrance curtain. I finally saw the Alipay app that I use on my mobile phone every day. Have to say (forgive me for not seeing the market)!

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

N minutes will be omitted here. . . . . . Go straight to the interview.

The interviewer is a young brother, around 30 years old.

Alipay interview experience

During the interview, I always spent about 50 minutes talking with the interviewer, even though I was very nervous during this period. The main questions the interviewer asked during this period are as follows:

[1] First, make a self-introduction. I just briefly introduced, in a few sentences, the basic content of the work when I was in college and the previous company.

[2] The detailed process of HTTPS connection establishment. This question was reviewed when I took the subway, so I answered it to the interviewer according to what I knew, and the answer was more detailed.

  • Why is a CA organization used in HTTPS and what is its purpose? My answer is that there is a CA organization that can ensure the authenticity of the server certificate.
  • What problems can HTTPS solve? My answer is to prevent packet capture.
  • After the HTTPS connection is established, why is symmetric encryption used for each transmission instead of RSA encryption with public key and private key? My answer is that symmetric encryption is faster

Do you know the time it takes to encrypt and decrypt algorithms such as RSA, DES, and AES? Have you ever done DEMO verification? What I said is that RSA should be the most time-consuming, and symmetric encryption should be faster, but DEMO verification has not been done indeed.

  • Why does HTTPS generate a random number every time after establishing a connection? What are the design goals of this? My answer is that you can prevent replay attacks.
  • What software did you use to capture packets before? I said wireshark. So the interviewer asked me what the TCP protocol format of wireshark is like. I didn't understand this problem very well, so I gave up and said I didn't know.
  • If you let you use httpClient or urlConnection to design an HTTPS request client, how would you design it? I haven't touched this scene before. I said I don't know. When I used httpClient to call the https API interface, I could directly access it, so I didn't study it in depth. Maybe the CA certificate comes with httpClient. This question should have not been answered well, or the deviation was too great, the HTTPS question stopped, and the question on HTTPS was not continued.

[3] I think you have used spring framework in your previous projects, right? I said yes, so the question came.

So the Spring framework diagram that I built immediately came to my mind:

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

Etc., etc......

  • Let's talk about the principle of starting the spring project! After hearing the question, I found that the turning point was too great. How difficult it was to deepen so much. I also forgot to review the principles of spring during the interview. So I talked about the general loading of the spring framework. After startup, the configured beans will be loaded into the spring container according to the configuration parameters in the project.
  • Tell us which classes or packages are you familiar with in the spring source code? It was another question that did not review, so I said I only remembered the beanFactory class, and forgot everything else.
  • Then talk about several commonly used subclasses under beanFactory? I said I forgot. Then I didn't continue to ask questions under spring.

[Four], what about the principle of concurrentHashMap? I really don't know this, and I rarely use this, so I just tell the truth. The principle of concurrentHashmap is not clear. I have used AtomicInteger in previous projects. When I looked at the source code, I saw that there were cas operations in it. I think concurrentHashmap is thread-safe and should be implemented using locks or synchronized locks. .

  • What is the difference between lock and synchronized at the bottom? I said I don't know.

[5] What kinds of thread pools are there? What I answered was specific. I forgot. I only remember the ones with fixes and others.

[6]. Tell me, do you remember the commonly used sorting algorithms, tell me? (I feel that I have answered the questions continuously, but I have not answered it well, and I am getting more and more nervous.) I really forgot about the algorithm, and I didn't review it. I haven't played this one or two years after graduation. I just said, I only remember bubbling, and almost forgot everything else. I only remembered things like fast queues and merges.

  • Then write a bubble sort? Give me a piece of paper and let me write it down. I thought about it, bubbling the algorithm is so simple, I am sure I will. So I took the pen and paper and brushed it for tens of seconds. After writing it, I felt that I could not make a mistake, so I showed it to him. After the interviewer looked at it, he said yes. (After coming back, I thought about the bubbling that I had handwritten at that time, there was a grammatical error, and it was wrong, and then I thought about how embarrassing it was!)
  • After reading the bubbling I wrote, the interviewer asked me again and again, remember the linked list, right? I said remember. At that time, he drew a linked list on paper and asked me how to judge that the linked list has a loop? I answered an algorithm, and he said, my algorithm is too time-complex, not good, is there any other way? After thinking about it, I shook my head and told him other things I don't know for now.

[7]. Let’s talk about the nettry work in the hardware and server communication you are responsible for in the project. What have you solved? I just said about my project at that time. I was mainly responsible for the analysis of the hardware TCP protocol stack and the protocol encapsulation when sending instructions to the hardware.

  • Tell me about the bluetooth connection process? I haven't touched this before, so I don't know.

[8] Then I asked what I did in the two national competitions that I participated in in college?  I said one is from the Ministry of Education, the other is from the Ministry of Industry and Information Technology, the other is an algorithm competition similar to ACM, and the other is a software design competition. I was too nervous at the time, so I didn't add much.

[9]. Ask me what is my usual development code style and what development tools do I usually use? I said it was IDEA, the style is really unclear.

[10]. Tell me about the biggest problem you solve in software development? This question, I quickly flashed in the brain of the software I have made from the beginning to the present, I went, I really didn't think which one is the most representative. So I picked a project for splitting queries in mysql query, using multithreading + result aggregation. (When I think about it now, if I said at the time that the super class-grabbing software I used to make would be better, unfortunately there was no if)

[11] Then ask me if I have any questions for him?

At that time, almost 40 minutes passed. I was still very nervous at the time, and I felt that my answer was not very good, and many basic questions were not answered. So I just said it straight

I said that I don’t think I answered very well. Can you give me some suggestions on the technology?

The younger brother of the interviewer at Shi said that he told me a question that someone had told me: the question of breadth and depth selection. He said that at the age of 23, I should have a firm grasp of basic knowledge, and not only pursue breadth but also depth for technical knowledge. When learning technology, it is best to learn source code + document learning + video learning by looking at the system architecture diagram .

The above is a summary of my main questions in the Alipay interview, do not spray, welcome to leave a message for guidance!

Personal summary:

After passing this interview with a major factory, I learned that "opportunities are reserved for those who are prepared" is correct at all. You should review what you have learned. For more important interviews, you have to take some time to review what you have learned. When reviewing, especially for basic knowledge, you should review carefully, especially JAVA multithreading, spring source code, HTTP, TCP, IO, database transactions , Index principles related to in-depth understanding.

Reflection:

Remember when he said:

Time flies. It has been almost a year since I graduated from university in a blink of an eye, but I feel that I have not improved much in the first year after graduation, and I feel a little impetuous about the learning of technology. It’s been more than a year since I came to Shanghai. My knowledge hasn’t increased much, but my belly has grown a lot. The few abdominal muscles I saw when I looked at it have now become a big belly. This year, inertia has increased, and the original passion and vitality have also dropped sharply. The one who used to knock on the keyboard in the dormitory during the winter vacation at the university was very happy because he made an app for rushing to evaluate the teaching. The one who stood on the three-foot podium for project defenses and competitions with teachers and classmates, once had a halo on campus Where have you been, a brilliant young man?

How to break impetuousness?

The ancients said: Born in sorrow, die in happiness.

  1. Working hard in existing positions. It is to use awesome technology to solve the problems that others say, and it is to work overtime to complete time-critical and task-heavy projects. The industry will not give up.
  2. Job hopping. Ask me how much money I want, those companies can give it, but I do not have the technical and management capabilities that others require. If you don’t have one, you can study hard, and if you have one, you can submit your resume.

There are two common development paths for programmers: management path, technical path, the following, enjoy:

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

What are you suitable for? What do you need to learn?

1. Read the source code

Reading and analyzing source code is the most basic code ability of programmers, and it is also the foundation of code farmers. Learning the classic design ideas and common design patterns used in classic source code can help you understand how Daniel writes code, so as to absorb Niu's code skills . In Alibaba interviews, the underlying principles of frameworks such as MyBatis and Spring are often asked

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

2. Distributed architecture

Alibaba has many large teams. There are many small teams in this large team. After the small teams, they do different businesses. If you want to become a universal player among the first-line Internet companies, there are many in the most mainstream distributed architecture. Knowledge must be understood and learned. And during the Ali interview , the interviewer will ask questions about actual application scenarios: such as microservices, user volume, concurrency, business complexity, and scalability, etc. I won't go into details here. This dick provides a learning idea of ​​a distributed architecture and is also a system that I am currently learning:

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

3. Microservice architecture

Microservices is one of the hottest topics in Internet architecture technology, and it is also the direction that Bendi is currently studying and researching. During the Alibaba interview process, interviewers rarely ask questions about microservices.

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

4. Concurrent programming

Concurrent programming is almost all Internet company interview questions. Concurrent programming is one of the most important skills for Java programmers, and also one of the most difficult skills to master.

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

5. Performance optimization

Performance has always been a headache for programmers. When the system architecture becomes complex and huge, the performance will drop. Especially the first-line Internet companies like Alibaba pay the most attention. Therefore, if you want to enter Alibaba , performance optimization must be a part of in-depth learning and understanding. Although performance optimization is not an expert, you can confidently say that you are proficient

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

6. Design patterns

There is no doubt that design patterns are win-win for others and systems. Design patterns make code preparation truly engineering. Design patterns are the cornerstone of software engineering, just like the bricks of a building.

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

As a back-end Java person, I have compiled a lot of advanced architecture video materials, interview documents, and PDF learning materials. For the above set of system outline editors, there are also corresponding advanced architecture video materials. If you are sure of yourself For future roads or those who want to learn to improve their technology stack and technical knowledge, you can follow the editor to help the editor forward this article and reply with a private message [data] or check below to obtain learning materials to improve yourself (full set of interview documents, PDF, and -Level architecture video)

 

23-year-old me, from the summary and reflections after the Alibaba JAVA interview, I hope it’s not too late for these insights

 

 

Obtain learning materials after three consecutive follow-up, private message reply [data] or scan the following to receive!

Concluding remarks

It is true that no matter how old the programmer is, it is actually a hurdle, but there is more than one way to pass this hurdle. Either the four major players are pursuing a paradise life, or struggling further along the old road, or whether there is a shortcut to starting a business, or changing the environment to continue moving forward. In any case, only by working hard can we live better.

Guess you like

Origin blog.csdn.net/m0_46757769/article/details/109476918