首页 > 3-18 小红书C++一面
头像
_hengheng
发布于 2022-03-18 20:44
+ 关注

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) 回帖
加载中...
话题 回帖
历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐