拼多多-业务平台研发工程师-20190513一面电面

之前过了笔试,4题做出前三题:https://www.nowcoder.com/discuss/187446?toCommentId=3010155
很快就收到面试邮件,5.11去上海现场面可以当天结束(我留在学校color run去了…)然后预约13号或14号19:00-21:00中间的一小时,我选的13号19:00-20:00;下午还和hr电话联系了下,因为昨晚错过一个上海的电话,不知道会不会调时间。电话确认后还收到了邮件。

提前预约的图书馆研讨间,现是电话过来说加微信,然后视频面试。

自我介绍&&其中项目
笔试第一题用的递归,时间复杂度O(n^2),如果改为数据集长度为100W?该怎么办
那就要降低复杂度了,最后想法是用两个指针,一前一后p1和p2,遇到相同的就计数+1,标记已经合并,然后指针p1往前,p2往后,再判断(针对abba的情况),遇到不同就p2到p1的位置,p1往前一步。
//期间也胡扯过映射和并行…
然后据说笔试题题4做出来的人比题3多???难道不是动归?没记录题目哎…

然后电面共享桌面代码:codepile;collabedit
//money: 初始筹码数量
//seq: 每一轮游戏的结果,W表示赢,L表示输了
//int play(int money, string seq){


#include <iostream>

#include <string>

using namespace std;

int play(int money, string seq){

int x=1;

int re=money;

char * cstr = new char [seq.length()+1];

strcpy (cstr, seq.c_str());

int len=seq.length();

for(int i=0;i<len;i++){

if(cstr[i]=='W'){

//            if(re>=x)

re+=x;

//            else break;

x=1;

}

else if(cstr[i]=='L'){

if(re>=x)

re-=x;

else break;

x*=2;

}

}

return re;

}

int main(int argc, char *argv[]) {

//    cout<<play(10,"LLLL");

cout<<play(0,"W");


}

题目是前三行,就是你手中有money个筹码,然后第一次下注为1(赢就变11,输就变9)之后赢了还下注为1,输了赌注就X2 问最后剩余筹码数量。
搞清啥时候该终止吧:1、string序列读完正常退出 2、当前筹码不够下一次下注输掉,比如手头为0,下次要1但赢了,那可以;手头为3,下次要4但输了,就不行。
检查代码时感觉被坑了,那两行注释的代码……被面试官多问了一句我才加上去的,似乎不应该加啊……

一小时很快过去了,问面试官认为比较有用的专业基础有哪些:基础不一定决定你能不能做一件事(就是也许基础差,但做事是可以的),但是做的好与不好的决定因素(大概就是瓶颈的意思吧)

后续随缘了
#拼多多##C++工程师##面经##实习#
全部评论
老哥放心,我周日晚上一面的,回答一塌糊涂,周一下午就收到了二面通知。应该很容易过的。
点赞 回复
分享
发布于 2019-05-14 18:11
老哥厉害! 是要共享桌面编程么?
点赞 回复
分享
发布于 2019-05-13 22:45
阿里巴巴
校招火热招聘中
官网直投
老哥有没有给你说二面啥时候
点赞 回复
分享
发布于 2019-05-14 16:01

相关推荐

点赞 17 评论
分享
牛客网
牛客企业服务