原文發表於我的微信公衆號"濤歌依舊",可以點擊如下紅色文字鏈接閱讀:
筆試面試之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多多。
長按或掃描二維碼 可關注濤哥公衆號