清华同方股份有限公司
数据来源天眼查
1000人以上 | 电子/硬件 | 私营·股份制企业 | 潍坊
查看全部30条面经 面试经验共30条面经

周默轩

共面试1轮 未获得工作

【笔经】清华同方软件测试工程师笔试题解答分享
最近一位学员去同方面试,让写个函数,这个函数实现如下功能:
 求100个元素的数组中2进制1的总数。
 其实考的是位运算符,
 题目分解为求每个元素1的个数,然后再循环即可。
 而如何求每个元素中1的个数呢?
 上次学员去神州数码面试的时候,出了一道求一个元素2进制1的个数的题目。详见:神州数码软件测试工程师笔试C语言题目详解
 其实如果神州的那个题目会的话,同方的这个题目就太简单了。
 我们每次笔试的时候,答题的思路
 首先应该是想以前做没有做过一样的题目,如果有,直接照搬。
 再次想想有没有做过类似的题目,如果有修改后照搬。
 最后是如果不是上面两种情况,那做题目就比较伤脑筋了。只能靠我们平时学习多积累,多总结,通过现象,找到作同类题目的本质。只要本质我们找到了,即使是最后一种情况,我们也就不怕了。
 //假设是地址传递。int a[]:接受主调函数传递过来的实参(实参为数组名)
 intcalubinary(int a[])
 {
 int i;
 int n=0;//2进制1的总数
 for(i=0;illink)->rlink=p->rlink;
 (p->rlink)->llink=p->llink;
 B:p->llink=(p->llink)->llink;
 (p->llink)->rlink=p
 C:
 (p->rlink)->llink=p
 p->rlink=(p->rlink)->rlink
 D:
 p->rlink=(p->llink)->llink;
 p->llink=(p->rlink)->rlink;
 这个题目应该选A
 在我们的DC课堂上对与单向链表以及其上的操作都讲了,双向链表没有讲。但如果单向链表会,双向也可以推理出来,何况这是个选择题目。
 如果这个没做对,情有可原。但是如果下次再做错,自己就要好好想想了。
 3.定义一个结构体:
 完成由Node类型结点构成的一个单向链表的正向排序(由小到大)
 #include
 #include
 struct Node
 {
 struct Node *next;
 int value;
 };
 struct Node* InsertSort(void)
 {
 struct Node *Head=NULL,*New,*Cur,*Pre;
 int i;
 for(i=0;ivalue);
 New->next=NULL;
 if(Head==NULL)
 {
 Head=New;
 continue;
 }
 if(New->valuevalue)
 {//head之前插入节点
 New->next=Head;
 Head=New;
 continue;
 }
 Cur=Head;
 while(New->value>Cur->value && Cur->next!=NULL)
 {
 Pre=Cur;
 Cur=Cur->next;
 }
 if(Cur->value>=New->value)
 {
 Pre->next=New;
 New->next=Cur;
 }
 else
 //if(Cur!=New)
 Cur->next=New;
 }//for
 return Head;
 }
 void print(struct Node* Head)
 {
 struct Node* Cur;
 Cur=Head;
 while(Cur!=NULL)
 {
 printf("Cur->value=%d\n",Cur->value);
 Cur=Cur->next;
 }
 }
 void main(void)
 {
 struct Node* head;
 head=InsertSort();
 print(head);
 }
 程序已经调试通过,大家可以试试。
 这个题目也应该会,这个在课堂上要求过。插入一个有序单链表。
 这个题目只是笔试题,如果写出来的程序不能完全执行,这个可以原谅的。
 如果大体的程序框架都写不出来,这个可要自己仔细想想了。
2012-08-25 23:21:45 0 0
回答或评论0条

登录后,参与评论

评论不能为空

确认删除?

x

你新收到1封清华同方股份有限公司的职位邀请信