依图科技面试

依图的学长太热情了,于是就来试试看。依图北京在清华科技园,挺小的一个屋子,人不多,上午10点到的,似乎只有前台小姐姐在。

每一轮都简单问了一下项目,但好像面试官们也不是很在意。还是以算法题为主。

第一轮

1、代码题。一个上面有字母的二维数组,在上面走,有上下左右四个方向,不能走重复的格子,问能不能走出特定的一个字符串。简单深搜即可。

2、一个长度为L的数组,每一位要挪动到(L+K)%L的新位置,要求想一个时间负责度为O(L),空间复杂度为O(1)的算法。还挺简单的,每L/gcd(L, K)个数在挪动过程中会成环,所以分成gcd(L, K)组就行。

3、x轴上一个老鼠,初始位置是s,每秒钟可以在轴上挪动v的距离,s和v都是整数。现在不知道s和v,每秒钟可以测试老鼠是在轴上的一个点。求一个方案,要在有限步数内找到老鼠。还记得有理数和正整数一样多是怎么证明的吗,这题很类似,就是想办法遍历s和v组成的二维平面上的每个整数点。

第二轮

1、代码题。实现一个哈希表,用每个值对应一个链表方式解决冲突。函数有: bool add(x) 增加一个值;bool delete(x)删除一个值;bool query(x) 查询x是否在表中。写完了之后又问了如果要并行加速需要做什么处理。

2、已有函数p,可以以等概率生成0,1,2,3,4,要构造一个函数f,可以以等概率生成1,2,3,4,5,6,7。和以前依图面过的一题挺像的。思路难以描述。。

第三轮

1、给了一段c++代码,代码实现了求矩阵中以x,y为左上角,长宽为w,h的子阵的和。要求改出代码中的错误,错误有语法上的、逻辑上的。

2、证明题。n张牌,上面的数字是1~n。每次都翻开第一张牌,假设上面的数字是x,就将第一到第x张牌倒过来。比如一开始是623587914,一次操作之后,变成78526914。证明:经过有限次翻转,1总能出现在第一个位置。解法是用数学归纳,假设第k+1张牌是x,x=k+1时很容易,x!=k+1时,分x这张牌在n张牌进行操作时有/没有被放到过第一个讨论。

3、最长公共上升子序列。

对面试题挺有好感,可惜智商捉急,在提示下还是有没做出来的。听同学说会当场有第四轮,或者下次有第四轮,大概我太弱了,好多题不会,被帅哥哥被鄙视了。感觉对于不怕加班,想得到快速成长的年轻人来说这公司还挺不错。

你可能感兴趣的:(依图科技面试)