Go through this list before the interview, in order to get good performance, just go through each list one by one and make sure all tips are reviewed and well memorized.
1 Programming foundations
(c++ typical question list, python typical question list, todo, add one small question into the list, the design strategy of hash map, how many strategy you can come up with)
2 Design experiences
(Understand several complicated system you worked on, remember some good design experience, architectures, etc. there is a blog about it, typical cases I know VTK-m, K8s, VTK, these design example can be used to explain programing foundations in detail)
3 Algorithm
(there are several blogs about it, just go through these questions frequently, open mind)
The good list about the dp experiment
https://docs.google.com/spreadsheets/d/1r0GPNY-B86bhFMXRhOAYnvArDDKcTp34IOMN-pfXibQ/edit#gid=0
4 Your project experience (20-30 presentation, you previous work, background, founding source, three aspects, highlights, summary) go through the work you previously worked on
5 A detailed docs list the potential questions regarding the project experience.
Other things to go through when there is free time
6 Parallel programming related knowledge, amadal law and all kinds of scale experiment
7 Math related knowledge, linear algebra, the matrix operations (reading previous blog)
8 OS related questions
Some strategy
1 be confident about the problem you are facing, they will not ask about rocket science, do not say I’m not well prepared or sth like that, or I do not know about it. just tell what you know or your thoughts, potential ideas, sth similar to current question. python tuple, c pair, c tuple.
2 consider some concrete example when they ask general question, or even the algorithm question, it is common that you can not have a good thought quickly. Then tell yourself, well let’s look at one or several cncrete exmaple (or easy use case scenarios) to see how to solve it, then find the law behind it. To make it general, what edge case need to be considered, etc. Then you just can start to solve one question each time. Then your ideas and thought comes. The typical outline is (1) understand input/output (2) solve small scale problem (3) try to make it more general (4)
3 double check the input/output of the question to make sure if you understand it correctly
4 start from a simple example or naive version of the question if you do not have a quick idea for that, let’s consider a simple case firstly, then how to move there from a simple case
Imaging the piano tech from Langlang, you need to be well prepared about these knowledge anytime, so you can play it any time. Take some time to review these stuff daily