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.
工作中难免自己面试别人以及别人面试自己,有一些开放问题有一些标准问题,整理在这里,比如面试别人的时候通常要求从易难,这些基础知识在要求别人掌握的时候自己也要掌握。
可视化相关的基础问题
多维数据的可视化,pca,tsne, umap 等压缩算法,motivation以及适用场景
常用的科学可视化算法的原理,等值面,切片,剖切,流线,体绘制等等
color mapping与transfer function的原理
AI相关的基础知识
基本上就是课本的章节,只列出list不列细节了
概率分布基础
线性回归
梯度下降
朴素贝叶斯
模型度量(混淆矩阵,ROC)
过拟合(领回归 L2正则化)
决策树
多层感知机 为什么用激活函数(非线性问题 为什么这个重要) 常见的激活函数
Back propagation
卷积操作(1d 2d 场景下 卷积核的物理意义 卷积核大小的意义)
循环神经网络作用与局限
梯度爆炸和梯度消失
LSTM
Encoder-decode架构
Transformer
图形学的基本知识
rendering pipeline都包括哪些主要的流程
相机矩阵的表示(为什么是4*4)
其他
面试的时候很多老师也喜欢问排列组合的问题,大多数学生一下也回答不太好,一般的思路是首相明确是排列问题还是组合问题(这个不要弄混),比如站队、电话号码这种,一般都是排列问题,需要考虑顺序,从一副扑克牌中抽几张,抓几个小球,这种一般都是组合问题,不考虑顺序,之后是解法的层面,需要明确用直接发还是间接法。但是比如说“依次翻开5张牌”,或者“给甲乙丙各一张”,这就变成了有序的问题,就是组合的场景了。
之前找工作时候准备的
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