201*華為面試心得點滴總結大全
華為面試點滴總結這段時間所有的事情告一段落,正好有點時間寫些最近自己面試心得,包括昨天剛結束的華為面試。自己不常去寫東西的,更不會做一些無用的感慨,以前(包括現(xiàn)在)我一直覺得詩人就是懦弱的抒情漢,如同任何一個動物都會有發(fā)情期,我從不認為詩人會對人類歷史的科學進步有任何的貢獻可言。但令人諷刺的是,你會發(fā)現(xiàn)你身邊會有很多詩人,從qq空間再到微博微信可略見一斑(無非都是想向他人證明自己存在感,更多的都是無病呻吟),當然我認同這是每個人的權利,而我在此只是表達自己態(tài)度而已,尊重但不提倡。所以有什么不同意見,我會悉心接受,但暫且姑妄聽之。Okay,言歸正傳,網(wǎng)上有很多大牛都會分享一些自己的面試心得,自己算不上大牛,小牛都不算的,并非謙虛,實則誠實,也未曾想過嘩眾取寵,記得《Prisonbreak》里面MichaelScofield剛進監(jiān)獄第一天被獄友戲稱為fish,自己大概也如此吧,只不過自認為是只咸魚,期待有咸魚翻身當家作主的那么一天。希望有緣人看到,或多或少能夠得到些許幫助,便是我的初衷。
最初是聽同學說的華為最近在招聘實習生,華為對于學it的并不陌生,自己也滿懷憧憬,因之前未在官網(wǎng)注冊所以也沒收到參加機試的短信邀請,便和同學一同前往,心想著應該會給機試機會吧,去了之后,一個HR說必須注冊才能參加考試,只能回去注冊下午再來,真是悲哀,大熱天的從中南鐵道校區(qū)到中南本部校區(qū)并非易事,有始有終,下午就去了,一批一批的進去上機考試,一道編程題,時間為30分鐘,可以選擇編程語言(C,C++,JAVA)都可以,自己對java比較熟悉(C++之前學的,忘了很多),便選擇了JAVA的試題,題目是,請輸入一個任意長度的17進制的字符串(如GG,12A),然后轉(zhuǎn)化成10進制的輸出。題目并不是很難,但老實說,你要是一開始思路方向找錯了,那就完了,因為只有30min,所以,本人認為還是有一定難度的。下面是我寫的程序,
和我不同批次的同學抽的題目是不同的,他大概給我說了一下題目,我回來之后也試圖解答了一下,題目是一個加密算法,輸入四位整數(shù),每位數(shù)字加9并與10取余,得出的結果讓個位與百位相替換,十位與千位相替換,并輸出。我覺得我的方法不是很好,但能實現(xiàn),也未去細細研究優(yōu)化,若有大神可提出更好的解決方法。程序如下:
機試完后就回學校了,當天晚上收到短信邀請,說是第二天下午3點30參加在湖南大學的面試。第二天,自己提前半個多小時就到了湖大的一個大廳里,百十來號人吧,進去之后讓拿出身份證(驗明正身),然后交了簡歷,就去等待區(qū),8個HR,每個HR對一個面試者,第一輪是技術面試,第二輪是綜合面試,技術面試不通過直接pass,技術面試每人大概40min左右,一對一,看上去挺正式的,其實也確實有料。過了以后,考官念到我的名字,屁顛屁顛的就跟著他過去了,其實之前參加這種類似的面試筆試,可是如今還是有點小緊張。先簡單的自我介紹了一下,然后就直入主題,問問做過什么開發(fā)之類的,自己本人做過學生管理系統(tǒng)(C/S架構)和企業(yè)郵箱登錄系統(tǒng)(B/S)架構,雖然程序并不大,但都是自己完成的,然后HR問的比較深入,問具體怎么實現(xiàn)的,用到那些技術,自己這些還真不是虛的,所以沒難到我(本人建議,簡歷上所寫的項目經(jīng)驗千萬別吹噓,一定實打?qū)嵉,做學問,不可有半點虛假,否則,你會死的很難堪的),又問了一些數(shù)據(jù)庫之類的東西,主要是ORACLE的PL/SQL編程,問我是否編寫過過程,函數(shù),觸發(fā)器等,幸好之前很深入的自學過,所以說了一些這部分內(nèi)容,又問我自己編寫的過程比較得意的是實現(xiàn)了什么功能,想想就用PL/SQL編寫過分頁技術,便如實回答。還問了一些自己過去編寫的程序中比較得意的是什么項目或程序。之前看著視頻編寫過坦克大戰(zhàn),他又問我坦克對象的接口都有哪些,坐標,坦克方向等等。最后,給了我一張紙和筆,讓我編寫一個strcpy函數(shù)。這個估計大家都會,蠻簡單的,便不再列出程序。寫完之后,HR說挺好的,讓我去綜合面試等待區(qū)。這就是第一輪技術面試。
過了2個小時,因為還有人在一面,HR說,其他人先去吃飯,吃完發(fā)接著回來第二輪面試,唉這是要打持久戰(zhàn)了,買了瓶水吃了些餅干就過來等著了。大概到晚上8點時,叫到我的名字開始第二輪綜合面試,這次是通過技術面試的人,六人為一組開始群面,是一個項目經(jīng)理吧,我也不確定。首先讓每個人輪流用中文自我介紹。并問了一些基本情況。面試官看的挺和善的,總是面帶微笑,但卻往往是這種人殺人不見血,如果你被pass了,你都不知道怎么死的,呵呵,這或許才是真正的高手,殺人于無形之中。然后又讓我們進行英文自我介紹,并用英文介紹一下家庭情況,自己英語還不是很差,感覺還蠻ok的,然后又問了問五年之后自己希望的生活狀態(tài)以及自己對未來工作的規(guī)劃,以及自己最大的夢想是什么,還問我愿不愿意去歐洲工作(當然愿意咯嘿嘿),綜合面試也持續(xù)了大概30分鐘吧。然后出來之后等結果,面試完后都感覺不錯,過了一會結果出來了,六個人刷了三個人(那三個人一臉茫然),自己僥幸通過。
寫到此,也差不多了,自己也就是想到哪就寫到哪,寫的不好,更談不上文筆,但真實,童叟無欺,呵呵,希望能或多或少幫助到后來人面試華為,自己感覺華為真不是吹的,很公平也很正規(guī),okay,就這樣吧,寫的不好,希望更多大神補充更正,共同進步。
201*/6/1622:33記
擴展閱讀:【華為系列】華為面試總結
這篇文章是寫給201*屆的畢業(yè)生的,我想我這些日子的經(jīng)歷應該能給201*屆的師弟和師妹們將來的校園招聘提供點幫助。一、準備階段:
在華為面試之前,我把《軟件設計師教程》大概的復習了一遍,時間實在太緊迫了,有些概念我也只是很粗糙地掠過去。10號下午還到圖書館借了一本《程序員面試攻略》,11號下午就差不多把那本書大概地啃完。二、筆試:
11號,收到短信通知當晚7:00在E棟筆試(只要是注冊了電子簡歷的同學都有資格),考試種類分兩種:硬件和軟件,共四類題:填空,選擇,改錯,程序設計;旧隙际且恍〤/C++語言題,數(shù)據(jù)結構的樹的前序、中序及后序排列,計算機網(wǎng)絡里的IP報文中的TTL(Timetolive),數(shù)據(jù)庫的操作等等;程序題有兩道,一道題是關于數(shù)據(jù)結構的,另外有一道是“字符串A插入字符串B中”。雖然都基礎,但題量太大,考試時間太短。大家都在喊沒信心。三、面試:
第二天就有人接到通知去面試了,我們班一位同學去了,他很牛B,從第一輪到第四輪一直很順利。我是第三天才和我們寢室另外的一位同學才接到面試通知的(不過我聽說我們這一批接到通知的筆試分數(shù)普遍都很高),當然在前三天的等待時間里,我心情很郁悶,我還以為我沒有慧通的面試資格了,所以一直在玩,希望有時真的是期而不遇,遇而不期阿。(其實筆試這一輪刷的人不多,大家以后沒必要像我這樣子提前就爆棄了)
我下午4:00準時到凱萊大酒店,一進去就感覺一股熱氣,大廳里也許是因為太熱或者太緊張的緣故,每個人的臉都很紅,很紅。大概等了半個小時,我的心也跳得好厲害,我就到門口舒緩下情緒,很快一位帥哥就領我去第一輪面試了,他問我會什么,**,這問題該怎么答阿,然后我說我是電子科學與技術專業(yè)的,計算機基本上是靠自學的,大概他體會到自學的不易,他給我出了5道編程題,雖然很多,但基本上都不很難。(我一同專業(yè)的哥們雖然只有一道題,但卻是用C語言編桌球的運動軌跡,媽啊,對于C語言的圖像功能我都沒接觸到過阿),我的題目是:
1、1到100之間的所有素數(shù)之和;2、隊列的實現(xiàn);
3、選首領(有一群人圍在一圈,從第一個人開始數(shù)1、2、3,數(shù)到3者退出,用循環(huán)鏈表實現(xiàn))
4、字符串匹配問題(intcountABC(*s)輸入任何一串字符串,計算機其中有連續(xù)ABC子字符串的個數(shù))5、用數(shù)組存儲超大數(shù)的問題。
6、詢問我操作系統(tǒng)的進程和線程的區(qū)別
幸好這些題目在筆試前我就都已經(jīng)見過了,雖然第四個題目,面試老師說我執(zhí)行效率不高,但可以過得去了。哈哈,他直接通知我去進行第二輪面試了。
第二輪是資格面試,沒多大問題,就聊聊家鄉(xiāng),聊聊自己的情況,這一關只要說話有分寸,一般都可以通過。第二輪面試完,就快到了晚飯的時間了,晚飯當然是慧通免費提供的,晚飯一過后,我就被一被稱作是部長的面試官叫了進去,這一關一進去他直接拿了我《軟件設計書》提問我:1、ping命令使用的是哪種報文?2、OSI分哪幾個層,IP是在哪個層?3、哈希表的問題
4、為什么要采取二叉樹這種數(shù)據(jù)結構?(折半查找)
5、兩臺計算機中的進程怎么互相通信,我說通過IP唄,他說除了IP呢?我卡住了,他說你聽說過五元組嗎?我只好老老實實的回答說不知道,然后他在那里給我解釋一通,但我還是沒搞明白,回來翻潘愛民老師的《計算機網(wǎng)絡書》也沒有。這一輪雖然第5個問題我有點卡殼,但老師說我畢竟是自學,還表揚了我,說我已經(jīng)很不錯了。面試完已經(jīng)好晚了,華為的MM通知我第二天繼續(xù)去進行第四輪的面試。
第二天,我按時到了考試地點,這一天,明顯感覺氣氛沒有第一天的好,垂頭喪氣的好多。很快就通知我去面試了,這一輪面試的老師明顯態(tài)度比前幾輪差多了,問的問題都有點讓我透不過氣來,但終于挺了過去,最后他直接點到桌子上的一個題目:voidmain(){
char*p;*p=-130;
printf("%d",*p);}
正確的答案是126,原因:-130在計算機里面存儲形式是
11111111-01111110(取反碼的形式),因為C里面的CHAR是8位的,所以,最高位1去掉,剩下01111110。四、些許體會
面試,就是面試,不是學習,考試。你現(xiàn)在會多少東西固然重要,但更重要的是你得
讓面試官知道,所以面試時把你的知識表達出來是最重要的。切記!面試表達是關鍵,你
可以先把自己熟悉的整理一下,不至于面試的時候磕磕碰碰的。面試,好比下棋。把握局
面,掌握主動權是關鍵。一旦你把面試官成功引入你的領地,讓他把注意力關注在你熟悉
的領域,無暇自顧,那就盡情發(fā)揮吧,已經(jīng)成功了一大半。所以從面試官拿到你的簡歷起
,就主動出擊,別給他機會.
另外,在大肆開學初,一定要把各位的專業(yè)課翻出來看看,考軟件的特別要多多看看基礎的C語言,想找到好工作一定要從骨子里面重視起來。
=====================================
篇中提及的問題的解答:
1、1到100之間的所有素數(shù)之和;inti=1;intj=0;
boolchange=1;intsum=0;
for(i=1;iif(j==0)num++;}
}5、用數(shù)組存儲超大數(shù)的問題。這是數(shù)組得一個應用,思想是我們定義一個數(shù)組,讓每一個元素得值都是從后到前以十進制得方式存貯得,如過到了9下一位就要讓前一個元素進位為1,9變?yōu)?同時。
下面這個例子是要求一個40位的n!的值intdata[40];//存儲40位書的整數(shù)數(shù)組intdigit;//數(shù)據(jù)位數(shù)變量inti,j,r,k;
intn;//用戶輸入值
for(i=1;i}
6、詢問我操作系統(tǒng)的進程和線程的區(qū)別
進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應用的并發(fā)性。進程和線程的區(qū)別,簡而言之:一個程序至少有一個進程,一個進程至少有一個線程.線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高。
另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率。
=========================================
1、ping命令使用的是哪種報文?
PING命令使用ICMP的哪種code類型:Echoreply(回顯請求報文)
2、OSI分哪幾個層,IP是在哪個層?
osi:物理層、鏈路層、網(wǎng)絡層、傳輸層、會話層、管理層、應用層。tcp/ip:主機網(wǎng)絡層、互聯(lián)層、傳輸層、應用層。ip是在互聯(lián)層3、哈希表的問題
主要用于快速查找檢索方面
4、為什么要采取二叉樹這種數(shù)據(jù)結構?他折半查找,可以減少查找比較次數(shù)5、五元組
二元組的定義:三元組的定義:
五元組的定義:
V是值的集合,O是操作的集合,G是構成名字的文法,M是存儲的集合,S是從G能構成的名字幾個到M的映射.
iP報文中的五元組(即源IP地址,源端口號,目的IP地址,目的端口,協(xié)議)。半相關
綜上所述,網(wǎng)絡中用一個三元組可以在全局唯一標志一個進程:(協(xié)議,本地地址,本地端口號)
這樣一個三元組,叫做一個半相關(half-association),它指定連接的每半部分。
全相關
一個完整的網(wǎng)間進程通信需要由兩個進程組成,并且只能使用同一種高層協(xié)議。也就是說,不可能通信的一端用TCP協(xié)議,而另一端用UDP協(xié)議。因此一個完整的網(wǎng)間通信需要一個五元組來標識:
(協(xié)議,本地地址,本地端口號,遠地地址,遠地端口號)
這樣一個五元組,叫做一個相關(association),即兩個協(xié)議相同的半相關才能組合成一個合適的相關,或完全指定組成一連接。
1任意入的字符串行判是否相等.不使用庫函數(shù),編寫函數(shù)intstrcmp(char*source,char*dest)相等返回0,不等返回-1;
2、寫一函數(shù)intfun(char*p)判斷一字符串是否為回文,是返回1,不是返回0,出錯返回
-11、局部變量能否和全局變量重名?
答:能,局部會屏蔽全局。要用全局變量,需要使用"::"
局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內(nèi)可以定義多個同名的局部變量,比如在兩個循環(huán)體內(nèi)都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環(huán)體內(nèi)。
2、如何引用一個已經(jīng)定義過的全局變量?
答:extern
可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。
3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?
答:可以,在不同的C文件中以static形式來聲明同名全局變量。
可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯
4、語句for(;1;)有什么問題?它是什么意思?
答:和while(1)相同。
5、dowhile和whiledo有什么區(qū)別?
答:前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)
6、請寫出下列代碼的輸出內(nèi)容
#includemain(){
inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);return0;}
答:10,12,120
7、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?
全局變量(外部變量)的說明之前再冠以static就構成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源文件內(nèi)有效,在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。
從以上分析可以看出,把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。
static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當前源文件中使用的函數(shù)應該說明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數(shù),應該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件
static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結果值;
static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝
8、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū))中,動態(tài)申請數(shù)據(jù)存在于(堆)中。
9、設有以下說明和定義:typedefunion{longi;intk[5];charc;}DATE;structdata{intcat;DATEcow;doubledog;}too;DATEmax;
則語句printf("%d",sizeof(structdate)+sizeof(max));的執(zhí)行結果是:___52____
答:DATE是一個union,變量公用空間.里面最大的變量類型是int[5],占用20個字節(jié).所以它的大小是20
data是一個struct,每個變量分開占用空間.依次為int4+DATE20+double8=32.所以結果是20+32=52.
當然...在某些16位編輯器下,int可能是2字節(jié),那么結果是int2+DATE10+double8=20
10、隊列和棧有什么區(qū)別?
隊列先進先出,棧后進先出
11、寫出下列代碼的輸出內(nèi)容
#includeintinc(inta){
return(++a);}
intmulti(int*a,int*b,int*c){
return(*c=*a**b);}
typedefint(FUNC1)(intin);
typedefint(FUNC2)(int*,int*,int*);
voidshow(FUNC2fun,intarg1,int*arg2){
INCp=&inc;
inttemp=p(arg1);
fun(&temp,&arg1,arg2);printf("%d\\n",*arg2);}
main(){
inta;
show(multi,10,&a);
return0;}答:110
12、請找出下面代碼中的所以錯誤
說明:以下代碼是把一個字符串倒序,如“abcd”倒序后變?yōu)椤癲cba”
1、#include"string.h"2、main()3、{
4、char*src="hello,world";5、char*dest=NULL;6、intlen=strlen(src);
7、dest=(char*)malloc(len);8、char*d=dest;9、char*s=src[len];10、while(len--!=0)11、d++=s--;
12、printf("%s",dest);13、return0;14、}
答:方法1:
intmain(){
char*src="hello,world";intlen=strlen(src);
char*dest=(char*)malloc(len+1);//要為\\0分配一個空間char*d=dest;
char*s=&src[len-1];//指向最后一個字符while(len--!=0)*d++=*s--;
*d=0;//尾部要加\\0printf("%s\\n",dest);
free(dest);//使用完,應當釋放空間,以免造成內(nèi)存匯泄露return0;}
方法2:
#include#includemain(){
charstr[]="hello,world";intlen=strlen(str);chart;
for(inti=0;i{
t=str[i];
str[i]=str[len-i-1];str[len-i-1]=t;}
printf("%s",str);return0;}
1.-1,2,7,28,,126請問28和126中間那個數(shù)是什么?為什么?
第一題的答案應該是4^3-1=63
規(guī)律是n^3-1(當n為偶數(shù)0,2,4)n^3+1(當n為奇數(shù)1,3,5)
答案:63
2.用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!
設2個棧為A,B,一開始均為空.
入隊:
將新元素push入棧A;
出隊:
(1)判斷棧B是否為空;
(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;(3)將棧B的棧頂元素pop出;
這樣實現(xiàn)的隊列入隊和出隊的平攤復雜度都還是O(1),比上面的幾種方法要好。3.在c語言庫函數(shù)中將一個字符轉(zhuǎn)換成整型的函數(shù)是atool()嗎,這個函數(shù)的原型是什么?
函數(shù)名:atol
功能:把字符串轉(zhuǎn)換成長整型數(shù)用法:longatol(constchar*nptr);程序例:#include#include
intmain(void){
longl;
char*str="98765432";l=atol(lstr);
printf("string=%sinteger=%ld\\n",str,l);return(0);}
13.對于一個頻繁使用的短小函數(shù),在C語言中應用什么實現(xiàn),在C++中應用什么實現(xiàn)?
c用宏定義,c++用inline
14.直接鏈接兩個信令點的一組鏈路稱作什么?
PPP點到點連接
15.接入網(wǎng)用的是什么接口?
16.voip都用了那些協(xié)議?
17.軟件測試都有那些種類?
黑盒:針對系統(tǒng)功能的測試
白合:測試函數(shù)功能,各函數(shù)接口
18.確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的?
概要設計階段
19.
enumstring{
x1,x2,x3=10,x4,x5,}x;
問x=0x801005,0x8010f4;
20.
unsignedchar*p1;unsignedlong*p2;
p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x810000;
請問p1+5=;p2+5=;選擇題:
21.Ethternet鏈接到Internet用到以下那個協(xié)議?A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
22.屬于網(wǎng)絡層協(xié)議的是:
A.TCP;B.IP;C.ICMP;D.X.2523.Windows消息調(diào)度機制是:
A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;24.
unsignedshorthash(unsignedshortkey){
return(key>>)%256}
請問hash(16),hash(256)的值分別是:A.1.16;B.8.32;C.4.16;D.1.32找錯題:
25.請問下面程序有什么錯誤?
inta[60][250][1000],i,j,k;for(k=0;k
26.
#defineMax_CB500
voidLmiQueryCSmd(StructMSgCB*pmsg){
unsignedcharucCmdNum;......
for(ucCmdNum=0;ucCmdNum{......;}
死循環(huán)
27.以下是求一個數(shù)的平方的程序,請找出錯誤:
#defineSQUARE(a)((a)*(a))inta=5;intb;
b=SQUARE(a++);
28.
typedefunsignedcharBYTE
intexamply_fun(BYTEgt_len;BYTE*gt_code){
BYTE*gt_buf;
gt_buf=(BYTE*)MALLOC(Max_GT_Length);......
if(gt_len>Max_GT_Length){
returnGT_Length_ERROR;}.......}
問答題:
29.IPPhone的原理是什么?IPV6
30.TCP/IP通信建立的過程怎樣,端口有什么作用?三次握手,確定是哪個應用程序使用該協(xié)議31.1號信令和7號信令有什么區(qū)別,我國某前廣泛使用的是那一種?
32.列舉5種以上的電話新業(yè)務?
Q1:請你分別劃劃OSI的七層網(wǎng)絡結構圖,和TCP/IP的五層結構圖?
:Q2:請你詳細的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用?:TCP與UDP呢?
:Q3:請問交換機和路由器分別的實現(xiàn)原理是什么?分別在哪個層次上面實:現(xiàn)的?
請問C++的類和C里面的struct有什么區(qū)別?
:Q5:請講一講析構函數(shù)和虛函數(shù)的用法和作用?
:Q6:全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器:是怎么知道的?
:Q7:一些寄存器的題目,我忘記了具體實什么題目,主要好像是尋址和內(nèi):存管理等一些知識,不記得了。
:Q8:8086是多少尉的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?還有一些硬件方:面的知識我既不清楚了。
題目:一個黑暗的房間有三盞燈,房間外有三個開關.你只能進入房間一次,看你怎么來判斷哪個開關控制哪個燈泡.
老題目了,先打開一盞燈A,5分鐘后把燈關掉,開另外一個燈B,然后進去,亮著的就是B,摸一摸燈泡,暗的燈如果有熱度,那就是A,剩下的就是C了
華為招聘--C語言筆試試題
一、判斷題(對的寫T,錯的寫F并說明原因,每小題4分,共20分)1、有數(shù)組定義inta[2][2]={{1},{2,3}};則a[0][1]的值為0。(T)2、int(*ptr)(),則ptr是一維數(shù)組的名字。(T)
注明:一個數(shù)組,其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組.Int*p[4]Int(*p)()定義p是一個指向函數(shù)的指針變量.Int(*p)[4]這個是指向一維數(shù)組的指針變量.
3、指針在任何情況下都可進行>,=,charstr[]="Hello";char*p=str;intn=10;
sizeof(str)=()sizeof(p)=()sizeof(n)=()voidfunc(charstr[100]){}
sizeof(str)=()
2、voidsetmemory(char**p,intnum){*p=(char*)malloc(num);}voidtest(void){char*str=NULL;getmemory(&str,100);strcpy(str,"hello");printf(str);}
運行test函數(shù)有什么結果?()10分
3、設intarr[]={6,7,8,9,10};int*ptr=arr;*(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));
()10分
二、編程題(第一小題20,第二小題30分)
1、不使用庫函數(shù),編寫函數(shù)intstrcmp(char*source,char*dest)相等返回0,不等返回-1;
2、寫一函數(shù)intfun(char*p)判斷一字符串是否為回文,是返回1,不是返回0,出錯返回-1五、閱讀程序題(每個小題5分,共20分)1.閱讀以下程序,概括地寫出程序的功能。#include
doubleExp(doublex){doublesum=1.0;doubleterm=x;doublei=1;
while(term>=1.0E-8){sum+=term;i++;
term=term*x/i;}
returnsum;}voidmain(){doubles;
s=Exp(1.0)+Exp(2.0);cout.precision(8);coutcoutTdatebday(10);Tdatecday(2,12);Tdatedday(1,2,1998);}運行結果:
4.閱讀程序,寫出程序運行時輸出結果。#include#includeclassshape{public:
shape(doublex,doubley):xCoord(x),yCoord(y){}virtualdoubleArea()const{return0.0;}protected:
doublexCoord,yCoord;};
classAA:publicshape{public:
AA(doublex,doubley,doubler):shape(x,y),rad(r){}virtualdoubleArea()const{return3.0*rad*rad;}protected:doublerad;};
classBB:publicshape{public:
BB(doublex1,doubley1,doublex2,doubley2):shape(x1,y1),x2Coord(x2),y2Coord(y2){}virtualdoubleArea()const;protected:
doublex2Coord,y2Coord;};
doubleBB:Area()const
{returnfabs((xCoord-x2Coord)*(yCoord-y2Coord));//庫函數(shù)fabs(doublet)求得t的絕對值}
voidfun(constshape&sp){cout六、編寫程序題(每小題10分,共20分)
1.編寫一個函數(shù)intJudge(int*pArray,intn),判斷一個n×n二維整數(shù)數(shù)組pArray是否為“魔方陣”,若是返回1,否則返回0。所謂魔方陣就是將1到n2的各個數(shù)字組成的方陣,它的每一行、每一列以及兩個對角線上數(shù)字之和均相等。例如,3×3的中,A是魔方陣,而B不是魔方陣。然后在主程序中調(diào)用Judge函數(shù)判斷數(shù)組A是否為魔方陣。
參考程序#include
intJudge(int*pArray,intn){ints1,s2,s3,s4,sum=0;int*p=pArray;
for(inti=1;ivoidmain()
{intArray[3][3]={{8,1,6},{3,5,7},{4,9,2}};當x輸入值為9999時,函數(shù)返回值為多少?intfun(unsignedintx){intcount=0;while(x){
x=x&(x-1);count++;}
returncount;}
答案:此函數(shù)是在計算x中含有1的個數(shù),所以返回值為8。if(Judge((int*)Array,3))coutc[i]=c[i]%10;}
/*打印出來*/for(i=0;i}
void*p=malloc(100);請計算
sizeof(p)=?(5)
答:(1)17(2)4(3)4(4)4(5)4
3.回答下面的問題.(4分)
(1).頭文件中的ifndef/define/endif干什么用?預處理答:防止頭文件被重復引用
(2).#include和#include“filename.h”有什么區(qū)別?
答:前者用來包含開發(fā)環(huán)境提供的庫頭文件,后者用來包含自己編寫的頭文件。(3).在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C”聲明?
答:函數(shù)和變量被C++編譯后在符號庫中的名字與C語言的不同,被extern"C"修飾的變量和函數(shù)是按照C語言方式編譯和連接的。由于編譯后的名字不同,C++程序不能直接調(diào)用C函數(shù)。C++提供了一個C連接交換指定符號extern“C”來解決這個問題。
(4).switch()中不允許的數(shù)據(jù)類型是?答:實型
4.回答下面的問題(6分)(1).
VoidGetMemory(char**p,intnum){*p=(char*)malloc(num);}
voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf(str);}
請問運行Test函數(shù)會有什么樣的結果?答:輸出“hello”(2).
voidTest(void){
char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){strcpy(str,“world”);printf(str);}}
請問運行Test函數(shù)會有什么樣的結果?答:輸出“world”,因為free(str)后并未改變str所指的內(nèi)存內(nèi)容。(3).
char*GetMemory(void){charp[]="helloworld";returnp;}
voidTest(void){char*str=NULL;str=GetMemory();printf(str);}
請問運行Test函數(shù)會有什么樣的結果?答:無效的指針,輸出不確定
5.編寫strcat函數(shù)(6分)
已知strcat函數(shù)的原型是char*strcat(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不調(diào)用C++/C的字符串庫函數(shù),請編寫函數(shù)strcat答:VC源碼:
char*__cdeclstrcat(char*dst,constchar*src){
char*cp=dst;while(*cp)
cp++;/*findendofdst*/
while(*cp++=*src++);/*Copysrctoendofdst*/return(dst);/*returndst*/}
(2)strcat能把strSrc的內(nèi)容連接到strDest,為什么還要char*類型的返回值?答:方便賦值給其他變量
6.MFC中CString是類型安全類么?
答:不是,其它數(shù)據(jù)類型轉(zhuǎn)換到CString可以使用CString的成員函數(shù)Format來轉(zhuǎn)換
7.C++中為什么用模板類。
答:(1)可用來創(chuàng)建動態(tài)增長和減小的數(shù)據(jù)結構(2)它是類型無關的,因此具有很高的可復用性。
(3)它在編譯時而不是運行時檢查數(shù)據(jù)類型,保證了類型安全(4)它是平臺無關的,可移植性(5)可用于基本數(shù)據(jù)類型
8.CSingleLock是干什么的。答:同步多個線程對一個數(shù)據(jù)類的同時訪問
9.NEWTEXTMETRIC是什么。
答:物理字體結構,用來設置字體的高寬大小
10.程序什么時候應該使用線程,什么時候單線程效率高。答:1.耗時的操作使用線程,提高應用程序響應
2.并行操作時使用線程,如C/S架構的服務器端并發(fā)線程響應用戶的請求。3.多CPU系統(tǒng)中,使用線程提高CPU利用率
4.改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。
其他情況都使用單線程。
11.Windows是內(nèi)核級線程么。答:見下一題
12.Linux有內(nèi)核級線程么。
答:線程通常被定義為一個進程中代碼的不同執(zhí)行路線。從實現(xiàn)方式上劃分,線程有兩種類型:“用戶級線程”和“內(nèi)核級線程”。用戶線程指不需要內(nèi)核支持而在用戶程序中實現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應用進程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。這種線程甚至在象DOS這樣的操作系統(tǒng)中也可實現(xiàn),但線程的調(diào)度需要用戶程序完成,這有些類似Windows3.x的協(xié)作式多任務。另外一種則需要內(nèi)核的參與,由內(nèi)核完成線程的調(diào)度。其依賴于操作系統(tǒng)核心,由內(nèi)核的內(nèi)部需求進行創(chuàng)建和撤銷,這兩種模型各有其好處和缺點。用戶線程不需要額外的內(nèi)核開支,并且用戶態(tài)線程的實現(xiàn)方式可以被定制或修改以適應特殊應用的要求,但是當一個線程因I/O而處于等待狀態(tài)時,整個進程就會被調(diào)度程序切換為等待狀態(tài),其他線程得不到運行的機會;而內(nèi)核線程則沒有各個限制,有利于發(fā)揮多處理器的并發(fā)優(yōu)勢,但卻占用了更多的系統(tǒng)開支。
WindowsNT和OS/2支持內(nèi)核線程。Linux支持內(nèi)核級的多線程
13.C++中什么數(shù)據(jù)分配在;蚨阎,New分配數(shù)據(jù)是在近堆還是遠堆中?答:棧:存放局部變量,函數(shù)調(diào)用參數(shù),函數(shù)返回值,函數(shù)返回地址。由系統(tǒng)管理堆:程序運行時動態(tài)申請,new和malloc申請的內(nèi)存就在堆上近堆還是遠堆不是很清楚。
14.使用線程是如何防止出現(xiàn)大的波峰。
答:意思是如何防止同時產(chǎn)生大量的線程,方法是使用線程池,線程池具有可以同時提高調(diào)度效率和限制資源使用的好處,線程池中的線程達到最大數(shù)時,其他線程就會排隊等候。
15函數(shù)模板與類模板有什么區(qū)別?
答:函數(shù)模板的實例化是由編譯程序在處理函數(shù)調(diào)用時自動完成的,而類模板的實例化必須由程序員在程序中顯式地指定。
16一般數(shù)據(jù)庫若出現(xiàn)日志滿了,會出現(xiàn)什么情況,是否還能使用?答:只能執(zhí)行查詢等讀操作,不能執(zhí)行更改,備份等寫操作,原因是任何寫操作都要記錄日志。也就是說基本上處于不能使用的狀態(tài)。
17SQLServer是否支持行級鎖,有什么好處?
答:支持,設立封鎖機制主要是為了對并發(fā)操作進行控制,對干擾進行封鎖,保證數(shù)據(jù)的一致性和準確性,行級封鎖確保在用戶取得被更新的行到該行進行更新這段時間內(nèi)不被其它用戶所修改。因而行級鎖即可保證數(shù)據(jù)的一致性又能提高數(shù)據(jù)操作的迸發(fā)性。
18如果數(shù)據(jù)庫滿了會出現(xiàn)什么情況,是否還能使用?答:見16
19關于內(nèi)存對齊的問題以及sizof()的輸出
答:編譯器自動對齊的原因:為了提高程序的性能,數(shù)據(jù)結構(尤其是棧)應該盡可能地在自然邊界上對齊。原因在于,為了訪問未對齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問;然而,對齊的內(nèi)存訪問僅需要一次訪問。
20inti=10,j=10,k=3;k*=i+j;k最后的值是?
答:60,此題考察優(yōu)先級,實際寫成:k*=(i+j);,賦值運算符優(yōu)先級最低
21.對數(shù)據(jù)庫的一張表進行操作,同時要對另一張表進行操作,如何實現(xiàn)?答:將操作多個表的操作放入到事務中進行處理
22.TCP/IP建立連接的過程?(3-wayshake)
答:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SEND狀態(tài),等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手。
23.ICMP是什么協(xié)議,處于哪一層?
答:Internet控制報文協(xié)議,處于網(wǎng)絡層(IP層)
24.觸發(fā)器怎么工作的?
答:觸發(fā)器主要是通過事件進行觸發(fā)而被執(zhí)行的,當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,數(shù)據(jù)庫就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數(shù)據(jù)的處理必須符合由這些SQL語句所定義的規(guī)則。
25.winsock建立連接的主要實現(xiàn)步驟?
答:服務器端:socker()建立套接字,綁定(bind)并監(jiān)聽(listen),用accept()等待客戶端連接?蛻舳耍簊ocker()建立套接字,連接(connect)服務器,連接上后使用send()和recv(),在套接字上寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關閉套接字。
服務器端:accept()發(fā)現(xiàn)有客戶端連接,建立一個新的套接字,自身重新開始等待連接。該新產(chǎn)生的套接字使用send()和recv()寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關閉套接字。
26.動態(tài)連接庫的兩種方式?
答:調(diào)用一個DLL中的函數(shù)有兩種方法:
1.載入時動態(tài)鏈接(load-timedynamiclinking),模塊非常明確調(diào)用某個導出函數(shù),使得他們就像本地函數(shù)一樣。這需要鏈接時鏈接那些函數(shù)所在DLL的導入庫,導入庫向系統(tǒng)提供了載入DLL時所需的信息及DLL函數(shù)定位。
2.運行時動態(tài)鏈接(run-timedynamiclinking),運行時可以通過LoadLibrary或LoadLibraryEx函數(shù)載入DLL。DLL載入后,模塊可以通過調(diào)用GetProcAddress獲取DLL函數(shù)的出口地址,然后就可以通過返回的函數(shù)指針調(diào)用DLL函數(shù)了。如此即可避免導入庫文件了。
27.IP組播有那些好處?答:Internet上產(chǎn)生的許多新的應用,特別是高帶寬的多媒體應用,帶來了帶寬的急劇消耗和網(wǎng)絡擁擠問題。組播是一種允許一個或多個發(fā)送者(組播源)發(fā)送單一的數(shù)據(jù)包到多個接收者(一次的,同時的)的網(wǎng)絡技術。組播可以大大的節(jié)省網(wǎng)絡帶寬,因為無論有多少個目標地址,在整個網(wǎng)絡的任何一條鏈路上只傳送單一的數(shù)據(jù)包。所以說組播技術的核心就是針對如何節(jié)約網(wǎng)絡資源的前提下保證服務質(zhì)量。
友情提示:本文中關于《201*華為面試心得點滴總結大全》給出的范例僅供您參考拓展思維使用,201*華為面試心得點滴總結大全:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。