|
有目标是非常好的事情,我根据我的经验可以大致介绍一下作为偏向应用类的运筹优化算法工程师需要的能力(如果是偏研究科学家那就是完全不能的能力画像了,相对入行要求也会比较高一些)
- 通用能力:入门必须的东西,如果没有可能笔试都无法通过
- 编程语言:如果以算法工程师为导向,那么编程能力是必须的,涉及到的语言主要有Cpp, Java和Python三类,对于基础的语法需要掌握;
- 数据结构:并非所有数据结构都能在实际中用得上,但是功利一些来讲,由于互联网这边面试一定会有编程题考察,因此还是得专门用leetcode训练一下;
- 算法能力:面试主要考察的部分,基础不牢会影响面评和最终定级[直接就影响到能不能过,给多少钱]
- 运筹优化算法:笼统一些说就是将业务问题转化为数学模型,以及对应数学模型如何求解的能力。这里的内容就比较多了:
- 确定性问题的建模与求解 - 通常会考察LP, MIP的建模和求解方式,例如Simplex, Branch & Bound, Branch & Cut的思想,Column generation,benders分解的思想等等;
- 随机性问题的建模与求解 - 包含一些随机规划、鲁棒优化、分布式鲁棒优化的知识,属于进阶项,对于校招生,了解是加分,不了解也还行;
- 底层数学:比较需要掌握的就是凸优化、线性优化,进阶一些的比如锥优化在自动驾驶的路径规划里用的也比较多;
- 求解器基础:分为对求解器的了解以及用求解器完成建模的能力。对于一些开源/商用的求解器有基本的了解,例如ortools, CPLEX, GUROBI, SCIP等等,能够完成基本的线性规划、整数规划建模,对于一些常见约束的reformulation有基本的sense,例如如何使用binary variable建模if-else逻辑,max(a, b)的线性化等等;
- 机器学习算法:熟悉一些基本的机器学习算法会对工作很有帮助,在大数据的时代,单纯用运筹优化算法的场景已经不多了,基本都是data-driven optimization或者predict-then optimize;
- 行业认知:根据具体行业,有行业认知是加分项,没有的话对于行业新人也不会苛求太多
- 供应链基础:例如库存策略、零售行业涉及的环节这些知识
- 自动驾驶基础:如果要做自动驾驶行业的决策类算法,对于QCQP这类问题得有一些了解
- 电网行业基础:对于用电的潮汐性之类的认知
|
|