依图科技软件开发实习面经
依图是个不错的公司,除了上班累了点以外,各方面都很好,外地的实习生可以安排住宿,公司位置是长宁区的顶级写字楼,也是666,总之体验感很好了。就是有事儿,没能待得很长时间,提前结束了,很可惜。
依图面试都是直接上来撕代码的,问了问项目,就直接开始看你有没有开发潜质了。(我代码能力比较一般,所以大佬可以看题目,我的代码就随意了)
【一面(视频面敲代码)】
两个矩形,给出的left指左边的x坐标,top指顶边的y坐标,求两个矩形的交集。
struct Rect
{
Rect(int a,int b,int c,int d)
{
left=a;
right=b;
top=c;
bottom=d;
}
int left;
int right;
int top;
int bottom;
};
int rect_overlap(const Rect &r1, const Rect &r2)
{
if(r2.left>r1.right || r2.right<r1.left || r2.top<r1.bottom || r2.bottom >r1.top)
{
return 0;
}
int rectleft,rectright,recttop,rectbottom;
rectleft=max(r1.left,r2.left);
recttop=min(r1.top,r2.top);
rectright=min(r1.right,r2.right);
rectbottom=max(r1.bottom,r2.bottom);
int s;
s=(recttop-rectbottom)*(rectright-rectleft);
return s;
}
int main()
{
string words = "Hello, World!";
cout << words << endl;
Rect r1(1,2,2,1),r2(5,12,8,3);
int ret=rect_overlap(r1,r2);
cout<<ret<<endl;
return 0;
} 【二面(视频面敲代码)】
找出和为0的三元组,比如{0,-1,-1,1,2,3,.....,},最后输出所有的三元组,比如{-1,-1,2},balabala
这是一个没有经过测试的代码,没来及了。
#include <iostream>
using namespace std;
void func(vector<int> data)
{
sort(data.begin(),data.end());
int len=data.size();
for(int i=1;i<len-1;i++)
{
int sum=data[i];
vector<int> resvec;
for(int j=0,k=len-1;j!=i,k!=i;)
{
sum+=data[j]+data[k];
if(sum<0)
{
sum-=data[j];
j++;
}
else if(sum>0)
{
sum-=data[k];
k--;
}
else
{
resvec.push_back(data[i]);
resvec.push_back(data[j]);
resvec.push_back(data[k]);
for(auto c:resvec)
{
cout<<c<<",";
}
cout<<endl;
}
while(1)
{
if(data[j]==data[j+1] && j+1<i)
j++;
else
break;
}
while(1)
{
if(data[k]==data[k-1] && k-1>i)
k--;
else
break;
}
}
}
while(1)
{
if(data[i]==data[i+1] && i<len-1)
i++;
else
break;
}
}
int main()
{
cout << words << endl;
int a, b;
while(cin>> a >> b)
cout << "Your result is : "<< a + b << endl;
return 0;
}
