3.两个数相乘,小数点后位数没有限制,请写一个高精度算法与大数相乘原理一样,只是调整小数点位置,即有效小数个数
算法提示:
输入stringa,stringb;计算stringc=a*b;返回c;
1,纪录小数点在a,b中的位置l1,l2,则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2;
2,去掉a,b中的小数点,
(a,b小数点后移,使a,b变为整数)
3,计算c=a*b;
(要么用java的BigInterger搞,要么自己用C++写高精度数乘法,超过百万位,用FFT,我就不细说,这都预先写过就别做了
)
4,输出c
(注意在输出倒数第l个数时,输出一个小数点。
若是输出的数少于l个,就补0)
4.写一个病毒
while
(1)
{
int*p=newint[10000000];
}
上面这个不对,没有传染性,寄生性……
5.不使用额外空间,将A,B两链表的元素交叉归并将树序列化转存在数组或链表中
structst{
inti;
shorts;
charc;
};
sizeof(structst);
8
char*p1;
void*p2;
intp3;
charp4[10];
sizeof(p1...p4)=?
4,4,4,10
5.让你在100000000个浮点数中找出最大的10000个,要求时间复杂度优。
最小堆
二分查找
快速排序
双向链表的删除结点
6、有A、B、C、D四个人,要在夜里过一座桥。
他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。
请问,如何安排,能够在17分钟内这四个人都过桥?
基础题有15道选择和2道读程序填空。
选择题的确是很基础,主要考数据结构,还有一些体系结构、数据库的题目;读程序题跟我们平时考试的差不多,一道是两个升序链合并成一个升序链+递归,一道是四色着色方案附加题有几道没有看清楚。
有一道是unix防僵死算法,最后一道是sql查询,还有几道忘了,其中一个是很长的程序题。
发信人:
charly(查理一世),板面:
Work
标题:
腾讯笔试题
发信站:
飘渺水云间(SatNov1110:
55:
332006),转信
15个选择题,60分
一个程序填空,40分
三道附加题60分
附加题考的是
1、不用第三个变量实现两个整形变量的交换linux的子进程操作系统资源抢占管理,两个进程要对文件进行独占访问,采用共享变量,判断可行否
2、书写strcpy()
时间两个小时,选择题15*4
然后是程序填空题10(2*5),30(10*3)
附加题用c++实现一个链地址hash。
程序填空题我就不说了,比较easy的说,值得一提的是选择题。
绝大部分考的是C++,我大致说下主要部分吧:
涉及程序执行压栈的:
1道
涉及容器和迭代器的:
4道
涉及虚拟函数以及dynamic_cast的3道
涉及参数传递的1道
简单的程序段落判断2道
涉及类的静态成员赋值的1道
剩下的是杂七杂八的。
不管怎么说,假如你把c++primer仔细阅读了一遍,基本上没问题。
考的有些细,没有涉及算法和编译等知识,所以我同屋一个兄弟很郁闷,因为他linux底层比较好,本来报的是后台开发,哪知道结果考这种类型的题目。
程序填空的考了文件操作,以及数组移动等。
附加题比较简单的说,只要把数据结构的hash部分好好看,然后用class组装一下就ok了。
最后祝大家好运,今年腾讯计划50%的是校园招聘,感觉很不多
查看更多知名IT公司笔试题:
http/
腾讯笔试题
(二)
一些腾讯笔试题及其答案
声明:
题目来自网络,答案大部分来自网络并经过整理;有些是自己查资料和请教他人得来的。
1.1、有A、B、C、D四个人,要在夜里过一座桥。
他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。
请问,如何安排,能够在17分钟内这四个人都过桥?
答案:
A&B-->2mins
1mins<--A
C&D-->10mins
2mins<--B
A&B-->2mins
一共2+1+10+2+2=17mins
1.2、1-20的两个数把和告诉A,积告诉B,A说不知道是多少,
B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少?
答案:
2和3
答案有3个:
12和2
22和3
32和4
第一个大概是(2,2)吧
A得到的是2+2=4,B得到的是2*2=4
开始A当然不知道,因为有可能是(2,2)或(1,3)
这时B也不知道,因为有可能是(2,2)或(1,4),而且这两种情况A无均会答"不知道"
这时,我就已经知道了,因为如果是(1,3),B得到的是3,只有(1,3)这种情况,就不会回答"不知道"
由B的答案,A可以肯定是(2,2)
同样,A说"知道"了以后,B也就知道了
因为如果是(1,4),A得到的是5,只凭第二步B说"不知道",A不可能在第三步便"知道"
所以B可以断定,是(2,2)
逻辑推理:
这两个数是多少?
两个人A,B。
数字为2-100之间的自然数。
现找出两个数,把其和告诉A,把其积告诉B。
然后问A知道不知道是哪两个数,A说:
“虽然我
不知道,但是肯定B也不知道。
”再问B,B说:
“本来我不知道,但是听到A说这句话,现在我知道了。
”,A听到B说他知道了,然后就说:
“现在我也知道了”。
那么这两个数是多少呢?
由A说:
“虽然我不知道,但是肯定B也不知道。
”得:
和不是两个素数的和
得出以下数字:
11,17,23,27,29,35,37,41,47,51,53,57,59。
。
。
。
。
等
通过以上列出的和,推出积的可能性:
和-》积
11-》18,24,28,30
17-》30,42,52,60,66,70,72
23-》42,60,76,90,102,112,120
27-》50,72,92,110,126,140,152。
。
。
。
29-》54,78,100,120,115,138,154。
。
。
。
35-》66,96,124,150,174,196。
。
。
。
根据“B说:
“本来我不知道,但是听到A说这句话,现在我知道了。
””我们首先可以删除一些重复出现的积,如30,120
得到:
11-》18,24,28,
17-》52,
23-》42,76,
27-》50,92。
。
。
29-》54,78。
。
。
。
35-》96,124。
。
。
由“A对B说:
呵呵,我也知道了。
”可以知道积是唯一的,那只有52了
所以得到和是17,积是52
答案就是4和13。
1.3、爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多少?
1-12*11*10*9/12*12*12*12=1-55/96=41/96
1.4某人去玩具店买小熊,单价30元.付给玩具店老板100元玩具店老板没零钱,
去水果店换了100元零钱回来找给那人70元.那人走后,水果店老板找到玩具店老板说刚才的100元是假币,
玩具店老板赔偿了水果店老板100元
问:
玩具店老板损失了多少钱?
答案:
70+小熊的进价
2请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
答案:
#definemax(a,b)((((long)((a)-(b)))&0x80000000)?
b:
a)
若a>b,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a;
否则,a-b为负数,二进制最高位为1,与上0x80000000(最高位为1其他为0)之后为1,所以此时的大数为b.
3计算a^b<<2
答案:
运算符优先级:
括号,下标,->和.(成员)最高;
单目的比双目的高;
算术双目的比其他双目的高;
位运算高于关系运算;
关系运算高于按位运算(与,或,异或);
按位运算高于逻辑运算;
三目的只有一个条件运算,低于逻辑运算;
赋值运算仅比,(顺序运算)高。
在此题中,位左移"<<"优先级高于按位异或"^",所以b先左移两位(相当于乘以4),再与a异或。
例如:
当a=6;b=4时;则a^b<<2=22
4、如何输出源文件的标题和目前执行行的行数?
答案:
printf("Thefilename:
%d\n",__FILE__);
printf("ThecurrentlineNo:
%d\n",__LINE__);
ANSIC标准预定义宏:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__当要求程序严格遵循ANSIC标准时该标识符被赋值为1
__cplusplus__当编写C++程序时该标识符被定义
5、a[3][4]哪个不能表示a[1][1]:
*(&a[0][0]+5)*(*(a+1)+1)*(&a[1]+1)*(&a[0][0]+4)
答案:
*(*(a+1)+1)
a是数组的首地址,a+1相当于&a[0][1],*(a+1)=a[0][1],则*(*(a+1)+1)=*(a[0][1]+1)=/=a[1][1]
6、fun((exp1,exp2),(exp3,exp4,exp5))有几个实参?
答案:
两个。
形式参数:
在声明和定义函数时,写在函数名后的括号中的参数。
实参是调用参数中的变量,行参是被调用函数中的变量。
7、希尔冒泡快速插入哪个平均速度最快?
答案:
快速排序
快速排序、归并排序和基数排序在不同情况下都是最快最有用的。
8、enum的声明方式
答案:
enum枚举类型名{
枚举常量1,
枚举常量2,
...
枚举常量n
};
Forexample:
enumweekday{sunday,monday,tuesday,wednesday,thursday,friday,saturday};
enumweekdayweek_day;//week_day就是一个枚举类型变量
9、频繁的插入删除操作使用什么结构比较合适,链表还是数组?
答案:
链表
10、*p=NULL*p=newchar[100]sizeof(p)各为多少?
答案:
都为4。
因为都是指针类型,所占存储空间必然为4。
11、顺序查找的平均时间
答案:
(1+2+3+...+n)/n=(n+1)/2
12.、for(i=0,sum=0;i<10;++i,sum+=i);的运行结果
答案:
sum=55
13、不能做switch()的参数类型是:
答案:
switch的参数不能为浮点型。
14、不使用其他变量,交换两个整型a,b的值
答案:
x=x+y;y=x-y;x=x-y
15、写出floatx与“零值”比较的if语句。
if(x>=0.000001&&x<=-0.000001)(x不为0的比较)
float:
6位精度
double:
16位精度
16、两个数相乘,小数点后位数没有限制,请写一个高精度算法
*************************************************************************************
数据库
*************************************************************************************
1、有个表tableQQ,有整型的ID项和字符类型的Nickname项,这两个项都不允许为空
(1)写出建立该表的SQL语句
(2)找出Nickname为QQ的用户,按ID降序排列的SQL语句
(3)写出删除ID为1234用户记录的SQL语句
(4)写出添加ID为5555,Nickname为'1234'的SQL语句
答案:
(1)CREATETABLEtableQQ
(
IDNUMBER(12)NOTNULL,
NicknameVarchar2(30)NOTNULL
);
(2)select*fromtableQQwhereNickname='QQ'orderbyIDdesc;
(3)deletefromtableQQwhereID='1234';
(4)insertintotableQQvalues(5555,'1234');
//删除表
(5)droptabletableQQ;
2、有关系s(sno,sname)c(cno,cname)sc(sno,cno,grade)
1问上课程"db"的学生
2成绩最高的学生号
3、每科大于90分的人数
答案:
(1)selecta.sno,o,o,amefromsca,cbwhereo=oandame='db';
(2)selectsno,max(grade)fromscgroupbysno;
(3)selectcno,count(sno)fromscwheregrade>90groupbycno;
*****************************************************************************
======================================================================
操作系统网络
======================================================================
1、描述实时系统的基本特性
答案:
在特定时间内完成特定的任务,实时性与可靠性。
2、Internet采用哪种网络协议?
该协议的主要层次结构?
答案:
TCP/IP协议。
应用层、传输层、网络层、数据链路层和物理层。
3、Internet物理地址和IP地址转换采用什么协议?
答案:
地址解析协议ARPaddressresolutionprotocol
4、IP地址的编码分为哪俩部分?
答案:
网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
腾讯笔试题(三)
腾讯2009校园招聘
软件开发职位方向笔试试题(A1卷)考试时长:
120分钟
第一、单项选择题。
(每个选项3分,20个选项,共60分)
1.在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插入s所指结点,
则应执行操作()。
A.s→link=p;p→link=sB.s→link=p→link;p→link=s
C.s→link=p→link;p=sD.p→link=s;s→link=p
2.在下列排序方法中,不稳定的方法有()。
A.归并排序与基数排序B.插入排序与希尔排序
C.堆排序与快速排序D.选择排序与冒泡排序
3.在多级存储体系中,“Cache-主存”结构的作用是解决()的问题。
A.主存容量不足B.辅存与CPU速度不匹配C.主存与辅存速度不匹配
D.主存与CPU速度不匹配
4.在需要经常查找结点的前驱与后继的场合中,使用()比较合适。
A.单链表B.循环链表C.链栈
5.带头结点的单链表head为空的判断条件()。
A.head=NULLB.head→next=NULL
C.head→next=headD.head<>NULL
6.将一个递归算法改为对应的非递归算法时,通常需要使用()。
A.优先队列B.队列C.循环队列D.栈
7.下列描述的不是链表的优点是()。
A.逻辑上相邻的结点物理上不必邻接
B.插入、删除运算操作方便,不必移动结点
C.所需存储空间比线性表节省
D.无需事先估计存储空间的大小
8.SQL语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、
DELETE、UPDATE实现()功能。
A.数据查询B.数据控制C.数据定义D.数据操作
9.设某种二叉树有如下特点:
每个结点要么是叶子结点,要么有2棵子树。
如果一棵这样
的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为()。
A.2m+1B.2m-1C.2(m-1)D.2m
10.TCP/IP协议栈的网络层的主要功能是通过()来完成的。
A.IP协议B.TCP协议C.以太网协议D.IGP协议
11.实现不同的作业处理方式(如:
批处理、分时处理、实时处理等),主要是基于操作系
统对()管理采取了不同的策略。
A.处理机B.存储C.数据库D.文件
12.下面关于编译系统和解释系统的观点中,错误的是()。
A.解释程序不产生目标代码,它直接执行源程序或源程序的内部形式
B.使用编译系统时会区分编译阶段和运行阶段
C.一般来说,解释系统比编译系统复杂,但是可移植性好
D.一般来说,建立在编译基础上的系统在执行速度上要优于建立在解释执行基础上的系统
13.散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。
因为散列函数不
是一对一的关系,所以选择好的()方法是散列文件的关键。
A.散列函数B.除余法中的质数C.冲突处理D.散列函数和冲突处理
14.衡量查找算法效率的主要标准是()。
A.元素个数B.所需的存储量C.平均查找长度D.算法难易程度
15.对于#include和#include“filename.h”,以下说法错误的是()。
A.#include只搜索标准库路径
B.#include“filename.h”只搜索用户工作路径
C.#include搜索范围比#include“filename.h”小
D.两者可能等价
16.类定义的外部,可以被访问的成员有()。
A.所有类成员B.private或protected的类成员
C.public的类成员D.public或private的类成员
17.下列的模板说明中,正确的有()(两个答案)。
A.templateB.template
C.templateD.template
18.中断响应时间是指()。
A.从中断处理开始到中断处理结束所用的时间
B.从发出中断请求到中断处理结束所用的时间
C.从发出中断请求到进入中断处理所用的时间
D.从中断处理结束到再次中断请求的时间
19.()面向对象程序设计语言不同于其他语言的主要特点。
A.继承性B.消息传递C.多态性D.封装性
20.TCP/IP模型的体系结构中,ICMP协议属于()。
A.应用层B.网络层C.数据链路层D.传输层
第二、填空题。
(每空4分,总计40分)
1.阅读下列说明和流程图,将应填入(n)的字句写在答题纸的对应栏内。
【说明】
正弦函数可以用如下的泰勒级数展开式来计算:
下面的流程图描述了利用上述展开式计算并打印sin(x)的近似值的过程,其中用ε>0)表示误差要求,小于该误差即可结束计算,打印结果。
【流程图】
2.阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:
指向前驱结点
的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。
所有结点
的freq初始时都为0.每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访
问频度freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所
有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
voidLocate(int&x)
{<结点类型说明>
*p=first->next;
while(p!
=first&&1)p=p->next;
if(p!
=first)
{2;
<结点类型说明>
*current=p;
current->prior->next=current->next;
current->next->prior=current->prior;
p=current->prior;
while(p!
=first&&3)p=p->prior;
current->next=4;
current->prior=p;
p->next->prior=current;
p->next=5;
}
else
printf(“Sorry.Notfind!
\n”);\*没找到*\
}
第三、附加题(30分)
“背包问题”的基本描述是:
有一个背包,能盛放的物品总重量为S,设有N件物品,其重
量分别为w1,w2,…,wn,希望从N件物品中选择若干物品,所选物品的重量之和恰能
放入该背包,即所选物品的重量之和