算法工程师面试

算法工程师面试必备

  1. 成为算法工程师,应该学习哪些东西
    1. 首先说算法工程师有几个方向:NLP,推荐,CV,深度学习,然后结合公司业务做得内容各不相同
    2. 传统机器学习算法:感知机,SVM,LR,softmax,Kmeans,DBSCAN,决策树(CART,ID3,C45),GBDT,RF,Adaboost,xgboost,EM,BP神经网络,朴素贝叶斯,LDA,PCA,核函数,最大熵等
    3. 深度学习:CNN,RNN,LSTM,常用激活函数,Adam等优化算法,梯度消失(爆炸)等
    4. 推荐系统:itemBasedCF,userBasedCF,冷启动,SVD(各种变形),FM,LFM等
    5. NLP:TF-IDF,textrank,word2vec(能推导,看过源码),LCA,simhash
    6. 常见概念:最大似然估计,最小二乘法,模型融合方法,L1L2正则(Lasso,elestic net),判别式模型与生成式模型,熵-交叉熵-KL散度,数据归一化,最优化方法(梯度下降,牛顿法,共轭梯度法),无偏估计,F1(ROC,recall,precision等),交叉验证,bias-variance-tradeoff,皮尔逊系数,
    7. 概率论,高数,线性代数(像我一样懒的人,就可以遇到哪里复习哪里,:D)
    8. 常见问题(具体答案去搜知乎或者百度,最好能在实际项目中总结出来):
      1. 常见损失函数
      2. SGD与BGD
      3. 如何处理样本非均衡问题
      4. 过拟合原因,以及解决办法
      5. 如何处理数据缺失问题
      6. 如何选择特征
      7. L1为什么能让参数稀疏,L2为什么会让参数趋于较小值,L1优化方法
      8. 各模型的优缺点,以及适用场景
    9. 学明白上述所有内容你需要多长时间?反正我这么笨的人用了不到一年时间(我本科完全没接触过算法相关,完全是研一学的)
  2. 推荐书籍
    1. C++:《C++primer5》《STL源码分析》《深度探索C++对象模型》《Effective C++》《Effective STL》 (虽然有些书有点老,不过开卷有益吧)(其他语言就不管了哈)
    2. python:《python学习手册》《python源码分析》《改善python程序的91个建议》(Python必须要会)
    3. 刷题:《编程之美》《剑指offer》《程序员代码面试指南》《leetcode》
    4. 算法相关:《统计学习方法》(这本多看)《数据挖掘导论》《数学之美》《田林轩视频》《吴恩达视频》《西瓜书》
  3. 简历项目
    1. 最好能有两个相关的项目,而且是有质量的,不要太水
    2. 没有项目的,可以去参见比赛(kaggle,天池),比赛成绩高,比项目管用。成绩不高的,一定要有自己的解决方案。
  4. 刷题
    1. 刷题是必须的,书目就是上边列的哪些
    2. 每天一道或者两道,风吹雨打也不能停。如果坚持住,一年后你就成了

其他

  1. 什么叫学透了,学明白了
    1. 别人问你问题,你能讲明白
    2. 躺在床上,闭着眼,能完整的阐述一个算法(什么是完整?以SVM为例,SVM的推导?KKT条件?什么是支持向量?什么是松弛变量?为什么推导成对偶形式?核函数的作用是什么?如何选择核函数?模型优缺点?)你说这些问题我都明白,但是你是否能形成一个知识体系呢?一提到SVM,就能想到所有这些问题呢?
    3. 能够达到第二步的要求,那么面试官在问“说一下你对SVM的认识”,你就可以滔滔不绝的讲了,这样面试官才能认可你,这样就很舒服了。
  2. 人脉太重要了
    1. 找工作时,互相帮助,多加几个交流群,观摩大佬的一举一动
    2. 多和上班的师兄沟通,因为他们能把简历直接给到leader手里
    3. 多向周围的大神学习。就像我实验室的ACM大佬,他是我让我佩服的五体投地的存在。每次有什么不会做的编程题,找他解释都是秒解。还要感谢实验室的师兄,带我项目,助我去阿里实习。
    原文作者:HappyAngel19921027
    原文地址: https://blog.csdn.net/u010398562/article/details/78009939
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞