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

陈茵

共面试1轮 未获得工作

【笔经】分享清华同方软件测试工程师笔试题解答
(转)


最近一位学员去同方面试,让写个函数,这个函数实现如下功能:
求100个元素的数组中2进制1的总数。
其实考的是位运算符,
题目分解为求每个元素1的个数,然后再循环即可。
而如何求每个元素中1的个数呢?
上次学员去神州数码面试的时候,出了一道求一个元素2进制1的个数的题目。详见:神州数码软件测试工程师笔试c语言题目详解 
其实如果神州的那个题目会的话,同方的这个题目就太简单了。
我们每次笔试的时候,答题的思路
首先应该是想以前做没有做过一样的题目,如果有,直接照搬。
再次想想有没有做过类似的题目,如果有修改后照搬。
最后是如果不是上面两种情况,那做题目就比较伤脑筋了。只能靠我们平时学习多积累,多总结,通过现象,找到作同类题目的本质。只要本质我们找到了,即使是最后一种情况,我们也就不怕了。
//假设是地址传递。int a【】:接受主调函数传递过来的实参(实参为数组名)
int calubinary(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);
}

程序已经调试通过,大家可以试试。
这个题目也应该会,这个在课堂上要求过。插入一个有序单链表。
这个题目只是笔试题,如果写出来的程序不能完全执行,这个可以原谅的。
如果大体的程序框架都写不出来,这个可要自己仔细想想了。


 
2009-12-09 20:00:59 1 0

刘文静 、 赞过

回答或评论0条

登录后,参与评论

评论不能为空

确认删除?

x

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