依图科技软件开发实习面经
依图是个不错的公司,除了上班累了点以外,各方面都很好,外地的实习生可以安排住宿,公司位置是长宁区的顶级写字楼,也是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; }