依图科技面试

2019年9月21日 一面:一个小时, 通过

  1. 两道coding题
    a. 输入四个点,判断这四个点能不能构成正方形。
    思路:
    step1:四个点、计算两两间的距离,共6个距离。
    step2:若是正方形,距离只有2中长度,且长边是短边的根号2倍。
    继续问:为什么还有加上根号2倍的限制,举一个四个点只用两种长度的边,但不是正方形的例子。如带有一个等边三角形风筝模型。

b. 给一堆石子,数量为n。甲乙两个一次能拿1个或者2个,甲是先手,谁拿走最后一个石子谁就赢了。假设甲乙都是足够聪明的。问谁会赢。
答案:当n能整除以(2+1)时,乙赢;反之甲赢;
为什么:设n能整除以(2+1)是平衡状态;当n处于平衡状态是,不过先手拿了多少个,我后一个人后能将n恢复到平衡状态。到n=3时,先手必输。故n能整除以(2+1)时,乙赢;而n不能整除以(2+1)时,甲可以将n转为平衡状态,这样就是乙先手的平衡状态了,就是甲赢。

  1. 聊了简历上自己做的项目,就聊自己做了什么。没有深入。

2019年9月27日 二面:一个小时,未知

  1. 一道coding题:给你一个n*n的正整数矩阵,求左上角到右下角的最短路径和。
    解:动态规划问题,状态转移:
//dp[i][j] = min(dp[i-1][j], dp[i][j-1])+matrix[i][j]
//完整代码
#include 
#include
using namespace std;
// dp[i][j] = min(dp[i-1][j], dp[i][j-1])+matrix[i][j]
int mindepth(vector> M){
    int n = M.size();
    vector> dp(n, vector(n, M[0][0]));
    for(int i=1; i
  1. 聊简历上的项目,聊得比一面要深入一些。

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