互联网公司常见的算法题,你了解多少?(上)

随着人工智能的普及,越来越多的朋友转为算法工程师。事实上,算法工程师有很多细分。今天主要关注三类:图像算法/计算机视觉工程师、机器学习工程师、数据挖掘算法工程师。结合你的求职经历,谈谈互联网公司常见的算法问题。,希望对你的求职面试有所帮助。(当然,总结比较仓促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

如果觉得文章有用,欢迎转发+评论,获取更多编程干货。欢迎大家关注我的头条号~

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论