
随着人工智能的普及,越来越多的朋友转为算法工程师。事实上,算法工程师有很多细分。今天主要关注三类:图像算法/计算机视觉工程师、机器学习工程师、数据挖掘算法工程师。结合你的求职经历,谈谈互联网公司常见的算法问题。,希望对你的求职面试有所帮助。(当然,总结比较仓促matlab边缘检测算子,可能是片面的,欢迎大家随时补充)。
(一)图像算法/计算机视觉工程师
包括图像算法工程师、图像处理工程师、音视频处理算法工程师、计算机视觉工程师等。
技能要求:
精通DirectX HLSL、OpenGL GLSL等着色器语言,熟悉GPU实现和常用图像处理算法的优化;
语言:精通C/C++;
工具:Matlab数学软件、CUDA计算平台、VTK图像图形开源软件
熟悉OpenCV/OpenGL/Caffe等常用开源库;
具有人脸识别、行人检测、视频分析、3D建模、动态跟踪、车辆识别、目标检测、跟踪识别等方面经验者优先;
熟悉基于GPU的算法设计与优化,有并行优化经验者优先;
【音视频领域】熟悉H.264、FFMPEG等视频编解码标准,熟悉rtmp等流媒体传输协议,熟悉视音频解码算法,研究各种多媒体文件格式,GPU加速;
面试问题总结:
· 常用的边缘检测算子有哪些,各有什么特点?
· 简述BP神经网络和AdBoost的基本原理?
· 关键字static的作用是什么?
· 简述 C 和 C++ 程序编译后的内存分配?
· 给定一个 0-1 矩阵,找到连通域。
· 编写一个函数来查找灰度图像的直方图。
· 写一个均值滤波器(median filter)。
· 写出高斯算子、索贝尔算子、拉普拉斯算子等,以及它们在梯度方向上的区别。
· 常用的特征提取方法。
· 常见的物体检测方法。
· 常用的边缘提取方法。
· 常用的插值方法。
· 常用的图像分割算法。
· 编写图像调整大小功能(放大和缩小)。
· 彩色图像、灰度图像、二值图像和索引图像有什么区别?(索引图像到底是什么?)
· 深度学习中常见的目标检测方法matlab边缘检测算子,异同。
·在给定相机范围和图像大小的情况下找到分辨率。
· 如何检测图片中的汽车,并识别车型,如果有障碍物怎么办?
· 数字识别过程。
· 介绍神经网络、SVM、AdaBoost、kNN……(每个人都可能深入询问各种细节)
· 编写梯度下降代码。
· 卷积神经网络和神经网络的区别。
卷积层的作用,池化层的作用,全连接层的作用。
· 什么是过拟合和欠拟合,以及如何改进它们。
1×1卷积和的作用。
计算卷积神经网络的一层参数。
(二)机器学习工程师
技能要求:
· 熟悉Hadoop/Hive和Map-Reduce计算模式,最好是Spark、Shark等;
· 大数据挖掘;
· 研发高性能、高并发的机器学习、数据挖掘方法和架构;
面试问题总结:
基础部分:
· 数据结构知识
· 掌握一门编程语言,c/c++/Java/Python
· 机器学习常用算法或子领域常用算法(推荐、自然语言处理、图像识别、语音识别等)。
计算机知识部分:
1.主要数据结构包括数组、增删链表、树、排序算法等。可能还有数据库基本语句、操作系统进程和线程相关、计算机网络的TCP/IP协议部分)
2. 编程技巧:一到三个在线编程问题
3. 算法能力:给出一个场景并回答使用什么算法来建模解决方案
机器学习的常用算法:
1.决策树ID3、C4.5、CART等,决策树拆分原理及剪枝策略
2. 神经网络的工作原理
3. SVM的原理及公式推导
4. 朴素贝叶斯公式
5. Bagging 和 Boosting 的区别
6. 如何调整GBDT的参数
7. 聚类过程
8. 什么是偏差和方差,高偏差和高方差表示什么
9.损失函数怎么理解,SVM的损失函数是什么,写公式
10.如何解决过拟合,L1和L2正则化有什么区别
11. 为什么使用最小二乘而不是至少四
12. GB法与牛顿法的区别,它们与泰勒公式的关系
编程能力:考察熟悉的编程语言的相关知识,掌握一门编程语言即可
java:static的作用,hashmap,arraylist和linklist的区别,多线程
c/c++:实现strstr(判断一个字符串是否是另一个字符串的子字符串)
python:安装python的命令是什么,用python读取文件,逐行输出(库函数不能用),常用python库。
其他采访内容:
· 数据结构和算法知识(手写代码)
· 特征工程
· PCA的原理
· 大数据开发能力:Hadoop/Hive/Map Reduce开发
· 深度学习知识
(三)数据挖掘算法工程师班
包括推荐算法工程师、数据挖掘算法工程师等。
技能要求:
· 熟悉常见的机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归和神经网络算法;
· 熟练使用SQL、Matlab、Python等工具者优先;
· Hadoop、Spark、Storm等大规模数据存储和计算平台的实践经验【都是分布式计算框架】
· 良好的数学基础,如高级数字、统计、数据结构
面试问题总结:
1. 您在研究/项目/实习经历中主要使用了哪些机器学习/数据挖掘算法?
2. 你熟悉的主要机器学习/数据挖掘算法有哪些?
3. 你使用过哪些机器学习/数据挖掘工具或框架?
4. 无监督算法和有监督算法有什么区别?
5. SVM 推导,特征?如何处理多分类?
6. LR 的推导,特征?
7. 决策树的特点?
8. SVM、LR、决策树的比较?
9. GBDT 和决策森林有什么区别?
10. 如何判断一个函数是凸函数还是非凸函数?
11. 解释对偶的概念。
12. 如何进行特征选择?
13.为什么会出现过拟合,有哪些方法可以防止或克服过拟合?
14.介绍卷积神经网络,它和DBN有什么区别?
15. EM算法求解的模型有哪些,为什么不用牛顿法或者梯度下降法呢?
16. 用 EM 算法推导解释 Kmeans。
17.都用到了哪些聚类算法,解释一下密度聚类算法。
18. 聚类算法中的距离度量是什么?
19. 实体识别是如何工作的?
20.解释贝叶斯公式和朴素贝叶斯分类
21.写一个Hadoop版本的wordcount
如果觉得文章有用,欢迎转发+评论,获取更多编程干货。欢迎大家关注我的头条号~
请登录后发表评论
注册
社交帐号登录