日韩欧美另类久久久精品_亚洲大色堂人在线无码_国产三级aⅴ在线播放_在线无码aⅴ精品动漫_国产精品精品国产专区

我要投稿 投訴建議

搜狗C++筆試題

時間:2022-09-25 15:38:34 筆試題目 我要投稿
  • 相關(guān)推薦

搜狗2017C++筆試題

  搜狗2017C++筆試題有哪些呢?以下是CN人才網(wǎng)小編為大家整理的搜狗2017C++筆試題,歡迎閱讀參考。

搜狗2017C++筆試題

  1.關(guān)于重載和多態(tài)正確的是?

  A.如果父類和子類都有相同的方法,參數(shù)個數(shù)不同,將子類對象賦給父類后,由于子類繼承于父類,所以使用父類指針調(diào)用父類方法時,實際調(diào)用的是子類的方法;

  B.選項全部都不正確

  C.重載和多態(tài)在C++面向?qū)ο缶幊讨薪?jīng)常用到的方法,都只在實現(xiàn)子類的方法時才會使用

  D.

  class A{

  void test(floata){cout<<"1";}

  };

  class B:public A{

  void test(intb){cout<<"2";}

  };

  A *a=new A;

  B *b=new B;

  a=b;

  a.test(1.1);

  結(jié)果是1

  解析:A中由于沒有說明使用虛函數(shù),使程序有多態(tài)性,所以實際是調(diào)用父類的方法;

  C中重載在一般函數(shù)中也會使用;

  D中,題目有2個錯誤,class A中,需添加成員函數(shù)的Public訪問屬性,否則在類外不能訪問成員函數(shù),并且指針對象的訪問方式只能使用間接訪問方式,即a->test(1.1)或者(*a).test(1.1),同樣,由于沒有多態(tài)性,輸出結(jié)果為1,若class A中test函數(shù)為virtual,則輸出2

  2.現(xiàn)有兩堆硬幣,小明和小亮玩游戲,每次每人只能從其中一堆中取走1個或2個硬幣,最后將硬幣取完者算作勝利,當兩堆硬幣的個數(shù)分別是12,13時,小明應該如何安排策略才能必定獲得勝利?

  A.安排小亮先取硬幣;

  B.小明或小亮均一定必勝

  C.安排自己先取硬幣

  D.不可能必勝

  解析:很好理解,小明先從13個里面取出一個,剩下12個,以后的取法就是:無論小亮每次取多少個,自己都從另外一堆中取相同的個數(shù),則可保證自己會取勝,因為兩堆都是12個。

  3.不考慮任何編譯器優(yōu)化(如:NRVO),下述代碼的第10行會發(fā)生

  #include //1

  class B//2

  {//3

  };//4

  B func(const B& rhs){//5

  return rhs;//6

  }//7

  int main(int argc,char **argv){//8

  B b1,b2;//9

  b2=func(b1);//10

  }//11

  A.一次默認構(gòu)造函數(shù),一次拷貝構(gòu)造函數(shù),一次析構(gòu)函數(shù),一次(拷貝賦值運算符)operator=

  B.二次拷貝構(gòu)造函數(shù),一次析構(gòu)函數(shù)

  C.一次(拷貝賦值運算符)operator=,一次析構(gòu)函數(shù)

  D.一次拷貝構(gòu)造函數(shù),一次析構(gòu)函數(shù),一次(拷貝賦值運算符)operator=

  解析:b2=func(b1),首先b1作為形參傳遞到const B& rhs,會發(fā)生拷貝構(gòu)造函數(shù),然后fun函數(shù)結(jié)束時發(fā)生析構(gòu)函數(shù),最后是operator=,賦值給b2.

  4.下面代碼的輸出結(jié)果是()

  int main(){

  int pid;

  int num=1;

  pid=fork();

  if(pid>0){

  num++;

  printf("in parent:num:%daddr:%x\n",num,&num);

  }

  else if(pid==0){

  printf("in child:num:%daddr:%x\n",num,&num);

  }

  A.父子進程中輸出的num相同,num地址不相同

  B.父子進程中輸出的num不同,num地址相同

  C.父子進程中輸出的num相同,num地址也相同

  D.父子進程中輸出的num不同,num地址不相同

  5.關(guān)于以下代碼中的變量在內(nèi)存中的存儲位置描述不正確的是()

  int a=0;

  class someClass{

  int b;

  static int c;

  };

  int main(){

  int d=0;

  someClass *p=new someClass();

  return 0;

  }

  A.b存在堆區(qū)

  B.c存在堆區(qū)

  C.d存在棧區(qū)

  D.a存在全局變量區(qū)

  解析: C應該在全局靜態(tài)區(qū)

  6.以下代碼段有問題的是()

  A.void func1(char *e){

  char *p1;

  p1=malloc(100);

  sprintf(p1,error:"%s'.",e);

  local_log(p1);

  }

  B. int func2(char *filename)

  {

  FILE *fp;

  int key;

  fp=fopen(filename,"r");

  fscanf(fp,"%d",&key);

  return key;

  }

  C.voidfunc3(char *info){

  char *p,*pp;

  p=malloc(100);

  pp=p;

  free(p);

  sprintf(pp,*info:"%s'.",info);

  free(pp);

  }

  D.選項全部都正確

  解析:答案是ABC,答案是A申請了空間沒有釋放,答案B打開流沒有關(guān)閉,答案C其實指針都是一塊內(nèi)存空間,free了二次,程序會因為內(nèi)存錯誤崩潰.

  7.請問該程序的輸出是多少?

  #include

  int main()

  {

  unsigned char i=7;

  int j=0;

  for(;i>0;i-=3)

  {

  ++j;

  }

  printf("%d\n",j);

  return 0;

  }

  A.2

  B.死循環(huán)

  C.173

  D.172

  解析:unsigned char 8位數(shù)據(jù)位,范圍0-255,

  所以-2(11111110)時,溢出變成254;

  同理-1(11111111)時,溢出變成255;

  最后減到0時,不滿足循環(huán)條件,for停止。

  剛好173次。

  7 4 1 -2 ==>共4次

  254 251 ... 5 2 -1 ==>共85次

  255 252 ... 6 3 ==>共85-1=84次(因為3-3=0,不能進入循環(huán)了)

  所以總共173次。(相減相除)

  更快捷的計算方法:256*2+7=519=173*3

  8.快速排序在下面哪種情況下優(yōu)勢最明顯()

  A.數(shù)據(jù)有多個相同數(shù)值

  B.數(shù)據(jù)基本有序

  C.數(shù)據(jù)基本無序

  D.數(shù)據(jù)無任何相同數(shù)值

  9.下列各樹形結(jié)構(gòu)中,哪些是平衡二叉查找樹:

  解析:二叉平衡查找樹:左子樹中所有節(jié)點的值小于根的值,右子樹中的所有節(jié)點的值大于根的值;左右子樹的高度之差的絕對值為0或1,選C

  10.下面哪種數(shù)據(jù)結(jié)構(gòu)最適合創(chuàng)建一個優(yōu)先級隊列()

  A.堆

  B.雙向鏈表

  C.單向鏈表

  D.棧

  11.某個大型的網(wǎng)絡(luò)游戲網(wǎng)站,現(xiàn)有幾億用戶,為了實時獲取前十名游戲分數(shù)最高的玩家,使用以下哪個排序算法比較合理()

  A.基數(shù)排序

  B.快速排序

  C.二叉排序

  D.堆排序

  12.有A,B,C,D,E五個字符,出現(xiàn)的頻率分別為2,5,3,3,4,由A,B,C,D,E生成的最優(yōu)二叉樹中,該樹的帶權(quán)路徑長是多少()

  A35

  B.49

  C.39

  D.45

  13.從根開始按層次(第0層->第1層->第2層)遍歷一顆二叉樹,需要使用什么輔助數(shù)據(jù)結(jié)構(gòu)?()

  A. heap

  B.queue

  C.binary tree

  D.stack

  14.假設(shè)MySQL數(shù)據(jù)庫表:

  create table T{

  k int unsigned not null auto_increment,

  a date,

  b varchar(24),

  c int,d varchar(24),

  primary key(k),unique key a_index (a DESC,b DESC),

  key k1(b),key k2(c),key k3(d));

  如下哪些sql語句查詢能較好的利用索引?()

  A.select bfrom WHERE b like 'aaa%';

  B.select a,bfrom T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;

  C.selecta,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;

  D.selecta,b,c from T WHERE a='2015-10-25' ORDER BY a,b;

  15.在一個游戲的任務中,玩家需要進入1個山洞,取得寶石,之后回到入口.

  山洞的地圖如下:

  S--------------------T

  S是入口

  T處有寶箱,打開寶箱之后可能得到的物品有:

  1)寶石,出現(xiàn)概率為5%.

  2)魔法券.出現(xiàn)概率為50%.玩家每消耗一個魔法券,可以直接傳送到入口S.

  3)什么也沒有,概率為45%.

  S到T的距離為1.

  每次玩家回到S之后,寶箱T的狀態(tài)會重置,再次進入山洞可以重新打開寶箱獲得物品.

  玩家的任務是到達T獲取寶石之后回到入口S.如果到達T之后沒有獲得寶石,可以走出山洞之后再進入反復刷.

  問題:玩家完成任務所走路程的數(shù)學期望是()

  A.40

  B.25

  C.35

  D.30

  16.下面關(guān)于TCP的描述,錯誤的是()

  A.TCP是一種面向連接的協(xié)議,給用戶進程提供可靠的全雙工的字節(jié)流

  B.TCP客戶端和服務器之間建立連接需要經(jīng)過3次握手

  C.只要有一方主動關(guān)閉連接后,這個TCP連接就結(jié)束了

  D.只要有一方主動關(guān)閉連接后,這個TCP連接就結(jié)束了

  17.關(guān)于進程和線程描述正確的是()

  A.線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程的資源

  B.在創(chuàng)建或銷毀進程時,系統(tǒng)開銷明顯大于創(chuàng)建或銷毀線程時開銷

  C.進程是調(diào)度和擁有資源的基本單位

  D.不僅進程自檢可以并發(fā)執(zhí)行,同一個進程的多個進程之間也可以并發(fā)執(zhí)行

  18.下面()哪個函數(shù)返回的有效句柄用完后不需要CloseHandle

  A.CreateThread

  B. GetCurrentProcess

  C. OpenProcess

  D. CreateFile

  19. invalidateRect的作用是()

  A.擦除一個矩形區(qū)域

  B.刪除一個矩形

  C.使一個矩形區(qū)域變?yōu)闊o效,從而釋放部分GDI資源

  D.使一個矩形區(qū)域變?yōu)闊o效,從而可以重繪

  20.典型的創(chuàng)建Windows窗口過程的流程為:()

  A.注冊窗口類->創(chuàng)建窗口->更新窗口->顯示窗口->消息循環(huán)

  B.創(chuàng)建窗口->注冊窗口類->顯示窗口->更新窗口->消息循環(huán)

  C.注冊窗口類->創(chuàng)建窗口->顯示窗口->更新窗口->消息循環(huán)

  D.創(chuàng)建窗口->注冊窗口類->更新窗口->顯示窗口->消息循環(huán)

  參考答案:

  1.B 2.C 3.D 4.B 5.B 6.ABC 7.C 8.C 9.C 10.A

  11.D 12.C 13.B 14.AD 15.D 16.C 17.ABCD 18.B 19.D 20.C