筆試面試之C語言

    原文發表於我的微信公衆號"濤歌依舊",可以點擊如下紅色文字鏈接閱讀:

  筆試面試之C語言(鏈接)

 


     從微信公衆號把原文直接複製過來,內容如下(圖片和表格可能丟失,格式可能錯亂,故建議直接點擊上述紅色鏈接閱讀):
 

 

 

      前面寫了金三銀四求職季(鏈接),現在來逐步聊聊筆試面試,先來說C語言。

 

      C語言是一門基礎的計算機語言,很重要。如果是初學計算機編程,我建議把C語言作爲第一門語言,而不是現在爛大街的python.

      如果說C語言很簡單,總讓人感覺有點輕浮。如果說C語言難,又讓人感覺是沒入門。所以,我想說:C語言不難。

 

      實際上,在很多公司中,純用C語言的場景並不多,更常見的是C++或者Java,以及現在流行的Go.  比如,華爲和騰訊主要是用C++, 阿里主要是用Java, 而有些小公司,則在嘗試選用Go.

      C語言很重要,筆試面試中,也會涉及到一些,適當刷題是有必要的,能查缺補漏。每一次的筆試面試,都值得我們去充分準備,甚至是冗餘準備。

 

 

     下面,僅僅針對C語言本身來聊聊,比較基礎(不涉及到數據結構和算法以及計算機的其它相關知識):

1.指針和函數

      指針是C語言的精髓,函數幾乎是任何計算機語言的重要思想,必須熟練掌握,來看下這段程序有沒有問題:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
void GetMemory(char *p){    p = (char *)malloc(1000);}
void Test(void) {    char *str = NULL;    GetMemory(str);     strcpy(str, "testing");}

      這個程序考查了對指針以及函數傳參的理解,是非常簡單的問題。類似地,我們應該掌握函數指針、數組指針和指針數組這些基本的概念。

      在實際開發中,對空指針進行操作,幾乎是萬惡之源,踩過無數坑的朋友們,應該心有餘悸。

 

2.sizeof

      sizeof也幾乎是必考的題目,典型的需要注意點有:

       (1) 字符串末尾的'\0'

       (2) 結構體內存對齊

       (3) 函數形參的sizeof

       (4) 指針的sizeof

       (5) 數組的sizeof

       (6) 空結構體的sizeof

        

      這些應該算是非常基礎了,可以找一些題目來查缺補漏。在實際開發中,我見過別人在函數中對形參char str[]求sizeof, 以爲那是字符串的長度,搞笑啊。

 

3.const

       const的用法,在筆試和麪試時,也經常出現,尤其是配合指針使用時,比如要熟知下面語句的含義:

  •  
const char *p = "abc";

       另外,關於const和宏的區別,也需要很清楚。在實際開發中,該用const的地方,建議都加,能增強程序的穩健性和可讀性。

 

4.static

       static的用法,也經常被考查到。實際上,static就是限定了函數和變量僅在本文件內有效。在實際開發中,大家肯定見過單例,必然見過static.

 

5.extern

      extern的用法,也常見於筆試面試中,也必須要掌握。在實際開發中,當C和C++混在一起的時候,extern就顯得尤爲重要了。

 

6.字符串

      字符串在C語言中很常見,經常與sizeof和各類字符串操作函數一起考查,另外,要理解字符串和字符數組的區別。

      字符串需要特別注意越界問題,無論是筆試面試還是實際開發,都需要重視,該補'\0'的地方一定要補。很多進程崩潰的問題,都是字符串操作不當所致,見得太多了。

 

7. 宏和預編譯

      宏和預編譯也是C語言中經常涉及的點,基本的#define要掌握。#ifndef實現的頭文件衛士,也是常考點。做過C語言程序實際開發的朋友,肯定會知道#ifndef的用途。

      #define與const的區別,#define與typedef的區別,都要瞭然於心。#include包含時,<>與""的區別也會經常被問到。

 

8. 零值比較

      各類型的值與零值的比較,已經是爛大街的題目了,網上到處都是。在準備筆試面試的同學,可以注意下。

 

9. 堆和棧

      堆和棧並不是C語言本身的內容,其區別也經常被考到。對於各種變量在內存中同的存儲區域,也需要熟悉,實際上就是考查內存知識。

      在實際開發中,堆內存沒有釋放,容易讓程序產生慢性病,積累到一定時間後爆發,所謂的內存內漏,讓很多程序員不寒而慄。

 

10. 手寫程序

      手寫程序,也是筆試面試中必不可少的環節。需要注意非法輸入的判斷,養成嚴密的邏輯習慣。通常會考查諸如strcpy, strcmp, strcat之類基本函數的實現,看起來簡單,但要完全寫對,其實並不容易。

      有時會考查一些排序和查找之類的算法實現,或者數據結構(如鏈表)的基本操作。從手寫程序中,能間接看出一個人的編碼習慣和能力。

 

 

      這篇文章很簡單,非常基礎,只是對C語言筆試面試做一個基本的介紹,沒有涉及到數據結構和算法,也沒有涉及到實際開發中的一些經驗問題,我們後面會對這些進行專門介紹。

 

      C語言雖然不難,但真正準備筆試面試時,建議要適當刷題,查缺補漏。

      每一次的筆試面試,都值得我們去充分準備,甚至是冗餘準備。祝願大家在筆試面試中取得好成績,money多多。

 

長按或掃描二維碼  可關注濤哥公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章