亞控科技筆試面試記錄


筆試

可以參考:https://www.cnblogs.com/wft1990/p/6545446.html

以下僅是回憶起的題目

1  回答下面的問題(6分)

  (1).Void GetMemory(char **p, int num){

  *p = (char *)malloc(num);

  }

  void Test(void){

  char *str = NULL;

  GetMemory(str, 100);

  strcpy(str, "hello");

  printf(str);

  }

  請問運行Test 函數會有什么樣的結果?

  答:輸出“hello”

  (2). void Test(void){

  char *str = (char *) malloc(100);

  strcpy(str, “hello”);

  free(str);

  if(str != NULL){

  strcpy(str, “world”);

  printf(str);

  }

  }

  請問運行Test 函數會有什么樣的結果?

  答:輸出“world”。

  這里仔細理解下free的意義,free函數只是釋放指針指向的內容,而該指針仍然指向原來指向的地方(str != NULL)

  此時,指針為野指針,如果此時操作該指針會導致不可預期的錯誤。安全做法是:在使用free函數釋放指針指向的空間之后,將指針的值置為NULL

  (3). char *GetMemory(void){

  char p[] = "hello world";

  return p;

  }

  void Test(void){

  char *str = NULL;

  str = GetMemory();

  printf(str);

  }

  請問運行Test 函數會有什么樣的結果?

  答:無效的指針,輸出不確定

2 編寫strcat函數(6分)

  已知strcat函數的原型是char *strcat (char *strDest, const char *strSrc);

  其中strDest 是目的字符串,strSrc 是源字符串。

  (1)不調用C++/C 的字符串庫函數,請編寫函數 strcat

  答:

  VC源碼:

  char * __cdecl strcat (char * dst, const char * src)

  {

  char * cp = dst;

  while( *cp )

  cp++; /* find end of dst */

  while( *cp++ = *src++ ) ; /* Copy src to end of dst */

  return( dst ); /* return dst */

  }

  (2)strcat能把strSrc 的內容連接到strDest,為什么還要char * 類型的返回值?

  答:方便賦值給其他變量

  參考:https://www.cnblogs.com/zkfopen/p/11059521.html

3  int i=10, j=10, k=3; k*=i+j; k最后的值是?

  答:60,此題考察優先級,實際寫成: k*=(i+j);,賦值運算符優先級最低

4 寫出float x 與“零值”比較的if語句。

  答:if(x>-0.000001 & x<0.000001)

      printf("x 是零\n");

5 堆棧溢出一般是由什么原因導致的?

  答:沒有回收垃圾資源。

6 多態的作用

  答:1 不必編寫每一子類的功能調用,可以直接把不同子類當父類看,屏蔽子類間的差異,提高代碼的通用率/復用率
    2 父類引用可以調用不同子類的功能,提高了代碼的擴充性和可維護性

7 進程通信方法及線程同步機制區別

  答:參考:https://blog.csdn.net/eulb/article/details/2177500

8 為什么構造函數沒有返回值?構造函數失敗怎么處理?

  答:https://blog.csdn.net/tangaowen/article/details/1818819

    https://blog.csdn.net/wind19/article/details/8213114

9 數字字符串轉換成這個字符串對應的數字(十六進制)

   要求:這個字符串參數必須包含一個或者多個數字,函數應該把這些數字轉換為整數並且返回這個整數。如果字符串參數包含任何非數字字符,函數就返回零。不必擔心算數溢出。

  答:https://www.cnblogs.com/zkfopen/p/11060685.html

 

 面試

1 虛函數的作用,虛函數的實現原理

  答:https://www.cnblogs.com/zkfopen/p/11061414.html

2  什么是野指針?野指針的危害?如何避免野指針?

  答:野指針是隨機指向一塊內存的指針,野指針不是NULL指針。

    野指針可能會造成內存泄露的危害。(注意:野指針不會一定造成內存泄露,如果該野指針指向的內存剛好是某個變量的地址,那么野指針也能使用這塊內存)。

    我們要在以后養成良好的編碼習慣:

    1.將沒有指向的指針初始化指向NULL(指向NULL的指針不能對他的指向進行修改)

    2.當想給一個指針指向的空間賦值時,一定要給這個指針分配空間(malloc)

    3.當空間分配完后,要檢查這個指針的空間是否分配成功

    4.當空間分配完后,要先將這塊內存初始化(memset,bzeor)

    5.當這塊內存使用完后,必須將這塊內存釋放(free)

    6.釋放完空間后,將指針再次指向NULL(防止這個指針再次成為野指針)

3 對代碼規范的理解

  答:

    若想寫出一個好的代碼,我覺得應該可以具體的從以下細節進行訓練。
    1.排版
    2.注釋
    3.標識符命名
    4.可讀性
    5.變量,結構
    6.函數,過程
    7.可測性
    8.程序效率
    9.質量保證
    10.代碼編輯,編譯,審查
    11.代碼測試及維護
    12.宏

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM