腾讯音乐娱乐集团初面(记得的部分)

本文是一位应聘者在面试中的编程考核经历,包括使用两个栈实现一个队列、判断单链表是否有环并输出环中节点、根据字符串序列判断是否为二叉树的前序遍历以及对进程和线程的理解,同时提及了进程通信的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、自我介绍
2、问了一下计算机相关的几个科目的期末考试成绩
3、现场编程(两个栈实现一个队列)
    没做过,思考了5分钟,接下来5分钟没写完,然后问了我的思路(不是最优),觉得可行。最优代码如下:

class Queue{
	private:
		SStack s1,s2;
	public:
		bool enQueue(int e){
			return s1.Push(s1,e);
		}
		bool deQueue(int &e){
			if(s2.Empty(s2)){
				while(!s1.Empty(s1)){
					e=s1.Pop(s1,e);
					s2.Push(s2,e);
				}
			}
			if(s2.Empty(s2))return false;
			e=s2.Pop(s2,e);
			return true;
		}	
};

4、现场编程(判断单链表是否有环,并输出环中结点)
    这个实现了。代码如下:

bool hasCycle(LNode *head){
	vector<LNode *> v1;
    vector<LNode *> v2;
    for(LNode *p=head;p;p=p->next){
    	for(int i=0;i<v1.size();i++){
    		if(p==v1.at(i)){
    			for(int j=0;j<v2.size();j++)
    				if(p==v2.at(j))return true;
    		    cout<<p<<' ';
    			v2.push_back(p);
			}
		}
		v1.push_back(p);
	}
	return false;
}


5、现场编程(判断字符串序列是否为合法的树的先序遍历 )
    利用前序遍历序列化二叉树时,遇到非空结点时,记录结点的值;如果是空节点,用#记录。 给定一个逗号分隔的字符串,判断它是否是二叉树的前序遍历序列化。不需重建二叉树
    做题的时候混淆了层次遍历和先序遍历,把先序遍历当层次遍历做了。面试时没做出来。正确代码如下:

bool isPre(string s){
	int tl=s.length()/2+1;
	char t[tl];
	for(int i=0;i<s.length();i++)
	    if(s[i]!=',')t[i/2]=s[i];
	    
	int diff=1;
	for(int i=0;i<tl;i++){
		diff--;
		if(diff<0)return false;
		if(t[i]!='#')diff+=2;
	}
	return diff==0;    
}

6、叙述一下进程和线程...。
7、叙述一下进程通信方式
     只简单介绍了内存共享和管道方式,实际上还有四种(消息队列、信号量、信号和套接字socket)
8、你印象最深的项目
9、你有没有offer...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值