京东一面+二面(Golang开发),网易一面(游戏开发工程师)

Cain ·
更新时间:2024-11-10
· 798 次阅读

京东岗位我报的有点魔幻,我从事C++岗位的,牛客上写Golang要求C++或者Go其中一种,直接就报了。 还是太年轻,笔试大多都go的题,收到面试走狗屎运(全都是蒙的,算法题只写了第一道)。 京东一面(40min):

(1)如何判断链表有环(快慢指针,一个跳1,一个跳2,我回答的拓扑,很尴尬,一度尴尬,互相傻笑)。

(2)计算机网络有几层,传输层的协议。(普遍接收的五层,TCP/UDP)

(3)写一个二叉树中序遍历

(4)Python中with的用法

京东二面(1h):

(1)多个有序链表合并(我用的优先队列)。复杂度nlog(k),用c++写的,感觉他们很抠我的实现,以后实现要严谨一点。
(2)手写高精度乘法。这个我有点小惊讶,打acm的时候一直用的是模板,写过两次但是都得debug好一会,不过还好这次是写出来了。
战果展示:

#include using namespace std; const int maxn = 1e5+10; string add(string xx,string yy){ //615yy 4920xx reverse(xx.begin(),xx.end()); reverse(yy.begin(),yy.end()); string res=""; if(xx.size()<yy.size()) swap(xx,yy); int mm=max(xx.size(),yy.size()); int mi=min(xx.size(),yy.size()); int jinwei=0; for(int i=0;i=mi){ int t=(xx[i]-'0'+jinwei)%10; jinwei=(xx[i]-'0'+jinwei)/10; res+=t+'0'; } else{ int t=(xx[i]+yy[i]-'0'-'0'+jinwei)%10; jinwei=(xx[i]+yy[i]-'0'-'0'+jinwei)/10; res+=t+'0'; } } if(jinwei) res+=jinwei+'0'; reverse(res.begin(),res.end()); return res; } string mul(const string &xx,const string &yy){ //123 45 string base=""; string tmp=""; string res="0"; for(int i=yy.size()-1;i>=0;i--){ base=""; int a=yy[i]-'0'; vector t; int jinwei=0; for(int j=xx.size()-1;j>=0;j--){ int b=xx[j]-'0'; t.push_back((a*b+jinwei)%10); jinwei=(a*b+jinwei)/10; } if(jinwei) t.push_back(jinwei); reverse(t.begin(),t.end()); for(auto k:t){ base+=k+'0'; } base+=tmp; cout<<base<<endl; tmp+='0'; res=add(res,base); } return res; } int main(){ // string res=mul("3","4"); // cout<<res<<endl; string res=mul("1234","45"); cout<<res<<endl; }

收获:面试官让实现代码,冲着能正确运行去实现,不能只是把思路走一遍。每个面试官要求不一样,最后可能会抠细节甚至去考虑你没有特判的情况。所以起点和对自己的要求要高一点。这次传参数面试官提示我传const引用,平时写题总是忽略这个,一个良好的代码习惯也十分重要。

网易一面(1h):

(1)每次一步或者两步,输出到n的所有情况,不能用递归(bfs)

(2)TCP/UDP区别

(3)链表给你个t,小于t的放到左边,大于t的放到右边(这个找到第一个大于的,然后后面小于的一直往这前面插入就可以了,需要细心)

收获:面试官知道acm选手的弱点,就是指针和链表。他故意出了个这种题给我,我bug最后也没调出来,挺扣分的。
老实说,我感觉没怎么去专门写过链表,指针的这些操作,这些最基本的,效率最高的实现方法还需要继续去学习。


作者:苏大强太强了



golang开发 工程 游戏开发 网易 golang

需要 登录 后方可回复, 如果你还没有账号请 注册新账号