随着人工智能的大热,身边转型做算法工程师的朋友越来越多。其实算法工程师的细分领域也很多,今天我主要从图像算法/计算机视觉工程师类、机器学习工程师、数据挖掘算法工程师类这三类,根据大家的求职经验,来说说互联网公司常见的算法题,希望对大家求职面试有所帮助。(当然,总结的比较仓促,可能比较片面,欢迎大家随时补充)。
(一)图像算法/计算机视觉工程师类
包括图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师等。
技术要求:
精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及 优化;
语言:精通C/C++;
工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件
熟悉OpenCV/OpenGL/Caffe等常用开源库;
有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑;
熟悉基于GPU的算法设计与优化和并行优化经验者优先;
【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速;
面试题汇总:
· 常用边缘检测有哪些算子,各有什么特性?
· 简述BP神经网络,AdBoost的基本原理?
· 关键字static的作用是什么?
· 简述C,C++程序编译的内存分配情况?
· 给定0-1矩阵,求连通域。
· 写一个函数,求灰度图的直方图。
· 写一个均值滤波(中值滤波)。
· 写出高斯算子,Sobel算子,拉普拉斯算子等,以及它们梯度方向上的区别。
· 常用的特征提取方法。
· 常用的目标检测方法。
· 常用的边缘提取方法。
· 常用的插值方法。
· 常用的图像分割算法。
· 写一个图像resize函数(放大和缩小)。
· 彩色图像、灰度图像、二值图像和索引图像区别?(索引图像到底是啥?)
· 深度学习中目标检测的常用方法,异同。
· 给定摄像头范围和图像大小求分辨率。
· 如何检测图片中的汽车,并识别车型,如果有遮挡怎么办?
· 数字识别的流程。
· 介绍神经网络、SVM、AdaBoost、kNN…(每一个都可能深入问各种细节)
· 写梯度下降代码。
· 卷积神经网络与神经网络的区别。
· 卷积层的作用、pooling层的作用,全连接层的作用。
· 过拟合和欠拟合分别是什么,如何改善。
· 1x1卷积和的作用。
· 计算卷积神经网络某一层参数量。(二)机器学习工程师
技术要求:
· 熟悉Hadoop/Hive以及Map-Reduce计算模式,熟悉Spark、Shark等尤佳;
· 大数据挖掘;
· 高性能、高并发的机器学习、数据挖掘方法及架构的研发;
面试题汇总:
基础部分:
· 数据结构知识
· 掌握一门编程语言,c/c++/Java/Python
· 机器学习常用算法或者某一细分领域(推荐,自然语言处理,图像识别,语音识别等)的常用算法。
计算机知识部分:
1. 主要是数据结构包括数组,增删链表,树,排序算法等。也可能会有数据库基本语句,操作系统进程和 线程相关的,计算机网络的TCP/IP协议部分)
2. 编程能力: 一到三道在线编程题目
3. 算法能力: 给出一个场景,回答使用什么算法去建模解决
机器学习常用算法:
1. 决策树的ID3,C4.5,CART等,决策树的split原理和剪枝策略
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
留言与评论(共有 0 条评论) |