2021年網易技術類面試題

小編:管理員 523閱讀 2021.06.10

第1題:


#include < filename.h >和#i nclude “filename.h” 有什么區別?




答:對于#i nclude < filename.h >,編譯器從標準庫路徑開始搜索filename.h

  對于#i nclude “filename.h”,編譯器從用戶的工作路徑開始搜索filename.h



第2題:


在C++ 程序中調用被C 編譯器編譯后的函數,為什么要加extern “C”?




答:C++語言支持函數重載,C 語言不支持函數重載。函數被C++編譯后在庫中的名字與C 語言的不同。假設某個函數的原型為: void foo(int x, int y);

  該函數被C 編譯器編譯后在庫中的名字為_foo , 而C++ 編譯器則會產生像_foo_int_int 之類的名字。

  C++提供了C 連接交換指定符號extern“C”來解決名字匹配問題。



第3題:


一個類有基類、內部有一個其他類的成員對象,構造函數的執行順序是怎樣的?




答:先執行基類的(如果基類當中有虛基類,要先執行虛基類的,其他基類則按照聲明派生類時的順序依次執行),再執行成員對象的,最后執行自己的。



第4題:


New delete 與malloc free 的區別




答:用malloc 函數不能初始化對象,new 會調用對象的構造函數。Delete 會調用對象的destructor,而free 不會調用對象的destructor.



第5題:


Struct 和class 的區別




答:struct 中成員變量和成員函數默認訪問權限是public,class 是private



第6題:


請問下面程序有什么錯誤?

int a[60][250][1000],i,j,k;

  for(k=0;k<=1000;k++)

  for(j=0;j<250;j++)

  for(i=0;i<60;i++)

  a[i][j][k]=0;




答:把循環語句內外換一下



第7題:


請寫出下列代碼的輸出內容

  #include <.stdio.h>

  main()

  {

  int a,b,c,d;

  a=10;

  b=a++;

  c=++a;

  d=10*a++;

  printf("b,c,d:%d,%d,%d",b,c,d);

  return 0;

  }




答:10,12,120



第8題:


寫出BOOL,int,float,指針類型的變量a 與零的比較語句。




答:BOOL : if ( !a )

  int : if ( a == 0)

  float : const EXPRESSION EXP = 0.000001

  if ( a < EXP && a >-EXP)

  pointer : if ( a != NULL)



第9題:


已知strcpy 函數的原型是:

  char *strcpy(char *strDest, const char *strSrc);

  其中strDest 是目的字符串,strSrc 是源字符串。不調用C++/C 的字符串庫函數,請編寫函數 strcpy




答:char *strcpy(char *strDest, const char *strSrc)

  {

  if ( strDest == NULL || strSrc == NULL)

  return NULL ;

  if ( strDest == strSrc)

  return strDest ;

  char *tempptr = strDest ;

  while( (*strDest++ = *strSrc++) != ‘\0’)

  ;

  return tempptr ;

  }



第10題:


寫一個函數找出一個整數數組中,第二大的數。




答:const int MINNUMBER = -32767 ;

  int find_sec_max( int data[] , int count) //類似于1 4 4 4這樣的序列將認為1是第二大數

  {

  int maxnumber = data[0] ;

  int sec_max = MINNUMBER ;

  for ( int i = 1 ; i < count ; i++)

  {

  if ( data[i] > maxnumber )

  {

  sec_max = maxnumber ;

  maxnumber = data[i] ;

  }

  else

  {

  if ( data[i] > sec_max )

  sec_max = data[i] ;

  }

  }

  return sec_max ;

  }



關聯標簽: