當前位置:首頁 » 編程語言 » c語言華為筆試

c語言華為筆試

發布時間: 2022-12-19 23:07:21

『壹』 華為軟體開發工程師筆試用什麼語言c c++ java

面試那個部門的哪個職位。。

默認使用C/C++, 看部門。 如果考java 會單獨說明。

技術類的考試基本沒有刁鑽的題目,考基本功為主。

『貳』 非應屆生還沒有工作經驗怎麼找工作

我覺得你現在自身素質不錯,自己身上有很多優點,你缺乏的不是經驗,而是自信,每一個人都會經理自己的第一份工作, 而且沒有工作經驗的不只你一個,我相信大家都會順利走過這時候。我在參加第一份工作之前想法跟你一樣,但是我找到了自己的方向,知道自己該怎麼做,所以我勇敢的邁出了第一步。我覺得你現在應該總結自己的優點,應聘時展示出自己的自信,我相信你是最棒的,你一定行!!!
你也可以加我,我把自己的經驗講給你。
QQ519605835
我們也可以探討一下關於找工作,有一份不錯的兼職我可以介紹給你,在找到專職工作之前可以先賺點錢。

『叄』 請問華為CMO技術筆試和面試的時候,會考哪些專業知識

1. 華為用到的linux不多,用win2003 win7.今年6月份剛開始用linux,估計不會考..CMO一般沒有筆試..svn會問的,要是你是有工作經驗的話.剛畢業問了也不知道....
2. 網路問題不考.. 版本管理的一些專業問題.如代碼的靜態檢查,pclint,coverity,fortify等 ...能不能加班這樣的.版本編譯問題,因為華為大多是用c語言的,可能會問你會不會用souce insight ,beyond compare 等工具..
3. 最好是會寫腳本,批處理腳本跟ruby腳本 ,批處理應該會問的,ruby可能不涉及,因為那是寫測試用例用的,不需要cmo寫,但要熟悉下..ftp 也要熟悉一下.
4.基本上差不多了,面試不能太慫,要冷靜,最好不露任何錶情,CMO崗位就是要求強勢一點的.
另外,這個崗位很辛苦,你去了就知道了.

『肆』 請教華為的C語言筆試題:int (*ptr) (),則一維數組的名字是ptr

不存在一般的問題。ptr就是一個函數指針。
它可以指向任意類似如下的函數;
int fname(//任意參數)//fname任意。

『伍』 華為筆試題按部門分嗎

分。華為筆試分部門,要看應聘者報的什麼崗位和哪個部門,有的考c語言,有的考java,C++,不管什麼部門,都優先錄用筆試成績高的。,

『陸』 C++中如何表示從2到10

綜合自網路



C語言在嵌入式學習中是必備的知識,審核大部分操作都要圍繞C語言進行,而其中有三塊「難啃的硬骨頭」幾乎是公認級別的。

指針公認最難理解的概念,也是讓很多初學者選擇放棄的直接原因。

指針之所以難理解,因為指針本身就是一個變數,是一個非常特殊的變數,專門存放地址的變數,這個地址需要給申請空間才能裝東西,而且因為是個變數可以中間賦值,這么一倒騰很多人就開始犯暈了,繞不開彎了。C語言之所以被很多高手所喜歡,就是指針的魅力,中間可以靈活的切換,執行效率超高,這點也是讓小白暈菜的地方。

指針是學習繞不過去的知識點,而且學完C語言,下一步緊接著切換到數據結構和演算法,指針是切換的重點,指針搞不定下一步進行起來就很難,會讓很多人放棄繼續學習的勇氣。

指針直接對接內存結構,常見的C語言裡面的指針亂指,數組越界根本原因就是內存問題。在指針這個點有無窮無盡的發揮空間。很多編程的技巧都在此集結。

指針還涉及如何申請釋放內存,如果釋放不及時就會出現內存泄露的情況,指針是高效好用,但不徹底搞明白對於有些人來說簡直就是噩夢。

在概念方面問題可以參見此前推文《對於C語言指針最詳盡的講解》,那麼在指針方面可以參見一下大神的經驗:

復雜類型說明

要了解指針,多多少少會出現一些比較復雜的類型。所以先介紹一下如何完全理解一個復雜類型。

要理解復雜類型其實很簡單,一個類型里會出現很多運算符,他們也像普通的表達式一樣,有優先順序,其優先順序和運算優先順序一樣。

所以筆者總結了一下其原則:從變數名處起,根據運算符優先順序結合,一步一步分析。

下面讓我們先從簡單的類型開始慢慢分析吧。

int p;

這是一個普通的整型變數

int p;

首先從P處開始,先與結合,所以說明P是一個指針。然後再與int結合,說明指針所指向的內容的類型為int型,所以P是一個返回整型數據的指針

int p[3];

首先從P處開始,先與[]結合,說明P是一個數組。然後與int結合,說明數組里的元素是整型的,所以P是一個由整型數據組成的數組。

int *p[3];

首先從P處開始,先與[]結合,因為其優先順序比高,所以P是一個數組。然後再與結合,說明數組里的元素是指針類型。之後再與int結合,說明指針所指向的內容的類型是整型的,所以P是一個由返回整型數據的指針所組成的數組。

int (*p)[3];

首先從P處開始,先與結合,說明P是一個指針。然後再與[]結合(與"()"這步可以忽略,只是為了改變優先順序),說明指針所指向的內容是一個數組。之後再與int結合,說明數組里的元素是整型的。所以P是一個指向由整型數據組成3個整數的指針。

int **p;

首先從P開始,先與結合,說明P是一個指針。然後再與結合,說明指針所指向的元素是指針。之後再與int結合,說明該指針所指向的元素是整型數據。由於二級指針以及更高級的指針極少用在復雜的類型中,所以後面更復雜的類型我們就不考慮多級指針了,最多隻考慮一級指針。

int p(int);

從P處起,先與()結合,說明P是一個函數。然後進入()里分析,說明該函數有一個整型變數的參數,之後再與外面的int結合,說明函數的返回值是一個整型數據。

int (*p)(int);

從P處開始,先與指針結合,說明P是一個指針。然後與()結合,說明指針指向的是一個函數。之後再與()里的int結合,說明函數有一個int型的參數,再與最外層的int結合,說明函數的返回類型是整型,所以P是一個指向有一個整型參數且返回類型為整型的函數的指針。

int (p(int))[3];

可以先跳過,不看這個類型,過於復雜。從P開始,先與()結合,說明P是一個函數。然後進入()裡面,與int結合,說明函數有一個整型變數參數。然後再與外面的結合,說明函數返回的是一個指針。之後到最外面一層,先與[]結合,說明返回的指針指向的是一個數組。接著再與結合,說明數組里的元素是指針,最後再與int結合,說明指針指向的內容是整型數據。所以P是一個參數為一個整數據且返回一個指向由整型指針變數組成的數組的指針變數的函數。

說到這里也就差不多了。理解了這幾個類型,其它的類型對我們來說也是小菜了。不過一般不會用太復雜的類型,那樣會大大減小程序的可讀性,請慎用。這上面的幾種類型已經足夠我們用了。

細說指針

指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。

要搞清一個指針需要搞清指針的四方面的內容:指針的類型、指針所指向的類型、指針的值或者叫指針所指向的內存區、指針本身所佔據的內存區。讓我們分別說明。

先聲明幾個指針放著做例子:

(1)int*ptr;

(2)char*ptr;

(3)int**ptr;

(4)int(*ptr)[3];

(5)int*(*ptr)[4];
指針的類型

從語法的角度看,小夥伴們只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。

讓我們看看上述例子中各個指針的類型:

(1)intptr;//指針的類型是int

(2)charptr;//指針的類型是char

(3)intptr;//指針的類型是int

(4)int(ptr)[3];//指針的類型是int()[3]

(5)int*(ptr)[4];//指針的類型是int(*)[4]

怎麼樣?找出指針的類型的方法是不是很簡單?

指針所指向的類型

當通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯器將把那片內存區里的內容當做什麼來看待。

從語法上看,小夥伴們只需把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針所指向的類型。

上述例子中各個指針所指向的類型:

(1)intptr; //指針所指向的類型是int

(2)char*ptr; //指針所指向的的類型是char*

(3)int*ptr; //指針所指向的的類型是int*

(4)int(*ptr)[3]; //指針所指向的的類型是int(*)[3]

(5)int*(*ptr)[4]; //指針所指向的的類型是int*(*)[4]

在指針的算術運算中,指針所指向的類型有很大的作用。

指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當小夥伴們對C 越來越熟悉時,就會發現,把與指針攪和在一起的"類型"這個概念分成"指針的類型"和"指針所指向的類型"兩個概念,是精通指針的關鍵點之一。

筆者看了不少書,發現有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書來前後矛盾,越看越糊塗。

指針的值

即指針所指向的內存區或地址。

指針的值是指針本身存儲的數值,這個值將被編譯器當作一個地址,而不是一個一般的數值。

在32位程序里,所有類型的指針的值都是一個32位整數,因為32位程序里內存地址全都是32位長。指針所指向的內存區就是從指針的值所代表的那個內存地址開始,長度為si zeof(指針所指向的類型)的一片內存區。

以後,我們說一個指針的值是XX,就相當於說該指針指向了以XX為首地址的一片內存區域;我們說一個指針指向了某塊內存區域,就相當於說該指針的值是這塊內存區域的首地址。

指針所指向的內存區和指針所指向的類型是兩個完全不同的概念。在例一中,指針所指向的類型已經有了,但由於指針還未初始化,所以它所指向的內存區是不存在的,或者說是無意義的。

以後,每遇到一個指針,都應該問問:這個指針的類型是什麼?指針指的類型是什麼?該指針指向了哪裡?

指針本身所佔據的內存區

指針本身佔了多大的內存?只要用函數sizeof(指針的類型)測一下就知道了。在32位平台里,指針本身占據4個位元組的長度。指針本身占據的內存這個概念在判斷一個指針表達式是否是左值時很有用。

0x02 函數

面向過程對象模塊的基本單位,以及對應各種組合,函數指針,指針函數

一個函數就是一個業務邏輯塊,是面向過程,單元模塊的最小單元,而且在函數的執行過程中,形參,實參如何交換數據,如何將數據傳遞出去,如何設計一個合理的函數,不單單是解決一個功能,還要看是不是能夠復用,避免重復造輪子。

函數指針和指針函數,表面是兩個字面意思的互換實際上含義截然不同,指針函數比較好理解,就是返回指針的一個函數,函數指針這個主要用在回調函數,很多人覺得函數都沒還搞明白,回調函數更暈菜了。其實可以通俗的理解指向函數的指針,本身是一個指針變數,只不過在初始化的時候指向了函數,這又回到了指針層面。沒搞明白指針再次深入的向前走特別難。

C語言的開發者們為後來的開發者做了一些省力氣的事情,他們編寫了大量代碼,將常見的基本功能都完成了,可以讓別人直接拿來使用。但是那麼多代碼,如何從中找到自己需要的呢?將所有代碼都拿來顯然是不太現實。

但是這些代碼,早已被早期的開發者們分門別類地放在了不同的文件中,並且每一段代碼都有唯一的名字。所以其實學習C語言並沒有那麼難,尤其是可以在動手鍛煉做項目中進行。使用代碼時,只要在對應的名字後面加上( )就可以。這樣的一段代碼就是函數,函數能夠獨立地完成某個功能,一次編寫完成後可以多次使用。

很多初學者可能都會把C語言中的函數和數學中的函數概念搞混淆。其實真相並沒有那麼復雜,C語言中的函數是有規律可循跡的,只要搞清楚了概念你會發現還挺有意思的。函數的英文名稱是 Function,對應翻譯過來的中文還有「功能」的意思。C語言中的函數也跟功能有著密切的關系。

我們來看一小段C語言代碼:

#include
int main()
puts("Hello World");
return 0;

把目光放在第4行代碼上,這行代碼會在顯示器上輸出「Hello World」。前面我們已經講過,puts 後面要帶(),字元串也要放在()中。

在C語言中,有的語句使用時不能帶括弧,有的語句必須帶括弧。帶括弧的就是函數(Function)。

C語言提供了很多功能,我們只需要一句簡單的代碼就能夠使用。但是這些功能的底層都比較復雜,通常是軟體和硬體的結合,還要要考慮很多細節和邊界,如果將這些功能都交給程序員去完成,那將極大增加程序員的學習成本,降低編程效率。

有了函數之後,C語言的編程效率就好像有了神器一樣,開發者們只需要隨時調用就可以了,像進程函數、操作函數、時間日期函數等都可以幫助我們直接實現C語言本身的功能。

C語言函數是可以重復使用的。

函數的一個明顯特徵就是使用時必須帶括弧(),必要的話,括弧中還可以包含待處理的數據。例如puts("果果小師弟")就使用了一段具有輸出功能的代碼,這段代碼的名字是 puts,"尚觀科技" 是要交給這段代碼處理的數據。使用函數在編程中有專業的稱呼,叫做函數調用(Function Call)。

如果函數需要處理多個數據,那麼它們之間使用逗號,分隔,例如:

pow(10, 2);

該函數用來求10的2次方。

好了,看到這里你有沒有覺得其實C語言函數還是比較有意思的,而且並沒有那麼復雜困難。以後再遇到菜鳥小白的時候,你一口一個C語言的函數,說不定就能當場引來無數膜拜的目光。

0x03 結構體、遞歸

很多在大學學習C語言的,很多課程都沒學完,結構體都沒學到,因為從章節的安排來看好像,結構體學習放在教材的後半部分了,弄得很多學生覺得結構體不重要,如果只是應付學校的考試,或者就是為了混個畢業證,的確學的意義不大。

如果想從事編程這個行業,對這個概念還不了解,基本上無法構造數據模型,沒有一個業務體是完全使用原生數據類型來完成的,很多高手在設計數據模型的時候,一般先把頭文件中的結構體數據整理出來。然後設計好功能函數的參數,以及名字,然後才真正開始寫c源碼

如果從節省空間考慮結構體裡面的數據放的順序不一樣在內存中佔用的空間也不一樣,結構體與結構體之間賦值,結構體存在指針那麼賦值要特別注意,需要進行深度的賦值。

遞歸一般用於從頭到位統計或者羅列一些數據,在使用的時候很多初學者都覺得別扭,怎麼還能自己調用自己?而且在使用的時候,一定設置好跳出的條件,不然無休止的進行下去,真就成無線死循環了。

對於結構體方面的知識,可以參見此前推送的文章《C語言結構體(struct)最全的講解(萬字干貨)》。具體也可以參見大佬的經驗:

相信大家對於結構體都不陌生。在此,分享出本人對C語言結構體的研究和學習的總結。如果你發現這個總結中有你以前所未掌握的,那本文也算是有點價值了。當然,水平有限,若發現不足之處懇請指出。代碼文件test.c我放在下面。在此,我會圍繞以下2個問題來分析和應用C語言結構體:


  • C語言中的結構體有何作用

  • 結構體成員變數內存對齊有何講究(重點)

  • 對於一些概念的說明,我就不把C語言教材上的定義搬上來。我們坐下來慢慢聊吧。

    1. 結構體有何作用

    三個月前,教研室里一個學長在華為南京研究院的面試中就遇到這個問題。當然,這只是面試中最基礎的問題。如果問你你怎麼回答?我的理解是這樣的,C語言中結構體至少有以下三個作用:

    (1) 有機地組織了對象的屬性。

    比如,在STM32的RTC開發中,我們需要數據來表示日期和時間,這些數據通常是年、月、日、時、分、秒。如果我們不用結構體,那麼就需要定義6個變數來表示。這樣的話程序的數據結構是鬆散的,我們的數據結構最好是「高內聚,低耦合」的。所以,用一個結構體來表示更好,無論是從程序的可讀性還是可移植性還是可維護性皆是:

    typedef struct //公歷日期和時間結構體
    vu16 year;
    vu8 month;
    vu8 date;
    vu8 hour;
    vu8 min;
    vu8 sec;
    }_calendar_obj;
    _calendar_obj calendar; //定義結構體變數

    (2) 以修改結構體成員變數的方法代替了函數(入口參數)的重新定義。

    如果說結構體有機地組織了對象的屬性表示結構體「中看」,那麼以修改結構體成員變數的方法代替函數(入口參數)的重新定義就表示了結構體「中用」。繼續以上面的結構體為例子,我們來分析。假如現在我有如下函數來顯示日期和時間:

    void DsipDateTime( _calendar_obj DateTimeVal)

    那麼我們只要將一個_calendar_obj這個結構體類型的變數作為實參調用DsipDateTime()即可,DsipDateTime()通過DateTimeVal的成變數來實現內容的顯示。如果不用結構體,我們很可能需要寫這樣的一個函數:

    void DsipDateTime( vu16 year,vu8 month,vu8 date,vu8 hour,vu8 min,vu8 sec)

    顯然這樣的形參很不可觀,數據結構管理起來也很繁瑣。如果某個函數的返回值得是一個表示日期和時間的數據,那就更復雜了。這只是一方面。

    另一方面,如果用戶需要表示日期和時間的數據中還要包含星期(周),這個時候,如果之前沒有用機構體,那麼應該在DsipDateTime()函數中在增加一個形參vu8 week:

    void DsipDateTime( vu16 year,vu8 month,vu8 date,vu8 week,vu8 hour,vu8 min,vu8 sec)

    可見這種方法來傳遞參數非常繁瑣。所以以結構體作為函數的入口參數的好處之一就是函數的聲明void DsipDateTime(_calendar_obj DateTimeVal)不需要改變,只需要增加結構體的成員變數,然後在函數的內部實現上對calendar.week作相應的處理即可。這樣,在程序的修改、維護方面作用顯著。

    typedef struct //公歷日期和時間結構體
    vu16 year;
    vu8 month;
    vu8 date;
    vu8 week;
    vu8 hour;
    vu8 min;
    vu8 sec;
    }_calendar_obj;
    _calendar_obj calendar; //定義結構體變數

    (3) 結構體的內存對齊原則可以提高CPU對內存的訪問速度(以空間換取時間)。

    並且,結構體成員變數的地址可以根據基地址(以偏移量offset)計算。我們先來看看下面的一段簡單的程序,對於此程序的分析會在第2部分結構體成員變數內存對齊中詳細說明。

    #include

    int main()
    {
    struct //聲明結構體char_short_long
    {
    char c;
    short s;
    long l;
    }char_short_long;

    struct //聲明結構體long_short_char
    {
    long l;
    short s;
    char c;
    }long_short_char;

    struct //聲明結構體char_long_short
    {
    char c;
    long l;
    short s;
    }char_long_short;

    printf(" ");
    printf(" Size of char = %d bytes ",sizeof(char));
    printf(" Size of shrot = %d bytes ",sizeof(short));
    printf(" Size of long = %d bytes ",sizeof(long));
    printf(" "); //char_short_long
    printf(" Size of char_short_long = %d bytes ",sizeof(char_short_long));
    printf(" Addr of char_short_long.c = 0x%p (10進制:%d) ",&char_short_long.c,&char_short_long.c);
    printf(" Addr of char_short_long.s = 0x%p (10進制:%d) ",&char_short_long.s,&char_short_long.s);
    printf(" Addr of char_short_long.l = 0x%p (10進制:%d) ",&char_short_long.l,&char_short_long.l);
    printf(" ");

    printf(" "); //long_short_char
    printf(" Size of long_short_char = %d bytes ",sizeof(long_short_char));
    printf(" Addr of long_short_char.l = 0x%p (10進制:%d) ",&long_short_char.l,&long_short_char.l);
    printf(" Addr of long_short_char.s = 0x%p (10進制:%d) ",&long_short_char.s,&long_short_char.s);
    printf(" Addr of long_short_char.c = 0x%p (10進制:%d) ",&long_short_char.c,&long_short_char.c);
    printf(" ");

    printf(" "); //char_long_short
    printf(" Size of char_long_short = %d bytes ",sizeof(char_long_short));
    printf(" Addr of char_long_short.c = 0x%p (10進制:%d) ",&char_long_short.c,&char_long_short.c);
    printf(" Addr of char_long_short.l = 0x%p (10進制:%d) ",&char_long_short.l,&char_long_short.l);
    printf(" Addr of char_long_short.s = 0x%p (10進制:%d) ",&char_long_short.s,&char_long_short.s);
    printf(" ");
    return 0;
    }

    程序的運行結果如下(注意:括弧內的數據是成員變數的地址的十進制形式):

    首先,我們來分析一下上面程序的運行結果。前三行說明在我的程序中,char型佔1個位元組,short型佔2個位元組,long型佔4個位元組。char_short_long、long_short_char和char_long_short是三個結構體成員相同但是成員變數的排列順序不同。並且從程序的運行結果來看,

    Size of char_short_long = 8 bytes
    Size of long_short_char = 8 bytes
    Size of char_long_short = 12 bytes //比前兩種情況大4 byte !

    並且,還要注意到,1 byte (char)+ 2 byte (short)+ 4 byte (long) = 7 byte,而不是8 byte。

    所以,結構體成員變數的放置順序影響著結構體所佔的內存空間的大小。一個結構體變數所佔內存的大小不一定等於其成員變數所佔空間之和。如果一個用戶程序或者操作系統(比如uC/OS-II)中存在大量結構體變數時,這種內存佔用必須要進行優化,也就是說,結構體內部成員變數的排列次序是有講究的。

    結構體成員變數到底是如何存放的呢?

    在這里,我就不賣關子了,直接給出如下結論,在沒有#pragma pack宏的情況下:

  • 原則1 結構(struct或聯合union)的數據成員,第一個數據成員放在offset為0的地方,以後每個數據成員存儲的起始位置要從該成員大小的整數倍開始(比如int在32位機為4位元組,則要從4的整數倍地址開始存儲)。

  • 原則2 結構體的總大小,也就是sizeof的結果,必須是其內部最大成員的整數倍,不足的要補齊。

  • 原則3 結構體作為成員時,結構體成員要從其內部最大元素大小的整數倍地址開始存儲。(struct a里存有struct b,b里有char,int,double等元素時,那麼b應該從8的整數倍地址處開始存儲,因為sizeof(double) = 8 bytes)

  • 這里,我們結合上面的程序來分析(暫時不討論原則3)。

    先看看char_short_long和long_short_char這兩個結構體,從它們的成員變數的地址可以看出來,這兩個結構體符合原則1和原則2。注意,在 char_short_long的成員變數的地址中,char_short_long.s的地址是1244994,也就是說,1244993是「空的」,只是被「佔位」了!


    成員變數 成員變數十六進制地址 成員變數十進制地址 char_long_short.c 0x0012FF2C 1244972 char_long_short.l 0x0012FF30 1244976 char_long_short.s 0x0012FF34 1244980

    可見,其內存分布圖如下,共12 bytes:

    首先,1244972能被1整除,所以char_long_short.c放在1244972處沒有問題(其實,就char型成員變數自身來說,其放在任何地址單元處都沒有問題),根據原則1,在之後的1244973~1244975中都沒有能被4(因為sizeof(long)=4bytes)整除的,1244976能被4整除,所以char_long_short.l應該放在1244976處,那麼同理,最後一個.s(sizeof(short)=2 bytes)是應該放在1244980處。

    是不是這樣就結束了?不是,還有原則2。根據原則2的要求,char_long_short這個結構體所佔的空間大小應該是其占內存空間最大的成員變數的大小的整數倍。如果我們到此就結束了,那麼char_long_short所佔的內存空間是1244972~1244981共計10bytes,不符合原則2,所以,必須在最後補齊2個 bytes(1244982~1244983)。

    至此,一個結構體的內存布局完成了。

    下面我們按照上述原則,來驗證這樣的分析是不是正確。按上面的分析,地址單元1244973、1244974、1244975以及1244982、1244983都是空的(至少char_long_short未用到,只是「佔位」了)。如果我們的分析是正確的,那麼,定義這樣一個結構體,其所佔內存也應該是12 bytes:

    struct //聲明結構體char_long_short_new
    char c;
    char add1; //補齊空間
    char add2; //補齊空間
    char add3; //補齊空間
    long l;
    short s;
    char add4; //補齊空間
    char add5; //補齊空間
    }char_long_short_new;

    可見,我們的分析是正確的。至於原則3,大家可以自己編程驗證,這里就不再討論了。

    所以,無論你是在VC6.0還是Keil C51,還是Keil MDK中,當你需要定義一個結構體時,只要你稍微留心結構體成員變數內存對齊這一現象,就可以在很大程度上節約MCU的RAM。這一點不僅僅應用於實際編程,在很多大型公司,比如IBM、微軟、網路、華為的筆試和面試中,也是常見的。

    這三大塊硬骨頭是學習C語言的絆腳石,下功夫拿掉基本上C語言的大動脈就打通了,那麼再去學習別的內容就相對比較簡單了。編程學習過程中越是痛苦的時候,學到的東西就會越多,克服過去就會自己的技能,放棄了前面的付出的時間都將清零。越是難學的語言在入門之後,在入門之後越覺得過癮,而且還容易上癮。你上癮了沒?還是放棄了?

    --- EOF --

『柒』 高分跪求 華為 C語言面試題

我現在學啊,給你份考題,具體是不是你需要的,還要你自己看嘍!(是去年的我們的考題)答案告訴你嘍!
(1)在信息時代,計算機的應用非常廣泛,主要有如下幾大領域:科學計算、信息處理、過程式控制制、計算機輔助工程、家庭生活和
A)軍事應用
B)現代教育
C)網路服務
D)以上都不是
答案:B
(2)在ENIAC的研製過程中,由美籍匈牙利數學家總結並提出了非常重要的改進意見,他是
A)馮•諾依曼
B)阿蘭•圖靈
C)古德•摩爾
D)以上都不是
答案:A
(3)十進制數75用二進制數表示是
A)1100001
B)1101001
C)0011001
D)1001011
答案:D
(4)一個非零無符號二進制整數後加兩個零形成一個新的數,新數的值是原數值的
A)4倍
B)二倍
C)4分之一
D)二分之一
答案:A
(5)與十進制數291等值的十六進制數為
A)123
B)213
C)231
D)132
答案:A
(6)下列字元中,其ASCII碼值最小的是
A)$
B)J
C)b
D)T
答案:A
(7)下列4條敘述中,有錯誤的一條是
A)通過自動(如掃描)或人工(如擊鍵、語音)方法將漢字信息(圖形、編碼或語音)轉換為計算機內部表示漢字的機內碼並存儲起來的過程,稱為漢字輸入
B)將計算機內存儲的漢字內碼恢復成漢字並在計算機外部設備上顯示或通過某種介質保存下來的過程,稱為漢字輸出
C)將漢字信息處理軟體固化,構成一塊插件板,這種插件板稱為漢卡
D)漢字國標碼就是漢字拼音碼
答案:D
(8)某漢字的國際碼是1112H,它的機內碼是
A)3132H
B)5152H
C)8182H
D)9192H
答案:D
(9)以下關於高級語言的描述中,正確的是
A)高級語言誕生於20世紀60年代中期
B)高級語言的"高級"是指所設計的程序非常高級
C)C++語言採用的是"編譯"的方法
D)高級語言可以直接被計算機執行
答案:C
(10)早期的BASIC語言採用的哪種方法將源程序轉換成機器語言?
A)匯編
B)解釋
C)編譯
D)編輯
答案:B
(11)計算機軟體系統包括
A)系統軟體和應用軟體
B)編輯軟體和應用軟體
C)資料庫軟體和工具軟體
D)程序和數據
答案:A
(12)WPS 2000,Word 97等字處理軟體屬於
A)管理軟體
B)網路軟體
C)應用軟體
D)系統軟體
答案:C
(13)使用Pentium Ⅲ500的微型計算機,其CPU的輸入時鍾頻率是
A)500kHz
B)500MHz
C)250kHz
D)250MHz
答案:B
(14)靜態RAM的特點是
A)在不斷電的條件下,信息在靜態RAM中保持不變,故而不必定期刷新就能永久保存信息
B)在不斷電的條件下,信息在靜態RAM中不能永久無條件保持,必須定期刷新才不致丟失信息
C)在靜態RAM中的信息只能讀不能寫
D)在靜態RAM中的信息斷電後也不會丟失
答案:A
(15)CPU的主要組成:運算器和
A)控制器
B)存儲器
C)寄存器
D)編輯器
答案:A
(16)高速緩沖存儲器是為了解決
A)內存與輔助存儲器之間速度不匹配問題
B)CPU與輔助存儲器之間速度不匹配問題
C)CPU與內存儲器之間速度不匹配問題
D)主機與外設之間速度不匹配問題
答案:C
(17)以下哪一個是點陣列印機?
A)激光列印機
B)噴墨列印機
C)靜電列印機
D)針式列印機
答案:D
(18)為了防止計算機病毒的傳染,應該做到
A)不要拷貝來歷不明的軟盤上的程序
B)對長期不用的軟盤要經常格式化
C)對軟盤上的文件要經常重新拷貝
D)不要把無病毒的軟盤與來歷不明的軟盤放在一起
答案:A
(19)下列關於計算機的敘述中,不正確的一條是
A)世界上第一台計算機誕生於美國,主要元件是晶體管
B)我國自主生產的巨型機代表是"銀河"
C)筆記本電腦也是一種微型計算機
D)計算機的字長一般都是8的整數倍
答案:A
(20)下列關於計算機的敘述中,不正確的一條是
A)"裸機"就是沒有機箱的計算機
B)所有計算機都是由硬體和軟體組成的
C)計算機的存儲容量越大,處理能力就越強
D)各種高級語言的翻譯程序都屬於系統軟體
答案:A

『捌』 華為C語言面試題求解

第一行,定義數組arr,元素共八個
第二行,定義指針p指向arr數組
此時的*p還是等於arr數組的第0個元素,也就是1
第三行,p++里的++是最後才運算,所以先執行*p+=123,也就是arr的第0個元素被賦值為123
此時arr變成{123,2,3,4,5,6,7,8} ,然後是p++,此時*p已經是等於arr的第1個元素了,也就是2
第四行,在執行printf時,括弧里的參數是從右往左的順序進行讀取的,也就是說先執行 *(++p),也就是p先加一再指針,指向的是arr第2個元素3,然後在執行*p,還是3
最後顯示的內容就是
3,3
press any key to continue

『玖』 跪求一下c語言題目答案(我是真的沒有財富值了嗚嗚。。。。)

1、(T)這是個二維整形數組,列長度是2,行長度是2,數組從0開始計數,初始化的時候沒賦值的系統自動賦值為0
2、(F)這是定義一個函數指針。每個函數名都是這個函數的首地址。int (*ptr)();表示的是ptr指針指向一個返回值為整型的函數,所以它是一個函數指針。
3、(F)當指針指向的不是同一類型的數據類型時,不能進行比較。ps:當是數組、鏈表的時候有很多關於指針的比較。
4、(F)switch語句中case常量必須是整型或者是字元型。
5、(T)這是用宏定義定義print()用來輸出the no, 」#x」,is
二、1.6,4,4,4 2.hello 3.8,8
三、
1、int strcmp(char *source,char *dest)/*函數說明*/
{
int m,n,flag;
m=strlen(source);/*測個數組的長度*/
n=strlen(dest);
if(m!=n)
flag=-1;
else
{
int i=m;
int j,flag;
for(j=0;j<i;j++)
{
if(souce[j]!=dest[j])flag=-1;break;
}
}
if(j==i)flag=0;
return flag;
}
2、int fun(char *p)
{
int i,j,n;
if(p!=NULL)/*判斷p是否為一指針*/
{
j=strlen(p)-1;
for(i=0;i<j;i++,j--)/*此循環是判斷是否為迴文*/
{
if(p[i]!=p[j])n=0;break;
}
if(i>=j)n=1;
}
else n=-1;/*如果p是空指針返回-1*/
return n;
}
終於完了····表達能力不是很好····希望你能看懂····

『拾』 (對於華為)投簡歷後通知筆試的概率是多大

投了簡歷一般都會通知你去筆試。筆試的通過率很高,然後才是第一次面試,後面還有好幾輪,面試也會問到你專業知識,可能要你現場操作。相關職位還有上機考試。最後有個集體面試,分組討論,看你的協作能力如何。

不知道你是什麼專業的,理科專業建議把基礎復習一下,比如計算機主要是C語言、數據結構、演算法設計、操作系統等。不過考的都是比較偏但又很基礎的題,所以平時積累多的話會輕松很多。

熱點內容
梵蒂岡頂級時裝ftp 發布:2025-01-28 03:03:36 瀏覽:694
手游腳本有前途嗎 發布:2025-01-28 02:46:55 瀏覽:378
抓包編程 發布:2025-01-28 02:42:41 瀏覽:929
安卓平板上怎麼設置熱點 發布:2025-01-28 02:36:33 瀏覽:717
如何在手機上壓縮圖片 發布:2025-01-28 02:34:09 瀏覽:989
伺服器ip掛上公網 發布:2025-01-28 02:31:15 瀏覽:978
吃雞配置需要什麼條件 發布:2025-01-28 02:26:15 瀏覽:9
58怎麼上傳簡歷 發布:2025-01-28 02:17:45 瀏覽:38
限制訪問的ip 發布:2025-01-28 02:16:16 瀏覽:238
火車上車廂密碼是多少 發布:2025-01-28 02:16:13 瀏覽:210