依图科技算法面经秘籍

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

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


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

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

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

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

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

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

依图科技面经整理:江大白

1 依图科技面经汇总资料

1.1 面经汇总参考资料

① 参考资料:

(1)牛客网:依图科技面经-29篇,网页链接

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

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

面经框架及参考答案:

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

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

1.2 面经涉及招聘岗位

(1)全职岗位类

【NLP算法工程师】、【计算机视觉算法工程师】

1.3 面试流程时间安排

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

其他注意点:

● 实习岗位,有的人是2面+HR

● 正式岗位,有的人是3面+HR

1.4 依图科技面试心得汇总

★ 感觉对编程题和逻辑题非常注重,考察了很多这方面的题目

★ 也会深挖项目,使用的模型,损失函数,数据都会讲解

★ 手撕代码为主,不像其他公司以项目为主

★ 自我介绍+两道编程题+有时间问项目,三面包括最后的leader面都是逻辑为主

★ 面试官喜欢用C++做算法,说第一次见到用python刷题的,被鄙视

★ 经常是稍微问下项目,然后开始做题,而且经常会根据项目问一下发散性的问题

★ 对依图的现场面进行一下评价,总体来说比较人性化,面试官都很友善(我做的四道题都有被提示),比较重视数学功底、coding和推理能力,但对机器学习深度学习的基础考察的不多。

2 依图科技面经涉及基础知识点

2.1 图像处理基础

● 均值滤波的原理说一下?

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

2.2.1 讲解相关原理

2.2.1.1 卷积方面

● Group conv和separable conv讲一下原理?

● 3D数据直接3D卷积,和2.5D有什么区别?

● Dropout原理?

2.2.1.2 网络结构方面

● 说一下mobile net和resnet在特征提取上的本质不同?这两种网络使用的场景和原因?

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

2.3.1 讲解相关原理

● LSTM和GRU区别?

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

2.4.1 模型评价

● 简历上很多的项目指标、业务场景?

● 项目中涉及的各个算法的评价指标意义和数值,整体评价, 数据量,怎么划分, 样本不平衡?

2.5 传统机器学习方面

2.5.1 讲解相关原理

2.5.1.1 数据准备

2.5.1.2 特征工程

① 特征降维

② 特征选择

● 特征工程一般怎么做?

● 针对简历上的一个数据挖掘项目,详细说明算法模型结构,一共试过哪些模型,为什么选用这个模型,数据清洗难点,特征工程怎么做的(非数值型构建三元组+TransR生成embedding,数值型分箱+one-hot,特征组合,构建梯度特征,归一化)

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

2.5.1.4 无监督学习-聚类方面

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

2.6.1 损失函数方面

● Triplet loss,写出数学形式?

2.6.2 正则化方面

● 正则化是什么,LN是什么,作用是什么?

2.6.3 过拟合&欠拟合方面

● 过拟合手段有哪些?

3 依图科技面经涉及项目知识点

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

3.1.1 目标检测方面

● MTCNN做人脸检测的原理,网络结构,train的方法?

● SSD和Faster-rcnn的区别?

● 问了对目标检测网络的理解以及简述Yolo几个版本?

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

3.2.1 自然语言处理NLP

① Bert

● BERT原理?

● BERT为什么有效,与其他模型相比呢?

② Transformer

● Transformer的Multi-head attention计算细节?

● Transformer优点?

③ Word2vec

● Word2vec、glove和fasttext区别?

● word2vec训练时出现过问题吗,比如训练后的词之间的相似性不准?

④ 其他

● 数据源如何来的,数据更新如何解决?

● embedding方式有哪些?

● 模型预测错误的数据,为什么会错,分析过么?

● sentence pairs模型中,为什么不直接用score排序?

3.3 强化学习

3.4 机器学习方面

● 假如用户点击了一张图片,如何根据这张图片去推荐相关视频?从数据收集,模型选取,模型评估,线上测试方面说说。

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

4.1 数据结构与算法分析

4.1.1 线性表

4.1.1.1 数组

● 旋转数组的查找?即给一个有序数组,从中间某点隔开,然后左右部分互换位置,然后问在这个数组中怎么进行二分查找。(也可能是旋转数组最小值)

● 排序数组有重复,旋转之后查找?

● 二维数组左到右上到下非递增,查找元素?注意数组维度很大时要使用二分查找思想

● 有一个字符串数组,如['A', 'B', 'C'],1)输入两个元素,如'A', 'Z',求这两个元素在列表里的距离,如果不存在则返回-1;2)如果希望在O(1)时间内查找,如何建立哈希表?

● 求数组的连续子序列,使其和最大?

● 有一个长度为n的数组,元素都是[1, n]且无重复,这时随机删除一个元素,1)求删除元素,2)要求时间复杂度O(n),空间O(1),3)不能改变数组,4)如果删除两个元素,如何求?

● 一个数组,为1, 2, 3, ...n ,现在去掉了一个数,剩下n-1个数。求去掉的是哪个数。注意: 不准改变原数组,原数组无序空间复杂度O(1)。 第二问,如果去掉了2个数呢?

● 给一个数组,给一个值s。判断这个数组里是否存在子数组,其和等于s?如果有的话,有几个? N(n)复杂度

● 两个排好序的数组,求两个数组第k大的数?

● 找到数组第K大的数(这个题有两个解法,堆排序和类似快排划分的方法,我当时只说出来一种,如果把两种说法都讲一下,并且讲一下复杂度和使用情况,肯定加分不少)

● 两个排序数组的中位数,写了O(n)的解法,介绍了一下lgn的方法的思路

● 两个有序数组求第k大的数?

4.1.1.2 字符串

● 两字符串a,b,求a+b?先填充然后再进位加,比较简单。

● 字符串数字相减?

● 给一个字符串,切割成一些回文子串,求所有可能?

4.1.2 树

● 二叉树的遍历 递归非递归

● 手写字典树

4.1.3 排序

● topK问题,时间复杂度,代码实现?

4.2 算法思想实战及智力题

4.2.1 算法思想实战

● 有n个人,m个坏人。每次检查一个人无论是不是坏人都会导致这个人死亡。那么查到第一个坏人的死掉好人的期望是多少?(可以用动态规划)

● 最大水池面积,给定一个整数n, 1..n多少个唯一的BST?

● n个石头,每次拿1~m个呢?编程实现?

● 1111aaaa1111ffffuuuu,输出:[('1',4),('a',4),('1',4),('f',4),('u',4)]这样的格式?

对于上面的算法题,两次操作,每次删除一个tuple,删除tuple的第二个是数作为增益,删除操作可能发生合并,如删除('a',4),第一个和第三个tuple合并,求最大增益

4.2.2 智力题

● n个石头,甲乙两人轮流取1~2个石头,最后取石头的人输了,什么情况下甲一定赢?

● 博弈论甲乙拿石子的问题, 一堆石子, 甲乙每次都可以拿1~2个, 拿完最后一个的获胜, 假定甲乙都足够聪明,甲先开始, 什么情况甲必胜?两堆石子呢?

● 7个石头,甲乙两个人,每次只能拿1~2个,谁最后拿完谁赢?请问是否存在先手必胜策略?

● 平均需要抛掷多少次硬币,才会首次出现连续的两个正面?

● 2个鸡蛋100层楼,从某一层开始鸡蛋扔下去会碎掉,如果鸡蛋没碎则可以继续使用。问最少扔多少次可以把那一层给求出来?

● 公司举办Party,每个人参加party都会带有一个开心度,HR希望Party总体开心度高,但每个人的直属领导参加这个人开心度就为0,跨级领导不影响,多个人可能有同一个领导,HR要确定参加party的人。输入两个列表,第一个为每个人的开心度,比如[2,3,4,1,1,8,5],第二个为对应人的领导序号,如[-1,3,0,1,1,2,3]表示第一个人没有领导(-1),第二个人的领导是第4位,第三个人的领导是第1位,以此类推。求这个party最大的开心度为多少?

● 给定多条公交线路(可以认为是环线),以及一个初始出发点,以及目的地。求乘坐最少公交车的次数(不存在则返回-1)?

● 年利率为4%,利滚利,多少年之后本金翻倍。就是估算(1.04)n=2这个等式中的n。在面试官提示下,又说了一种方法,大概就是,2->1.414->1.44->1.2->1.21->1.1,再估计几个1.04联乘可以得到1.1。

4.3 其他方面

4.3.1 数论

● 抛一枚硬币,第一次出现正面的期望?

● 抛一枚硬币,连续两次出现正面的期望?

● 证明根号 2 的无理性?

● 某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天。但在其余时候,所有员工都没有假期,必须正常上班。这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大?

● 最大子区间,随机数截断,并求出均值?

● 和为某一值的连续子串的个数。我说用累加法再求差,面试官说数组都是正数,可以不用额外空间吗?

● 大数加法,包含小数和正负号?

● 输入一个列表,删除相邻的相同元素,比如输入[1,2,2,3],返回[1,3],输入[1,2,2,2,3],返回[1,2,3],输入[1,2,4,4,2],返回[1]?

4.3.2 概率分析

● 一枚硬币,抛n次,问正面数大于反面数的概率? n是常数,不是无穷大。这题分奇数偶数讨论。偶数时写出概率的式子。奇数答案是1/2

● 一副扑克牌54张,给3个人发牌,把大小王发到了同一个人的概率?

● 4只鸭子,随机在池塘中游走,请问四只鸭子能分到同一个半圆的概率是多少?

● n个骰子扔一下,点数加起来等于m的概率?

● 求圆上任意三个点组成一个三角形是锐角三角形的概率?

● 抛 n 次硬币,求反面比正面少的概率

● 掷三个骰子,掷出来的三个值之和为10的概率。我用的笨方法,列举出所有情况算概率?

掷四个骰子,掷出来的四值之和概率最大的是哪一个。猜的14,猜对了。

第二问中的掷出来是14的概率有多大?没有任何思路,后来面试官告诉我可以用动态规划来做,在面试官的提示下,写了动态转移方程。

4.3.3 矩阵运算

● 矩阵m*n,从左上角到右下角,路径和最大?

● n*m矩阵,填充成 S 型走位的正整数?

● 01矩阵,滑动窗口翻转修改为全0矩阵?

● 已知矩阵高h,宽w,蛇形矩阵?写代码把他画出来。 第二问,给定矩阵内一点y,x 在O(1)时间内给出该点的值?

● 给定一个二维矩阵,计算其子矩形范围内元素的总和?该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。 要求求和复杂度为O(1)。

● 给定一个矩阵,里面元素可以为负数,0或者正数,求最大子矩阵的和,子矩阵可以为一个数字,或者方阵矩阵。

● 给你一个矩阵,里面只有0或者1,假设给定其中的一个位置,它的相邻8个位置有1,则认为他们是连通的,求最大连通区域1的个数。

● 一个矩阵,从左到右,从上到下是递增的,可能会有相等的,给一个目标值,请查询其在矩阵中的位置,如果不存在则输出(-1,-1),如果有多个,则随便输出一个,请使用小于O(m+n)的解法。

● 给定一个n*m的矩阵,从中找出a*a的矩阵,使得和最大。返回最大的数值。

● 计算一个n*m矩阵,每个是左上角元素和的值。然后再遍历计算。

● 给定一个M*N的矩阵,求一个子矩阵,使子矩阵的和最大?

● 输入一个二维矩阵,寻找一条从左上角到右下角的路径使得经过的路径值加起来最大?(只能向右和向下走)

4.4 Leetcode&剑指offer原题

● LeetCode 33

● LeetCode 52:N皇后问题

● Leetcode 80:二维数组全是0或1,求全为1的最大子矩形面积

● Leetcode hard:矩阵中求全1的最大矩形的面积

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

5.1 python方面

● 为什么用python的multiprocess,为啥不用线程?

5.2 C/C++方面

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

6.1 数据库方面

6.2 操作系统方面

● 线程进程区别?

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

7.1 技术方面

● 关于深度学习/机器学习的;通常情况下标签都是无关的,比如车辆图像的类别这种,假如标签是有一定关系的,比如给定一张图象的标签是这个人的年龄,可以分为老人、中年人、小孩等,他们是有次序关系的,如何利用这些信息?

答:可以用向量的余弦构建loss。

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

发表评论

This site is protected by wp-copyrightpro.com