试题来源:http://www.itmian4.com/forum.php?mod=viewthread&tid=3622&extra=page%3D1

1.升序排列下列数值:(101001)2,(40)10,(23)8,(18)16

解:个人理解,全统一到某一进制,如10进制数,再进行比较。

2.写出下列函数的返回值

int func(int x=300){int y=0;while(x){y++;x=x&(x-1);}return y;
}

解:x = x&(x-1)的作用是将x(二进制表示)最右边的1消去,所以,程序的功能是求x的二进制表示法有多少个1.因为300(10)=100101100(2),所以返回值是4.

3.写出下面代码的输出

#include<stdio.h>
int main(){char *p="abcdef";char str[]="123456";printf("d%\n",*(p+4));printf("c%\n",p[4]);printf("c%\n",*(str+4));printf("c%\n",str[4]);return 0;
}

解:这道题出得十分YD,注意是d%而不是%d,所以,你懂的。答案是,一不小心,可能会跌爆眼镜!

d

c

c

c

4.使用C语言写出存储内容为整数的单链表数据类型定义,并使用自己定义的单链表数据类型定义,完成下面的算法,要求优化时间与空间复杂度。
算法要求:合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个
如:单链表a:1->2->3->4
单链表b:3->4->5

输出:1->2->3->4->5

解:合并两个链表的方法其它同类型的面试题已经有讲过不少了,这里多了一个“去重”要求。只需要多处理一种情况即可。下面用的是C++,稍作改进就可以变成C.

#include<iostream>
using namespace std;
struct node
{int key;node* next;node(int k):key(k),next(NULL){}
};
struct List
{node* head;List():head(NULL){}
};
node* ListInsert(node* head,node* z)
{if(!head) {head=z;return head;}else{head->next=ListInsert(head->next,z);return head;}
}node* recurMergeList(node* head1,node* head2)
{if(!head1)//如果没有head1return head2;else if(!head2)//如果没有head2return head1;node* MergeHead=NULL;if(head1->key < head2->key){MergeHead=head1;MergeHead->next=recurMergeList(head1->next,head2);}else if(head1->key > head2->key ){MergeHead=head2;MergeHead->next=recurMergeList(head2->next,head1);}else //head1->key ==head2->key{   //新增的部分MergeHead=head1 ;node* nextMergeHead = recurMergeList(head1->next,head2->next);if(nextMergeHead && MergeHead->key == nextMergeHead->key)MergeHead=nextMergeHead;elseMergeHead->next = nextMergeHead;}return MergeHead;
}void main()
{int A[]={1,2,2,5,9,13,16};int B[]={2,5,12,13,13,16,19};int len=sizeof(A)/sizeof(A[0]);List* LA=new List;for(int i=0;i<len;++i){LA->head=ListInsert(LA->head,new node(A[i]));}List* LB=new List;for(int i=0;i<len;++i){LB->head=ListInsert(LB->head,new node(B[i]));}node* p=LA->head;while(p){cout<<p->key<<' ';p=p->next;}cout<<endl;p=LB->head;while(p){cout<<p->key<<' ';p=p->next;}cout<<endl;p=recurMergeList(LA->head,LB->head);//p=MergeList(LA->head,LB->head);while(p){cout<<p->key<<' ';p=p->next;}
}

5.编写程序,把一个有序整数数组放到以整数为元素的二叉树中,生成一个平衡排序二叉树。设计并变成实现一种遍历方法,,是这种遍历方法的输出正好是输入数据的次序。
如数组 a:{1,2,3,4,5,6,7}
生成的二叉树:
4
/  \
2    6
/\    /\

1  3   5  7

解:本来将一个有序数组放到一棵二叉树有很多种摆放方式,但是题目要求是平衡二叉树,容易想到的是二分思想,当每个结点左边和右边的结点数相等(或只相差1个的时候)这棵树就是平衡的,最后再中序输出即可。

#include<iostream>
#include <exception>
using std::cout;
using std::endl;
struct node
{int value;node* left;node* right;node(int v):value(v),left(NULL),right(NULL){}
};node* Build_Tree(int* A,int l,int r)
{   if(!A || l > r)return NULL;int mid = (l+r)>>1;node* root = new node(A[mid]);root->left = Build_Tree( A, l, mid-1);root->right = Build_Tree( A, mid+1,r);return root;
}void TreeWalk(node* z)
{if(!z)return ;TreeWalk(z->left);cout<<z->value<<' ';TreeWalk(z->right);
}int main()
{int Inorder[] = {1,2,3,4,5,6,7};int len=sizeof(Inorder)/sizeof(Inorder[0]);node* root=Build_Tree(Inorder,0,len-1);TreeWalk(root);return 0;
}

6.编写程序,在原字符串中把尾部m个字符移动到字符串的头部,要求:长度为n字符串操作时间复杂度为O(n),空间复杂度为O(1)。

如:原字符串为”Ilovebaofeng”,m=7,输出结果:”baofengIlove”

解:具体见http://blog.csdn.net/linraise/article/details/12237185的左旋转部分,5种办法中只有2处是符合要求的。递归要用到栈,空间不是O(1).

7.暴风影音的片源服务器上保存着两个文件a和b,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出a,b文件共同的URL。要求:算法设计。

解:大数据问题。5*64=320G,4G内存无法一次性装入。因此可以用一个hash函数将a文件的URL hash到n个小文件中,对b文件的URL做同样的操作,因此,所有可能相同的URL都会被分到相同的小文件中。因为hash函数的特点是如果a=b,则hash(a)=hash(b).再对每一个小文件统计相同的URL即可,可以两次扫描,也可以用位图。

[软件笔试] 2014暴风影音校招技术笔试题(长春站)相关推荐

  1. 校招笔试C语言,校招c ++笔试题汇总

    ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题, 最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后 ...

  2. [实战演练]2014年人人公司应届生校招技术笔试题

    一,客观题 1. 下面哪种排序比较适合对基本有序的数组进行排序() A 插入排序    B 快速排序   C 堆排序    D 归并排序 2. 下面哪种排序算法的平均时间复杂度最低() A 快速排序 ...

  3. 【校招笔试】网易校招网络笔试题,菜的抠脚,蠢的流泪

    2018-3-27晚上9点40分 10分钟前.网易的校招笔试结束了,结果惨不忍睹,在此记录一下. 网易的校招笔试是在电脑端进行的,摄像头监控,考试网站牛客网,晚上7点半开始到9点半,自行居家网上答卷. ...

  4. 电信云2020校招-技术笔试题

    电信云的技术笔试是单选题 不定项选题 编程题 单选和不定项选会考得很基础,计算机网络相关那些,而且电信云主用的应该是java吧,有几道是java题,让我这种没搞java的表示无辜 编程题就非常简单,在 ...

  5. 去哪儿网2014校园招聘技术笔试题(成都站,开发岗)——2014.09.23

    编程题,开发岗三道都必做,前端岗和测试岗前两道必做 1. implement a function of String randomAlphabetic(int count) Creats a ran ...

  6. 【实习生笔试面试题】2013年搜狐SOHU实习生技术笔试题

    2013SOHU技术中心新生训练营技术笔试题 Author:江南烟雨 E-Mail:xiajunhust@gmail.com 如违反SOHU版权请邮件联系,本人会删除. 参考答案如有错误,还请指出.欢 ...

  7. 2014迅雷校园招聘笔试题(C++)

    2014迅雷校园招聘笔试题(C++)     这是迅雷在深圳那边招聘的笔试题!!也快到我们武汉来面试笔试了吧~~ 时间:2013-9-7 地点:北京大学深圳研究生院 技术类别:C++开发 说明:图片是 ...

  8. 迅雷2021校招数据分析笔试题 B卷

    时间:9.28投递的迅雷数据分析岗,10.15收到笔试通知于10.19号19:00-20:35参加迅雷2021校招数据分析笔试题 B卷. 试卷回忆版:共有三种题型:单选题(20个,每个3.5分).多选 ...

  9. 华为校招java笔试题库_华为校招Java笔试题库,看你会不会做

    1.在java中如果声明一个类为final,表示什么意思? 答:final是最终的意思,final可用于定义变量.方法和类但含义不同,声明为final的类不能被继承. 2.父类的构造方法是否可以被子类 ...

  10. 中信java在线笔试_2014年中信java笔试题

    2014年中信java笔试真题 本人刚去面过哦 2014年中信java笔试题 一.选择题(每题2分,共20分) 1. 以知如下定义:String s="citic bank":下面 ...

最新文章

  1. Java的jar文件安装成windows 服务
  2. 数据结构2:中序线索化二叉树为什么要通过pre设置后继结点
  3. python经典小游戏-用Python设计一个经典小游戏:猜大小
  4. 九十、深入弹性(Flex)布局
  5. 案例解析|广东自由流收费稽核方案,AI稽核新模式
  6. 华为宣布今年将投入2亿美元推动鲲鹏计算产业发展
  7. Word Cookbook by Eric
  8. 2021年中国微粉磨料市场趋势报告、技术动态创新及2027年市场预测
  9. 【王道计组笔记】数制、编码、校验
  10. 在js中对HTML的radio标签和checkbox标签的选择项进行输出
  11. windows内核——基石
  12. 抛出 java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to andr异常
  13. 光端机和无缝带拼接混合矩阵切换器的配搭应用-某市户外广告投屏解决
  14. tabbar角标 小程序_小程序tabbar实现底部tab导航栏
  15. Excel如何统计单元格中姓名个数
  16. 解决.NET报错【80040154 没有注册类】的问题
  17. 记一次微信公众号开发过程
  18. 串口、COM口、UART口, TTL、RS-232、RS-485的区别
  19. 不只是休闲:关于体感游戏的一些思考(一)--- 开篇和“随身”物件
  20. WPF入门0:WPF的基础知识

热门文章

  1. 关于php 调用接口 微信云支付 HmacSha256 加密 request_content 生成 authen_code
  2. 【HAVENT原创】Eureka 注册中心服务上线下线邮件提醒
  3. 纠正口呼吸,信医生别信“神器”
  4. 儿童python编程入门软件_一款儿童编程入门的理想工具——PythonTurtle
  5. Transformer结构详解
  6. 做短视频,素材、工具缺乏怎么办?听我说完,没那么难做,别放弃
  7. JS实现轮播图(一看就懂逻辑清晰)
  8. 【STM32】RCC复位和时钟控制器
  9. 英语读音(四)--自然拼读法 Phonics --- 最常见字母发音 /The pronounciation of most common letters
  10. python 手机摄像头文字识别软件_手机上有哪些好用的文字识别工具?