赶在第一批尾巴投递的,过了几天就笔试了
笔试:2.0/4.0
拼多多一面
8.10 45min
给一个字符串str,将其转换为相应的long值,如果不是合法数字则返回null
问了下面试官,可能会非法,不会溢出
long long transType(String numStr) { if (numStr.empty()) return null; bool is_positive = true; int n = numStr.size(); int i = 0; if (numStr[i] == '+') { is_positive = true; ++i; } else if (numStr[i] == '-') { is_positive = false; ++i; } else if (numStr[i] < '0' || numStr[i] > '9') { return null; // invalid } while (numStr[i] == '0') ++i; // remove prefix zero long long num = 0; while (i++ < n) { if (numStr[i] >= '0' && numStr[i] <= '9') { num = num*10 + (numStr[i] - '0'); } else { return null; } } if (!is_positive) { num = -num; } return num; }
topk(快速选择or最大堆,还说了为啥快速选择是On时间复杂度
海量数据topk(我答的是单机解法,最后把面试官搞得有点晕,最后直接把编程之美这本书搬出来了
两个很大的有序数组,求交集(先说了双指针,经过提示,如果交集稀疏可以用二分
有向图如何判定是否有环(我很心虚的说拓扑排序,但是展开讲的时候有点磕磕绊绊的
理想答案:方法是重复寻找一个入度为0的顶点,将该顶点从图中删除(即放进一个队列里存着,这个队列的顺序就是最后的拓扑排序),并将该结点及其所有的出边从图中删除(即该结点指向的结点的入度减1),最终若图中全为入度为1的点,则这些点至少组成一个回路。
腾讯实习巴拉巴拉
阿里实习,展开挺多的
拼多多二面
8.22 1h
聊实习
消息队列kafka,问了一些浅层的,如何持久化,消费了会不会删除消息,如何维护进度,深层我就不熟悉了,坦白在阿里实习时才接触,我写cpp的了解不深
问我熟悉哪种语言,我说c++,但面试官应该是写java的
c++多态怎么了解、虚函数是什么
友元函数是什么
为什么构造函数不能是虚函数,为什么析构函数得是虚函数
深拷贝与浅拷贝的区别
HTTP与HTTPS的区别,TLS的握手过程
epoll的LT与ET的区别
TCP可靠性如何保证(seq、ack、滑动窗口、拥塞控制
手撕:判断一个数是否是完全平方数
最快的是用一个公式:1+3+5+7+ ... + (2n-1) = n^2
class Solution { public: bool isPerfectSquare(int num) { int num1 = 1; while(num > 0) { num -= num1; num1 += 2; } return num == 0; } };
也可以用二分法或牛顿法不断减小平方根的范围,最后判断离平方根最近的整数,其平方是否等于num来判断num是否是完全平方数
手撕:two sum
原来pdd的面试间是可以运行代码的,但是只能由面试官运行,这意味着报错原因是看不到的。。所以在写two sum时有很多小错误,比如忘记加某个头文件,漏掉某个分号,函数原型写错了,每次面试官都说你再仔细检查一下,这真的是考验肉眼观察能力了
过了几天收到了下一轮面试邮件,括弧里面就写了hr面,心想才两面就hr面了,太爽了吧
拼多多hr面
8.28 35min
自我介绍
还有其他offer吗
对各互联网大厂的评价
你更喜欢哪种企业氛围
为什么投递这个岗位
接受调剂
工作的地域偏好
怎么选择毕业后的第一份工作
你希望拿到什么样的薪资
了解拼多多的情况吗,你怎么看待11116,能接受11116吗
老家哪的,父亲母亲工作,国企还是私企,独生子吗
有女朋友吗
说说你受到的挫折
为啥入党
实习时有跟产品对接吗
如果项目需要delay你会怎么做
实习期间碰到的有挑战的事,你觉得有成就感的事
如果给offer,可以提前实习吗,最快啥时候正式入职
hr面完当天又收到下一轮面试的邮件,在牛客上看到挺多人也是这样的,这人数感觉也不是sp加面
拼多多四面
9.3 1h
聊两段实习,挺深入的,腾讯的有些回答不上来
后面聊到实习内容时,手撕了代码,输入两个队列,每个元素是带时间戳的消息,输出一个经过时间排序后的合并队列
面试没有复制自己写的代码,但是思路差不多,大致代码如下:
queue<pair<string, int>> mergeQueue(queue<pair<string, int>> q1, queue<pair<string, int>> q2) { queue<pair<string, int>> q; while (!q1.empty() && !q2.empty()) { while (!q1.empty() && q1.front().second < q2.front().second) { q.push(q1.front()); q1.pop(); } while (!q2.empty() && q1.front().second > q2.front().second) { q.push(q2.front()); q2.pop(); } } while (!q1.empty()) { q.push(q1.front()); q1.pop(); } while (!q2.empty()) { q.push(q2.front()); q2.pop(); } return q; }
写完后,面试官问如果时间戳相等怎么办,我看着代码思考了一下说会死循环,然后讨论了一下时间戳能否相等,如果相等的话,用户的各个客户端要如何保证前后顺序一致等等问题
总之,都是围绕实习内容展开,没有问基础知识,还是要求有自己的思考的
最后反问环节,问了为什么hr面是三面,面试官说他也不知道,可能时间排的就是这样的
全部评论
(13) 回帖