- 相關(guān)推薦
C++筆試(5) 騰訊
C++這個(gè)詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語言。它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。最新正式標(biāo)準(zhǔn)C++于2014年8月18日公布。其編程領(lǐng)域眾廣,常用于系統(tǒng)開發(fā),引擎開發(fā)等應(yīng)用領(lǐng)域,是至今為止最受廣大程序員受用的最強(qiáng)大編程語言之一,支持類:類、封裝、重載等特性!
概念簡(jiǎn)介
C++這個(gè)詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語言。它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。
發(fā)展歷程
在C的基礎(chǔ)上,一九八三年由貝爾實(shí)驗(yàn)室的Bjarne Strou-strup推出了C++。 C++進(jìn)一步擴(kuò)充和完善了C語言,成為一種面向 對(duì)象的程序設(shè)計(jì)語言。C++目前流行的編譯器
最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2012。C++提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個(gè)語言的復(fù)雜性,掌握起來有一定難度。
C++由美國AT&T貝爾實(shí)驗(yàn)室的本賈尼斯特勞斯特盧普博士在20世紀(jì)80年代初期發(fā)明并實(shí)現(xiàn)(最初這種語言被稱作“C with Classes”帶類的C)。開始,C++是作為C語言的增強(qiáng)版出現(xiàn)的,從給C語言增加類開始,不斷的增加新特性。虛函數(shù)(virtual function)、運(yùn)算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、命名空間(name space)逐漸被加入標(biāo)準(zhǔn)。
語言特點(diǎn)
優(yōu)點(diǎn)
C++代碼 C++設(shè)計(jì)成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語言。
C++設(shè)計(jì)成直接的和廣泛的支持多種程序設(shè)計(jì)風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。
C++設(shè)計(jì)成給程序設(shè)計(jì)者更多的選擇,即使可能導(dǎo)致程序設(shè)計(jì)者選擇錯(cuò)誤。
C++設(shè)計(jì)成盡可能與C兼容,借此提供一個(gè)從C到C++的平滑過渡。
C++避免平臺(tái)限定或沒有普遍用途的特性。
C++不使用會(huì)帶來額外開銷的特性。
C++設(shè)計(jì)成無需復(fù)雜的程序設(shè)計(jì)環(huán)境。
出于保證語言的簡(jiǎn)潔和運(yùn)行高效等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關(guān)于此類話題,Bjarne Stroustrup的《C++語言的設(shè)計(jì)和演化》(1994)里做了詳盡的陳述。
C++在一定程度上可以和C語言很好的結(jié)合,甚至目前大多數(shù)C語言程序是在C++的集成開發(fā)環(huán)境中完成的。C++相對(duì)眾多的面向?qū)ο蟮恼Z言,具有相當(dāng)高的性能。
C++引入了面向?qū)ο蟮母拍,使得開發(fā)人機(jī)交互類型的應(yīng)用程序更為簡(jiǎn)單、快捷。很多優(yōu)秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。
1 計(jì)算 a^b << 2 (運(yùn)算符優(yōu)先級(jí)問題)
int a = 2;
int b = 1;
int c = 2;
cout << (a ^ b << c);
6
2 根據(jù)先序中序求后序
3 a[3][4]哪個(gè)不能表示 a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4)
cout << *(&a[1][1]) << endl
<<*(*(a+1)+1) << endl
<< *(&a[1]+1) << endl
<< *(&a[0][0]+4);
6
6
0012FEC8
5
4 for(int i...)
for(int j...)
printf(i,j);
printf(j)
會(huì)出現(xiàn)什么問題
J沒有定義,不在其作用域
5 for(i=0;i<10;++i,sum+=i);的運(yùn)行結(jié)果
int i, sum = 0;
for(i=0;i<10;++i,sum+=i);
cout << sum;
55
6 10個(gè)數(shù)順序插入查找二叉樹,元素62的比較次數(shù)
7 10個(gè)數(shù)放入模10hash鏈表,最大長(zhǎng)度是多少
8 fun((exp1,exp2),(exp3,exp4,exp5))有幾個(gè)實(shí)參
2個(gè),逗號(hào)運(yùn)算符,
9 希爾 冒泡 快速 插入 哪個(gè)平均速度最快
10 二分查找是 順序存儲(chǔ) 鏈存儲(chǔ) 按value有序中的哪些
11 順序查找的平均時(shí)間
12 *p=NULL *p=new char[100] sizeof(p)各為多少
都是4
13 頻繁的插入刪除操作使用什么結(jié)構(gòu)比較合適,鏈表還是數(shù)組
鏈表
14 enum的聲明方式
enum A{
a1,
a2,
a3,
};
15 1-20的兩個(gè)數(shù)把和告訴A,積告訴B,A說不知道是多少,
B也說不知道,這時(shí)A說我知道了,B接著說我也知道了,問這兩個(gè)數(shù)是多少
大題:
1 把字符串轉(zhuǎn)換為小寫,不成功返回NULL,成功返回新串
char* toLower(char* sSrcStr)
{
char* sDest= NULL;
if( __1___)
{
int j;
sLen = strlen(sSrcStr);
sDest = new [_______2_____];
if(*sDest == NULL)
return NULL;
sDest[sLen] = ;
while(_____3____)
sDest[sLen] = toLowerChar(sSrcStr[sLen]);
}
return sDest;
}
char toLowerChar(char a)
{
if(a >= A && a <= Z)
return a - A + a;
}
char* toLower(char* sSrcStr)
{
char* sDest= NULL;
if(sSrcStr)
{
int j;
int sLen = strlen(sSrcStr);
sDest = new char[sLen + 1];
if(*sDest == NULL)
return NULL;
sDest[sLen] = ;
while(sLen--)
sDest[sLen] = toLowerChar(sSrcStr[sLen]);
}
return sDest;
}
2 把字符串轉(zhuǎn)換為整數(shù) 例如:"-123" -> -123
main()
{
.....
if( *string == - )
n = ____1______; -1* num(string+1)
else
n = num(string);
.....
}
int num(char* string)
{
for(;!(*string==0);string++)
{
int k;
k = __2_____; *string
j = --sLen;
while( __3__) j--
k = k * 10;
num = num + k;
}
return num;
}
附加題:
1 linux下調(diào)試core的命令,察看堆棧狀態(tài)命令
2 寫出socks套接字 服務(wù)端 客戶端 通訊程序
3 填空補(bǔ)全程序,按照我的理解是添入:win32調(diào)入dll的函數(shù)名
查找函數(shù)入口的函數(shù)名 找到函數(shù)的調(diào)用形式
把formView加到singledoc的聲明 將singledoc加到app的聲明
4 有關(guān)系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)
1 問上課程 "db"的學(xué)生no
2 成績(jī)最高的學(xué)生號(hào)
3 每科大于90分的人數(shù)
2005年騰訊招聘
選擇題(60)
c/c++ os linux 方面的基礎(chǔ)知識(shí) c的Sizeof函數(shù)有好幾個(gè)!
程序填空(40)
1.(20) 4空x5
不使用額外空間,將 A,B兩鏈表的元素交叉歸并
2.(20) 4空x5
MFC 將樹序列化 轉(zhuǎn)存在數(shù)組或 鏈表中!
發(fā)信人: ChinaOfey (勇敢的傻,傻得勇敢), 信區(qū): Career_Plaza
標(biāo) 題: 騰訊筆試題
發(fā)信站: 水木社區(qū) (Sat Nov 5 16:25:25 2005), 站內(nèi)
希望明年的兄弟有用!(B卷)
第一部分:基本都是數(shù)據(jù)結(jié)構(gòu)題+1,2道操作系統(tǒng)和數(shù)據(jù)庫相關(guān)的(比較基本)
有印象的:
1,為節(jié)省空間,兩個(gè)棧共用一個(gè)空間,棧底在兩邊,問什么時(shí)候表明空間用完
答案:棧頂相遇時(shí)
這道題就是很基礎(chǔ)的一個(gè)題目,因?yàn)槭堑谝坏李},所以印象比較深^_^
2,char A[5]; char* B ="abcdefg"; void * C; C = new char[100];
sizeof(A) sizeof(B) size(C)
5,4,4
3,爸爸,媽媽,妹妹,小強(qiáng),至少兩個(gè)人同一生肖的概率是多少
1- 12*11*10*9/12*12*12*12 = 43% ,我忘用1減了....
然后還有幾個(gè)看程序給結(jié)果的題,考察了類,指針的內(nèi)容
第二部分:程序填空
主要要能看出他的思路
第三部分:寫代碼
1,關(guān)于mfc的,一個(gè)控件,顯示時(shí)間,1s鐘刷新一次
2,SQL語言進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫操作,建表,查詢,求平均工資等
不記得語言了,因此只好自創(chuàng)....ft
3,Unix進(jìn)程通信有哪些方式,各有什么特點(diǎn)?
(其中A卷給的是道網(wǎng)絡(luò)編程題目)
第四部分:主觀題
考rp的,比較無聊,手都寫酸了....
程序4說明]
設(shè) M 叉樹采用列表法表示,即每棵子樹對(duì)應(yīng)一個(gè)列表,列表的結(jié)構(gòu)為:子樹根結(jié)點(diǎn)的值部分
(設(shè)為一個(gè)字符) 和用“( )”,括起來的各子樹的列表 (如有子樹的話) ,各子列表間用“
,”,分隔。例如下面的三叉樹可用列表 a( b( c,d ),e,f( g,h,i ))表示。
本程序輸入列表,生成一棵 M 叉樹,并由 M 叉樹輸出列表。假定輸入無錯(cuò)誤。
[程序4]
#include〈stdio.h〉
#include〈stdlib.h〉
#define M 3
typedef struct node{ char val;
struct node *subTree[M];
} NODE;
char buf[255] ,*str = buf
NODE *d = NULL
NODE *mackTree( ) /*由列表生成M叉樹*/
{ int k; NODE *s ;
s = __(1)__
s -> val = *str++ ;
for ( k = 0 ; k < M ; k++ ) s-> subTree[k] = NULL ;
if(*str=( ){
k = 0;
do { str++;
s -> subTree[k] = __(2)__ ;
if ( *str == ) ) { str++; break ; }
k = k+l ;
} while ( __(3)__ );
}
return s ;
}
void walkTree( NODE *t ) /*由 M 叉樹輸出列表*/
{ int i ;
if( t != NULL ) {
__(4)__
if ( t -> subTree[0] == NULL ) return ;
putchar ( ( ) ;
for ( i = 0 ; i < m ; i++) {
__(5)__
if ( i! = M - l && t -> subTree[i+l] != NULL )
putchar ( , ) ;
}
putchar ( ) ) ;
}
}
void main( )
{ printf( "Enter exp:" ) ;
scanf( "%S" , str ) ;
d = makeTree() ;
walkTree( d ) ; put ) ;
}
有兩個(gè)集合
集合A{1,7,19,21,55,100。。。}
集合B{7,22,100。。。}
兩個(gè)集合都是10萬個(gè)數(shù)據(jù)(已排序),要求寫一個(gè)算法,判斷B是不是A的子集,算法時(shí)間復(fù)雜度為Q(N)
[C++筆試(5) 騰訊]
【C++筆試5 騰訊】相關(guān)文章:
騰訊筆試經(jīng)驗(yàn)分享06-25
騰訊筆試題目及答案06-21
騰訊產(chǎn)品廣州筆試經(jīng)驗(yàn)精選08-23
騰訊運(yùn)營筆試題目10-03
騰訊C++方向程序員面試07-21
聯(lián)想C++筆試題08-28
騰訊軟件測(cè)試筆試題08-03
騰訊產(chǎn)品廣州筆試經(jīng)驗(yàn)分享08-19
騰訊校招在線筆試題目07-20