2020 interview finishing

In December 2019, after the company experienced some incidents, it made up its mind to prepare for a job change and target MS. Until I get the offer in mid-November 2020, I have a taste of it, only I know it. The following is a record of the materials, video links and experiences I watched this year.

table of Contents:

– Recommended resources
– Timeline for answering questions
– Interview process
– Interview suggestions
– Data structure roadmap

Recommended resources

1. Data structure and algorithm analysis C language description [America] Mark, Allen, Weiss (Mark, Allen, Weiss), Feng Shunxi Translation Machinery Industry Press Huazhang Book
This book comprehensively explains various basic data structures , And expanded many complex data structures, such as AVL tree, stretch tree, left-hand heap, binomial queue.
There is not much content in each chapter, but all of them are classics. For example, Chapter 8 is Union Find. Chapter 10 roughly explains several classic algorithms, greed, divide and conquer, DP, and backtracking. It is a data structure and algorithm book that is worth reading repeatedly.

2. Algorithms (4th edition) (produced by Turing) [America] Robert Sedgewick, [America] Kevin Wayne, translated by Xie Luyun, People’s Posts and Telecommunications Press.
Another very classic data structure and algorithm introductory book, although very thick, But because there are illustrations and exercises after the book (skip), the content is actually not much. I explain the various APIs of the data structure from the shallower to the deeper, and draw the data structure vividly, such as the find_floor, find_ceiling and other APIs of the search binary tree . As well as the MSD and LSD sorting of strings,
the wisdom summarized so many years ago shines everywhere .
This book will be very difficult to gnaw alone. The recommendation is to watch a chapter explaining the video first, and then read the book to review it again, so that the progress will be fast.
https://www.bilibili.com/video/BV1K4411b7jM?from=search&seid=3902990027078030614
https://www.bilibili.com/video/BV134411L7Um?from=search&seid=3902990027078030614

3. The third edition of the original book on Algorithms [US] Coleman's Huazhang Book The
Introduction to Algorithms focuses on the calculation of various time and space complexity. To be honest, I didn't read this book. I directly watched MIT's open course on Introduction to Algorithms, and carefully took notes of the content of each lesson. The effect was similar to reading a book. Have an understanding of the derivation methods of various time complexity O(nlogn), O(n^2), O(n), especially the time complexity calculation of multi-core, and the help of new technology to optimize the algorithm, such as cache , Distributed computing, etc. If you don’t understand it once, you can watch it repeatedly to deepen your understanding.
Paste the link of bilibili directly:
https://www.bilibili.com/video/BV1ot411a7Lt?from=search&seid=5037764187974363628

4. Labulaodng's algorithm
cheat sheet The popular up host on Leetcode, who seems to be a newly graduated graduate student, has made a certain summary of the algorithm on Leetcode. highly recommended. I chew every chapter repeatedly, which is especially helpful for the proficiency of data structures and algorithms, and the understanding of algorithms can improve a step.

5. Operating System: Essence and Design Principles (6th edition of the original book) by Stallings (William Stallings), Chen Xiangqun, Chen Yu Translation Machinery Industry Press Huazhang Book
This book does not target a specific operating system. Can see the shadow of windows and linux. This book introduces the various components of the operating system in more detail, so it is regarded as an explanation of professional terms. It is a good reference book. If you flip it twice, you will always get a lot of gains.

6. Programming Pearls [America] Jon Bentley is
one of the must-read books for programmers. After reading the data structure before, you will understand the situations in which the data structure is used and the pros and cons after reading this book. The book also details common knowledge that programmers need to consider, code tuning, performance analysis, and space saving. The data structure part is not the focus, and the various use scenarios of the technology are the characteristics of this book.

7. Algorithm notes by Diao Rui and Xie Yan.
I mainly aim at the author is ACMer and want to see the knowledge points of professional algorithm engineers, but the content is dry and difficult to understand. The code is sudo code, which is more difficult to digest. About the dynamic programming part of Chapter 2 and Chapter 3, I'll put it on the shelf.
I mention this book here, just to sigh that all classic computer books are written by professors in American universities. The gap between China and the United States is still very large in terms of basic theory.

8. Computer Science Series · Cloud Computing: Concepts, Technology and Architecture [America] Thomas ERL, [English] Zaigham Mahmood, [Brazil] Ricardo Puttini, Gong Yili, He Lian, Hu Chuangyi Machinery Industry Press Huazhang Books
as distribution System, an introductory book for cloud computing, explains the basic concepts. Turn over if nothing happens.

9. There are also many MIT CS courses in NetEase open classes. Watching more will also help English listening.

10. "Nine Lectures on Backpacks"
ACM's dynamic programming classics, I only watched the first and second lectures, which can solve most of the 0-1 problems on Leetcode.

Question timeline:

Foundation period:

From December 2019 to January 2020, I finished reading Book 1, and then started to do some leetcode problems. I found that it is difficult to figure out what data structure or algorithm to solve the problem.
So I re-watched Book 1, Book 2, and watched the video of Book 2 at the same time. After reading a chapter, go to Leetcode to do 5~10 questions about this data structure, and write the data structure directly from 0 to deepen the impression. Zhihu also has a lot of experience sharing on Leetcode, you can read more to find a good direction for the next step.
By May 2020, after reading Book 1, Book 2 and the video, there will be about 200 leetcode titles. The data structure and algorithm are almost mastered. Next, start to brush the questions randomly, that is, not for a certain question type, but to do simple and medium questions directly in order. During the period, I encountered many clever problem-solving skills, flexible use of various data structures and algorithms.
During the period, I started to review Book 3, and saw Book 4 when I was reading the comment area, and started to read the video of Book 3 and the electronic version of Book 4 while doing the questions. This process continued until August 2020.

bottleneck:

Starting from August 2020, it is obvious that there will be two situations in the problem. Either the problem will know what to do at a glance and will be solved quickly, or the problem has been unable to think of a solution.
This is because the former questions can be directly applied with algorithms, and similar questions can be found from the experience of previous questions. The latter are mostly new questions and new data structures. You must calm down and carefully understand the solutions, from violent solutions to gradual optimization to O(nlogn), O(n), etc. During this period of time, I will experience a lot of frustration, I will feel a little confused, and I will feel like giving up when encountering a bit more difficult. At this time, you need to continue to cheer yourself up and fill in chicken soup. Persevere in order to achieve quantitative changes and qualitative changes.
During this time, you can swipe the tutorial videos of many leetcode up masters on bilibili, which can speed up the learning of new question types.

Sprint and review period:

Around October 2020, the target department received news that the hire count was increased, and it is expected that the interview will be conducted within 2 months. At this time, I started to do two things:
1. Go out to find another company to practice the interview, find someone to simulate the interview, and simulate the process of doing online questions.
After a real interview, you can organize your work in the past few years and exercise your own ideas. You can find several questions that are often asked by general interviewers.
I found that there were problems in the introduction and Q&A, such as unclear thinking, unclear work content, and unclear project experience.
Find someone to simulate the process of doing the question online. The other party randomly finds the question outside 1000. After you see the question, explain the idea to the other party first, and then directly write the question in the notepad. The goal is to write a perfect code that compiles and compiles in 10-20 minutes, and all corner cases are considered.
2. Sort all the simple and medium questions that have been done before into brain maps according to categories. And describe the idea of ​​solving the problem in 1-2 sentences after each topic. Easy to review.
The advantage of the mind map is to review, organize, and digest again. It avoids the situation of greed and greed, causing the previous questions to be forgotten.
Baidu brain map link:
http://naotu.baidu.com/file/95c3d4021d64acd2dbdd29e273a348dc?token=fe237079bc46383f

Interview process

After contacting HR in November 2020, 1 round of telephone interviews were conducted on the first day, and 4 rounds of technical interviews were conducted after passing.
On the first side, I introduced myself in English and then answered some technical questions in English.
The programming question is "XXX". After thinking about it, I talked to the interviewer about the idea of ​​the question and wrote the code in 20 minutes. There is one case that was not taken into consideration and was written under the guidance of the interviewer.
The second side, Chinese self-introduction, project experience.
The programming question is "XXX", which is completed in 10 minutes, and the second question "XXX" is completed in 10 minutes.
The third side, Chinese self-introduction, the most challenging tasks and problems in the work, and the project experience. Answered a technical question in English.
Programming question "XXX", first use the speed pointer method, first traverse recursively to construct the left and right subtrees. Completed in 10 minutes, the time complexity is O(nlogn).
The interviewer asked if there is an O(n) way to output the linked list to an array, and then traverse recursively to construct it first.
The interviewer asked if there is a method with O(1) space complexity. First traverse the linked list, know the length, and then construct the left subtree first in the middle order traversal method. The trick lies in the structure similar to the line segment tree.
The fourth side, Chinese self-introduction, the most challenging tasks and problems in the work, and the project experience. Answered a technical question in English.
Design question "XXX", the
fifth side of "XXX" , Boss interview, and I talked about the future development of the company and the department in a friendly way. I introduced myself to my work experience, project experience, and answered some technical questions in English.
Programming question "XXX", about 15 minutes to complete.

Interview preparation

1. Prepare resumes in Chinese and English.
2. Prepare an interview presentation in both Chinese and English:
self-introduction, job content, and a case that can reflect one's technical ability.
Work content, it is recommended to list the framework first, what are the responsibilities of the work, and then expand each aspect, what are the contents, and each content has 1-2 specific technical examples.
This avoids the embarrassment of large and virtual when introducing the project and work content, which can be large or small, and can be easily retracted. Otherwise, the interviewer sees that the job content is too broad to ask questions in depth.
3. Questions to be prepared:
1. The most fulfilling bugfix.
2. The most challenging problem, how to think and how to deal with it.
3. For the projects that you have fully participated in, at the leader level, you need to explain the entire project process clearly.

Data structure roadmap

Start with the data structure of continuous memory:
1. Array
2, String
3, Linked List
4, Stack
5, Queue
6, Hash
7, Heap
8, and Query Set
Then the algorithm of continuous memory:
1. Sort: Hill sort , Quick sort, merge sort, count sort.
Need to know the characteristics of each sort, time complexity (guaranteed, worst, random), space complexity, stability, etc.
2. Search: Dichotomy, double pointer, quick selection.
Then the tree-like data structure:
1. Binary tree
2. Search binary tree
3. Dictionary tree
4. Line segment tree and
other N-ary trees, red-black tree, stretch tree, just understand it , No need to be able to write it out.

Then there are advanced algorithms:
1. Traversal: breadth, depth, double-ended breadth
2. Greedy, divide and conquer, backtracking, FSM.

The last is the more difficult dynamic programming, divided into one-dimensional DP, two-dimensional DP, 0-1 knapsack.
The point is to be able to derive the state transition equation for dynamic programming. With the equation, the code is half done.
Insert picture description here

Guess you like

Origin blog.csdn.net/gongjun12345/article/details/110675668