1. Write it first
Today is The New Year’s Eve and the last day of the 2020 Lunar New Year. Looking back on the year of 2020, everyone obviously feels that I have no longer updated and shared my articles on major blog platforms (CSDN, Nuggets, Zhihu, wechat official account). I would like to say sorry to my friends who have been silently following me. In fact, I did not. On the contrary, I challenged my limits and did many things I had never done before in 2020. I believe the year 2020 will be meaningful for everyone. If I can describe my year 2020 in one word, it would be that everything is changing, learn to embrace change and try to grow with it. Looking back on this year, IT can be said that I have changed the most since graduation:
- Change1: It has been nearly three years since I graduated. I reluctantly bid farewell to my old employer (Scallop) and went to work in my dream factory (Ali). I left nanjing, the city where I had been working and living for more than three years, and came to Hangzhou to start over. Everything is strange, super unaccustomed at first, but what can we do? There’s no going back, just get used to it.
- Change2: I have written two series of technical tutorials. One is the “Dart Introduction to Practice” paid column. There are 25 Dart and Flutter related technical articles and source code, including basic syntax, Dart Advanced Asynchronous programming, and Flutter practice. The other is the Kotlin Wiki Tutorial, a free collection of 40 Kotlin technical articles posted on MOOCs, which is still being updated. I hope you can give me a lot of support. As for the paid column, there are still some free seats to be released on the public platform as a welfare.
- Change3: After entering Ali, I have always been interested in the work, which is very fortunate. In the past half year, I have led the landing and continuous construction of Flutter from 0 to 1 in the team. I have recently made a relatively big breakthrough in the dynamic of Flutter, and made Flutter landing in the recent new business scene.
- Change4: In 2021, Mr. Xiong Miao will continue to share technical articles. Combined with his work in Alibaba, he will focus on the cross-platform technology of Flutter, the dynamics of Flutter and the governance of end-to-end multi-containers (Flutter, Weex, H5 and apap). The Kotlin foundation and the implementation of Jetpack Compose in Android. Then release some ali push channel articles, the need to push can be directly in the public message, push post is not limited to the back end is not limited to technical post. Finally, the article will be published on the official account, personal blog platform, Zhihu, Nuggets, CSDN, Jianshu, Developer Toutiao, MOOC, Geek Academy and other platforms.
2. My 2020 interview
Although the interview has been more than half a year, I can still recall the scene of the interview, so I would like to share with you an interview from memory. During the epidemic period of 2020, I interviewed a total of 6 companies, including Alibaba (already employed), netease Cloud Music (already offered), Qutoutiao (already offered), Turing Video (already offered), Bytedance (kneeling on the technical side of the last round), and Microsoft China (kneeling on the second side). Due to a long time apart, I would like to share with you two more impressive interview experience, respectively Alibaba and Microsoft China experience.
2.1 Alibaba (Already employed)
It was quite unexpected for me to get the offer from Ali, because it took me one month from the interview to the final confirmation of the offer, and I didn’t expect to be admitted by Ali at that time. Ali went through 5 rounds of interview, including two rounds of telephone interview, one round of written test and two rounds of video interview.
One side
Two days after the resume, at 19:30, RECEIVED a phone call from Hangzhou Ali, 1.5 hours, the interviewer is P7 big guy, the following are some technical questions:
- Android View event distribution process and how to resolve sliding conflicts
- Looper, MessageQueue, Handler, and why Handler can switch between threads
- What are the memory leak scenarios and how to solve them? LeakCanary ever used? Can you tell us roughly how it works?
- Glide picture loading library, including life cycle binding, Glide level 3 cache, etc.
- Tell me about a project in your memory that has been the most technically challenging and rewarding. The interviewer asks for a lot of details.)
- You’ve written a lot about Kotlin. What is the nature of extension functions in Kotlin? (This question is actually relatively simple, since anyone who has decomcompiled the Kotlin extension function knows the answer.)
- Have you studied Flutter? What is the essential difference between Flutter and ReactNative in their cross-platform solutions? Is Flutter used in any actual projects? How do you solve the Flutter hybrid stack jump problem?
After finishing, he said that there was an email for a written test topic.
Second interview
Try topic is Java code templates, you just need to writes the concrete realization function, the subject is to design a logical expression calculator, because I wrote before the implementation of an arithmetic calculator, which is similar to processing brackets, so it took an hour to rolled out the code and run through all the case example, Then after another half hour of checking the code, I submitted it.
On three sides
The third face was separated from the second face for nearly a week before contact, I thought I hung up, so I did not pay attention to. Also in the evening, I received a phone call from Hangzhou asking if it was convenient for me to start a three-way interview. In fact, without any preparation, suddenly came three sides. The three interviewers were P8 leaders. The P8 leaders did not ask me about specific Technical points related to Android, but gave me several technical scenarios and asked me how to solve them. After I offered one solution, he asked if there were any other. Name all the solutions you know. The third interview didn’t have a lot of technical details, but it was one of the most exciting interviews I ever had. After more than an hour, I finally asked a lighter question: After reading and writing a lot on your blog, what do you think motivates you to keep sharing technical articles?
All around
The fourth is still a week later, this is in the morning received about the fourth video interview phone. The fourth round of the interviewer is P9 big guy, about 22:30 in the evening of the same day, think ali P9 big guy are so busy? At 21:00 that day, I waited in front of the computer, specially arranged the books on the computer desk. I was really nervous, and I did not expect to rush into ali’s last round of technical face. P9 big guy of video interview is more mature steady heavy duty, but look more affinity. At first, I made a simple self-introduction, as well as my current research technology and some project experience. The chat with the P9 leaders was relatively relaxed on the whole, lasting more than 40 minutes. Here are some questions I asked:
- Given a project scenario, talk about the architecture of your project, preferably one that can be drawn on the spot. (This node has a lot to talk about, including some DDD aspects to communicate with each other, feeling quite deep)
- Kotlin has many advantages in terms of syntax, engineering, etc.
- When a new technology is introduced, how do you promote it to the team?
- Describe the projects that you found most technologically rewarding or challenging, what problems you encountered and how you solved them.
- Tell me how you usually learn skills. (I remember that I happened to share the screen with the interviewer and accidentally opened my blog on Nuggets and said that I write technical blog to summarize and learn technology. He seemed very interested and asked me to introduce my blog to him. I selected an article to give him a general introduction of the content of the article.)
Although it lasted only 40 minutes and the boss didn’t tell me the result directly, it was obviously comfortable and satisfying. After the four sides, I know that the technical side is basically over, and finally the HR side.
Five sides (HR side)
The fifth interview with HR was still relatively quick. The next day, I received a video interview invitation from HR, and the appointment was still in the evening. I learned from the Internet that ali HR interview is also very strict, so I made preparations in advance. The HR section will not be expanded because it involves some confidentiality issues. After the HR interview, we talked about the salary about two days later, and then we received the oral offer, and immediately received the offer email.
2.2 Microsoft China – Suzhou (hanging on the second side)
The interview experience at Microsoft is the best and most efficient among these companies. First of all, I sent my Chinese resume to boss. I interviewed Mobile Engineer-Android/Outlook Mobile English requires middle. After the initial screening of your resume, you will be contacted by a Microsoft HR specialist who will explain in detail the requirements of Microsoft and the job interview, and tell you what you need to prepare. Including the Chinese resume, English resume, English self-introduction and interview will be involved in the assessment of points (including past jobs, reasons for changing jobs, Coding code three aspects). Interview down to the general feeling of Microsoft on English is more important than technology, especially for oral English or more important.
Interview preparation
I referred to the English resume template of some big names on Github, and then wrote my own specific content. All the English resume was written by Markdown. If you have any questions about your English resume, please leave a message to me. Then prepare English self-introduction, 150 ~ 200 words.
One side
The first interview was also a video interview. The interviewer was a Chinese boy. He introduced himself briefly in English and then my hometown briefly in English. After the English exchange, the technical interview will begin, but the more humane point is that the technical interview is in Chinese. There were few technical questions, and it was half an hour like a feel-through interview.
- Please briefly describe the View loading process in Android
- Talk briefly about the event distribution mechanism in Android
- Please briefly describe the functions of Handler in Android, combined with MessageQueue, Looper and their respective working principles
- Briefly explain how ThreadLocal works
- How do you learn Android technology
- Which aspect of Android technology are you studying recently
Second interview
The second part of Microsoft is the link of Test Project. In fact, it gives the effects of GIF page, including the pictures used in the Project and mock data JSON. It requires one week to complete this effect, and sends the final installable application package and source code to the email. Requirements for the project are:
- Try not to use third-party libraries and try to solve problems on your own
- Using Java code, Kotlin is a plus
- Correct code comments and test cases as necessary
As for the second page effect, in fact, the project had written a similar one before, and Kotlin was quite skilled at that time, so he directly used Kotlin to lift up, and took the code he had written before to directly use it. It only took a day and a half to complete the effect, and he did not want to die. At the time, I was quite puzzled, because the effect was actually implemented. When I asked the reason for the failure, it turned out that the code was missing the necessary comments and necessary test cases. I did not expect to fail in the details. Later, HR asked if SHE would try other Android positions, because she said that the interviewer gave me a good evaluation, but she declined because I had already accepted the offer from Ali.
4. Wrote two complete series of technical guides
4.1 Introduction to Dart Practice
As we all know, Flutter has unique advantages in cross-platform and performance. However, Dart is indispensable for Flutter application development. Therefore, learning Dart skills is essential for Flutter application development. However, there are few articles and data about Dart in China, and systematic Dart articles are even less. I have read a large number of excellent foreign articles about Dart and explained the key points of Dart in a simple way based on my own experience in Flutter development, so that you can obtain analysis of Dart skills and principles beyond the official Dart documents. This is the main chapter structure of the column, the core of which is the Asynchronous programming series in Dart.
- Basics: Through the first two articles, we walk through some of the basic syntax commonly used in Dart, such as variables and constants, basic data types, flow control choices, and loops. We’ll look in depth at collections, functions, collection operator functions, object-oriented, inheritance and Minxins, type systems and generics, use of the Library, and Dart’s latest syntax for nullable and non-null types, extension functions, and generics enhancement.
- Advanced: This section focuses on the core functions of Dart asynchronous programming and Dart and C intercalls added in Dart 2.6. Finally, we will analyze and explain the operation principle of Dart virtual machine, through which you will understand the hot Reload principle of Flutter.
- Finally, we will apply all the knowledge of this column to the Flutter project, which is a highly simulated open eye App. (Note: due to space constraints in this last section, we will not go into detail about the use of the Flutter component, but we will provide the full source code on Github.)
Please refer to the following QR code for details:
4.2 Kotlin Wiki Tutorial
Kotlin introductory course is mainly about 40 articles, divided into Kotlin environment configuration, Kotlin basic Grammar, Kotlin advanced grammar, Kotlin practice. Cover almost all of Kotlin’s syntax points from 0 to 1. Kotlin is a great way to learn how to use Kotlin, and the principles behind Kotlin syntax.
Please refer to the following QR code for details:
5. Planning later
At present, I am mainly responsible for the construction and landing of Flutter cross-platform container and some content related to Kotlin Android and back end. Therefore, the planning of the following article is mainly divided into two aspects, Flutter and Kotlin, for module expansion. In this way, I can share the problems encountered in the work and some relatively good solutions to everyone.
5.1 Article planning for the later stage of Flutter
For the later planning of Flutter, the list is very detailed, because this is an overall roadmap for the subsequent learning within the team. Dart basic knowledge, Flutter UI components, state management, hybrid plug-in development, engine layer principle source code, third-party library usage and analysis, performance monitoring, packaging and release, Flutter dynamic solutions, etc. Dart APT technology, Flutter UI components, state management, etc. Dart APT technology, Flutter UI components, state management, etc.
For the later planning of Flutter, the list is very detailed, because this is an overall roadmap for the subsequent learning within the team. Dart basic knowledge, Flutter UI components, state management, hybrid plug-in development, engine layer principle source code, third-party library usage and analysis, performance monitoring, packaging and release, Flutter dynamic solutions, etc. Dart APT technology, Flutter UI components, state management, etc. Dart APT technology, Flutter UI components, state management, etc.
5.2 Kotlin’s later article planning
As for Kotlin’s future plans, I will focus on two aspects: one is Kolint’s new declarative layout framework JetpackCompose for Android, and the other is Kotlin’s applications on the server side (such as Ktor), because these are more compatible with my current work. So we will review some of the most important topics in Kotlin, such as proxies, lambda expressions, generics, annotations, reflection, DSLS, coroutines, and the Kotlin Performance Tuning series.
5.3 Prepare relevant articles by interview
I will mainly share some of my review planning and precipitation of some technical articles in the months of interview preparation, including algorithm data structure brush questions, Android and Java related interview questions, JVMS related interview questions, Kotlin and Flutter related interview questions, and accumulation of precipitation technology experience in my work. The following chart is divided into different dimensions from the perspective of ability, and each dimension needs to be reviewed and consolidated again. Although it is for the interview, the process of thinking and sorting is also very important, so as to help you better understand yourself, check your shortcomings as soon as possible and constantly improve your ability.
6. Summary from Mr. Xiong Meow
In the end, these are some of the changes that Xiong Meow has experienced and done in this year. It was these interviews that touched me a lot. The continuous sharing of technical articles really helped me a lot. For example, in the last round of ali P9 interview, I wrote a lot of blog articles, which gave me a good interview evaluation. This is also the reason why I picked up sharing technical articles and stayed true to my original intention to continue my journey. Your Mr. Panda cat is back and will continue to share technical articles on various blogging platforms in 2021. I hope to continue to grow with you in 2021. Thank you for your constant attention. Happy New Year, 2021 keep up the good work.