3-18 小红书C++一面
交叉面
面试官真的对我好炸了,面试官全程在跟我说没事没事,我全程在感谢面试官hhh
感觉真的像是那种长辈对晚辈的指点。 虽然我没表现好,但体验真的太好了,我一回答不上来他就帮我说了,还让我不要紧张没事,没关系啥的
80min
讲讲b树和B+树吧
数据库为什么以它作为索引,有什么好处吗,为什么B+树比b树更适合所以
说一下mysql的聚合索引和非聚合索引? 我说不会
说一下哈希表底层吧
说一下c++的智能指针, 如果让你实现一个智能指针你要实现哪些东西,我只知道构造函数。。。我说还需要支持原子操作啥的吗
然后面试官给我补充需要一个指向引用计数的指针,拷贝构造函数,初始化构造啥的...
说一下互斥锁和自选锁吧,然后他们各有什么优缺点,使用于什么场景 面试官帮我答了因为互斥锁会导致线程从睡眠到就绪态,会有上下文切换耗费时间,所以用自选锁就没这个问题
了解用户态和内核态吗
如果让你实现一个线程池,你会用哪些实现, 我随便说了说 面试官说你不怎么了解java ,这个不知道也很正常
说一下TCP的三次握手四次挥手,为什么三次和四次,针对三次握手的CD啥攻击,我说我只了解syn攻击,然后我说的也不太对。。。 我还背错了个东西
C++的. rall. 压根没听说过 不会
C++的lock_groud 压根没听说过 不会
然后面试官说你更多的是移动端的经验,我也不太知道问什么了~
那我们写个题吧
连标排序,反正我归并是写叉撇了,整死循环了,面试官简单训了我一下。。。 他说你平时刷LeetCode应该肯定刷到过啊(可我真没写过这种连标题呀),对你来说应该非常简单的题,我一直在嗯嗯
我说能自己写个堆吗,面试官说最好还是全用连标。 然后就写死循环了
#include <iostream>
using namespace std;
// To execute C++, please define "int main()"
// The TestCase is shown below
// Input : 1 2
// Output : 3
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
ListNode* merge(ListNode *head, ListNode *leftNode, ListNode *rightNode, ListNode *midNode){
ListNode *newHead = new ListNode(-1);
ListNode *realHead = newHead;
ListNode *p = midNode->next;
while(leftNode != midNode && p != rightNode){
if(leftNode->val <= p->val){
newHead->next = leftNode;
leftNode = leftNode->next;
}
else {
newHead->next = p;
p = p->next;
}
}
while(leftNode != midNode){
newHead->next = leftNode;
leftNode = leftNode->next;
}
while(p != rightNode){
newHead->next = p;
p = p->next;
}
return realHead->next;
}
ListNode* mergeSort(ListNode *head, ListNode *leftNode, ListNode *rightNode){
ListNode *newHead = head;
if(leftNode == rightNode) return leftNode;
ListNode *midNode = head;
ListNode *right;
while(newHead){
midNode = midNode->next;
newHead = newHead->next;
if(newHead->next == nullptr){
right = newHead;
}
if(newHead) newHead = newHead->next;
if(newHead->next == nullptr){
right = newHead;
}
}
mergeSort(head, leftNode, right);
mergeSort(head, midNode->next, rightNode);
return merge(head, leftNode, midNode, rightNode);
}
int main() {
printf("dqwwqddwq");
ListNode *p[10];
for(int i = 0; i < 10; i++){
p[i] = new ListNode(rand()%18);
}
for(int i = 0; i < 9; i++){
p[i]->next = p[i + 1];
}
printf("dqwwqddwq");
ListNode *head = mergeSort(p[0], p[0], p[9]);
while(head){
printf("%d---", head->val);
head = head->next;
}
return 0;
} 反问 我直接来了一句 为今天的表现向您说一句抱歉,他还说你还是比较优秀的,他一直在帮我找借口
面试官然后说了很多让我去了解底层的一下话,太感动了,还说他看到我有点感同身受的样子,他还说他以前也打过ACM,成绩应该是比我好,我差点就叫爹了
后面给我过的话我一定好好准备 这简直就是亲爹啊!



查看7道真题和解析