作业帮算法面经秘籍

《AI未来星球》陪伴成长的人工智能社群,价值过万的各种内部资源及活动,限时特惠中,点击查看。

求职跳槽福利:为了便于大家求职、跳槽的准备,大白将45家大厂的面经,按照知识框架,整理成700多页的《人工智能算法岗江湖武林秘籍》,限时开放下载,点击查看下载。


面经整理历程:经过一年多的努力,大白整理了超过3500篇,各类大厂的算法面经资料。

并将涉及到的知识点,按照知识框架,分类汇总,每个公司整理成一篇,比如本文的作业帮面经

大家对照面经,可以了解心仪的公司,会根据你的简历,问哪些知识点?便于大家对掌握的知识,进行回顾梳理。

希望为大家在求职或者跳槽的道路上,提供一些帮助,为大家取得心仪的offer助力。

面经整理心得:大白也将整理所有面经的心得,写成了一篇文章,点击查看心得

其他大厂面经:国内其他大厂的面经汇总,点击查看目录

作业帮面经整理:江大白

1 作业帮面经汇总资料

1.1 面经汇总参考资料

① 参考资料:

(1)牛客网:作业帮面经-41篇,网页链接

(2)知乎面经:点击进入查看

(3)面试圈:点击进入查看

面经框架及参考答案:

(1)面经知识框架:点击进入查看

(2)面经参考答案:点击进入查看

1.2 面经涉及招聘岗位

(1)全职岗位类

【机器学习算法工程师】、【自然语言算法工程师】、【机器学习数据挖掘工程师】、【广告推荐系统工程师】、【nlp算法工程师】、【图像视觉算法工程师】

1.3 面试流程时间安排

PS以上流程为大白总结归纳所得,以供参考。

其他注意点:

● 有的人是三面,有的人是四面

1.4 作业帮面试心得汇总

★ 非常抠细节,非常看重码代码的能力

★ 有些人一面上来就是三道编程题

★ 算法会问很多,看重代码能力

★ 整体来说,面试难度中规中矩,主要看重的是实习,可能是实习做过相关的业务,所以问业务比较多,机器学习基础是回答实习问题的过程中带出来的

★ 面试官都挺好的,不会刻意为难,不会的我就坦白说没有了解过,面试官都会说ok,那我们换一个,也没有因此就挂掉

★ 虽然是算法岗,也会问一些计算机网络的问题

2 作业帮面经涉及基础知识点

2.1 图像处理基础

● canny算子的原理说一下?

2.2 深度学习:CNN卷积神经网络方面

2.2.1 讲解相关原理

2.2.1.1 池化方面

● 有哪些pooling?答了maxpooling,averagepooling和global average polling。

2.2.1.2 网络结构方面

● resnet v2和resnet v1的区别?

● inception各个版本的讲解;

● mobileNet v2的实现?

2.2.1.3 其他方面

● CNN的Batch Normalization工作原理,作用是什么?预测的时候怎么工作的?

2.2.2 数学计算

● 计算传统卷积和depthwise - pointwise的计算量?

2.2.3 激活函数类

● 写一下softmax的公式

2.3 深度学习:RNN递归神经网络方面

2.3.1 讲解相关原理

● bilstm-crf原理,讲crf原理?

● LSTM与RNN的不同?

2.3.2 手绘网络原理

● LSTM画图

2.4 深度学习:CNN&RNN通用的问题

2.4.1 基础知识点

● CNN为什么比NLP能够取得好的效果?

2.4.2 模型评价

● 模型的评价指标AUC是如何计算的,ROC曲线的横纵坐标代表了什么含义?

● 如果把不平衡的训练集(正负样本1:3)通过降采样平衡后,那么对于平衡后的AUC值和预测概率值有怎样的变化?

2.5 传统机器学习方面

2.5.1 讲解相关原理

2.5.1.1 数据准备

2.5.1.2 特征工程

① 特征降维

② 特征选择

● 说了一些特征处理,特征工程的手段?

2.5.1.3 有监督学习-分类和回归方面

① 分类回归树(集成学习)

A.基于bagging:随机森林

● 对比Random Forest 和 XGBoost?

B.基于boosting:Adaboost、GDBT、XGBoost

● XGBoost模型里面参数有哪些?XGBoost模型中对数据进行采样的好处?

● GBDT分类与回归的原理?GBDT为什么能用残差拟合?

● xgboost对比gbdt的不同,xgboost最大的缺点是什么?

● xgboost如何分裂,分裂时的依据,如何控制它是否分裂的,xgboost和GBDT区别?GBDT能不能预排序?

● GBDT的GB和DT从头说一下它的过程,在进行分类和回归的时候有什么不同?

● xgboost防止过拟合的方法,xgboost过拟合怎么办?

● XGBoost的损失函数是什么,节点划分准则是什么;

● GBDT算法时间复杂度?

● 讲讲xgboost,每个叶子节点的值是怎么确定的,如果换一个loss 函数还是一样吗?

● xgboost如何处理的缺失值?

● xgboost,lightgbm的区别?

② 逻辑回归LR

● Logistic回归能处理浮点数吗?

● LR除了可以用梯度下降法求还可以用什么方法求?

● LR怎么加入非线性?

● LR中的连续值特征是如何处理的

● 为什么LR要先对数据进行归一化处理

● LR用了sigmoid函数,那么LR是线性模型还是非线性模型,为什么?

● 对于传统的LR,SVM和树模型,对于他们的特征,你分别是怎么处理的?

● LR损失函数,极大似然思想

③ SVM

● SVM为什么要转成对偶问题进行求解,为什么对偶问题的解是原问题的解 ?

● SVM如何进行多分类,多分类hinge loss什么形式?

● SVM的核函数都有啥,为什么转换成对偶问题,svm对缺失值敏感吗?

● 树模型的损失函数是什么?

④ 决策树

● 决策树的构成,损失函数,剪枝,特征分裂?

● 决策树过拟合怎么办,决策树剪枝方法?

● 决策树对连续值和离散值特征是否会重复利用作为分割特征 ?

● 如何用回归树做分类问题?

● 为什么树模型对于稀疏特征效果不好?

2.5.1.4 无监督学习-聚类方面

● 聚类算法中遇到哪些问题?(kmeans 可能存在空类)

2.5.2 手推算法及代码

● 推导LR?

● 推导SVM?

2.6 深度学习&机器学习面经通用知识点

2.6.1 损失函数方面

● 问图像识别常用的损失函数?交叉熵损失

● 问逻辑回归模型,损失函数和交叉熵的区别?

● 写一下交叉熵的公式?

2.6.2 激活函数方面

● 常见的激活函数有哪些,然后比较一下tanh和sigmoid、relu、likelyrelu?

2.6.3 网络优化梯度下降方面

● 梯度下降的优化算法有哪些?

2.6.4 正则化方面

● 正则化为什么有效果?

2.6.5 过拟合&欠拟合方面

● 过拟合是什么,为什么发生过拟合,怎么解决?

● 防止过拟合,dropout实际怎么操作?

● dropout和BN

3 作业帮面经涉及项目知识点

3.1 深度学习:CNN卷积神经网络方面

3.1.1 目标检测方面

● IOU如何计算?

● 说一下Faster rcnn框架?

3.2 深度学习:RNN递归神经网络方面

3.2.1 自然语言处理NLP

① Bert

● Bert应用于有空格丢失或者单词拼写错误等数据是否有效,有何改进办法?

② Word2vec

● 讲解了word2vec,损失函数,怎么优化?

● 词袋到word2vec改进了什么、word2vec到bert又改进了什么?

③ 其他

● 如果label不是one-hot而是一个服从某个分布的向量,那么该如何设置损失函数?

3.3 强化学习

● 问了简历相关的项目,问GAN是怎么组成的,问生成器用了哪些损失函数?

3.4 机器学习方面

3.4.1 推荐系统

● 说一说FM,FM参数初始化是什么样子的呢?

● 介绍了一下deepFM,还有deepFM的改进deep cross networdk 和 xdeepfm?

4 数据结构与算法分析相关知识点

4.1 数据结构与算法分析

4.1.1 线性表

4.1.1.1 数组

● 寻找数组的最短连续子数组的长度,使得子数组的和大于等于t?

● 旋转数组找最大值

● 旋转数组求给定数的下标?

● 找出数组中最大的k个元素;

想法:

(1)快排,堆排或者归并排序进行排序,然后输出;

(2)优先队列实现;

(3)定义一个长度为k的queue,如果大于则弹出队头,维护一个递增队列,每次都需要对比队尾元素和当前元素,在做相应操作,时间复杂度过高。

● 找出有序数组中第一个小于k的数?

● 找出乱序数组种的第k大的数?

● 顺时针打印数组?

● 连续子数组乘积不大于k的可行解个数?

● 1,5,9

10,11,13

12,13,15

数组每行有序,每列有序,求第k小的数?

● 求正方形数组的90度旋转?

● 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

● 数组,链表的区别

4.1.1.2 链表

● 给定一个链表,划分成子链表反转。例如,10个节点,前4个反转,4-8反转,剩下两个不足4,不用反转?

4.1.1.3 栈

● 给定两个队列,实现一个栈的功能?

4.1.1.4 字符串

● 字符串中第一个不重复的字符?

● 输入一个string,例如'aacab',求所有可能的分割使得每一个substring 都是回文数?

例如 [a aca b] [a a c a b] [aa c a b]

● [2、1、6、3、100、200、4]找出最长连续序列1、2、3、4。要O(n)复杂度,lz只写了O(nlogn)的。然后换了个简单的,最长连续子字符串?

● 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串?

字符串分割:(1)传统方法,O(n^2)时间复杂度较高;(2)队列实现,时间复杂度仍旧较高;

● 最长递增子序列(要求复杂度nlog(n)),最长不重复连续字串(要求复杂度n)

4.1.2 树

● 输入一颗多叉树的根节点,求叶节点的值?

● 给出一串树的先序遍历字符串,*代表空节点,要求(1)写出节点定义 (2)构建树并返回根节点 (3)打印中序遍历

● 已知二叉树的先序和中序遍历序列,如何还原二叉树的结构?

● 给出前序遍历和中序遍历,重建二叉树?

● 给定二叉树的前序和中序序列,重构二叉树?

● 层次遍历建树、后序打印(非递归)

● 给定n,用1到n作为二叉搜索树的节点值,返回n个点所能组成的二叉搜索树的个数,比如n=3?

● 验证是平衡二叉树?

● 完全二叉树的定义

4.1.3 排序

● 排序算法最小的时间复杂度是多少?什么算法?

● 对于1亿个整数进行排序最小的时间复杂度是多少?(基数排序时间复杂度为O(n)),但实际中数据量大的时候其实快排比基数排序要快?这是为什么? 那对1亿个浮点数进行排序最小的时间复杂度呢?为什么?

● 如何从200亿数字中,找到最大的100个?

● 手写快排,快速排序

● 写一下堆排序

● 合并k个有序数组,思路(堆排和归并)

4.2 算法思想实战及智力题

4.2.1 算法思想实战

● 两个人乒乓球,A比B厉害,那么A想赢的话,3局2胜好还是5局3胜好?这个题是可以用二项分布计算的。

● 两个年级同学的身高数据,正态的,怎么判断数据是相同的分布?

● 合法括号的题目

● 青蛙跳台阶的题目

● Top k 个高频元素

● 数学题,a,b,c三个连续的数,其中有两个质数,证明剩下的那个数一定可以被6整除

4.2.2 智力题

● N3的木板,用13的块铺满,有多少种方案?

● 给定一个大小为n*3的木板,问用大小为1*3的木板进行填充,有多少种填充方法?(斐波那契数列,动态规划)

● 机器人从左上角走到右下角的步数?

4.3 其他方面

4.3.1 数论

● 三个连续的数,首先它们都大于6,并且它们有两个质数,证明另一个一定能被6整除?

● 设计一个随机算法,将一个整数M分成N份 要求每份在区间【minV, maxV】之间?

● 求无符号int型中转为二进制有多少1,并考虑简便算法减少位运算次数?

4.3.2 计算几何

● 如何判断平面内的线段是否相交?

4.3.3 概率分析

● 比如五个硬币有两个两面都是花,两个两个都是字,一个一花一字,问给定正面为字的情况下背面为字的概率?

● 两个随机数产生器,R1以0.7的概率产生1,以0.3的概率产生0.R2以0.3的概率产生1,0.7的概率产生0。问如何组合这两种产生器,使新得到的随机数产生器,以0.5的概率产生1,0.5的概率产生0,随机数产生器可复用?

4.3.4 矩阵运算

● 给定一个矩阵,以及两个左边,返回以两个左边为左上角和右下角的矩形中所有数字之和。要求每次调用时间复杂度尽可能低,意思就是不能遍历相加。

(先用动态规划的思路,求出以每一个点为右下角的大矩形的所有数字的和,然后根据传入的两个坐标,将矩形面积相减就可以了)

4.3.5 其他

● 求x的平方根,精度0.01?

● 100以内的奇数以及质数,将其排列,需要满足相邻两个数不互质?

● 给定一个长度为N个整数的list,用最少的比较次数,得出list中的最大值和最小值?

4.4 Leetcode&剑指offer原题

● Leetcode 29题

● Leetcode 原题:二叉树最大路径和

● Leetcode 原题:动态规划,求递增数组的最长子序列长度,要求子序列满足斐波那契数列?

5 编程高频问题:Python&C/C++方面

5.1 python方面

5.1.1 基础知识

5.1.1.1 区别比较

● 元组和列表的区别?如何遍历元组?

5.1.1.2 讲解原理

● python 装饰器讲一下原理?

5.1.1.3 讲解应用

● Python中如何导入包,以及如何导包的执行顺序

● 如何深拷贝?

5.2 C/C++方面

6 操作系统高频问题:数据库&线程&常用命令等

6.1 数据库方面

6.2 操作系统方面

● TCP/IP模型

● 三次握手

7 技术&产品&开放性问题

7.1 技术方面

● alpha go的19x19的棋盘学习的时候,会用pooling吗?你猜它一共学了多少的特征?

● 有一个森林里面树木年龄、高度的数据,数据可能会有录入错误,怎么设计方案来挑出错误的数据?

● 大数据算法岗:布隆过滤器,URL去重(一个网站有100亿url要存入一个黑名单中,每条 url 平均 50 字节。这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中? )

7.2 产品方面

● 你的流量预测模型能否应用到作业帮的场景中,预测暑期多少学生吗?

本文由 大白智能 作者:凯哲 发表,其版权均为 大白智能 所有,文章内容系作者个人观点,不代表 大白智能 对观点赞同或支持。如需转载,请注明文章来源。

发表评论

This site is protected by wp-copyrightpro.com