程序員面試題目_第1頁
程序員面試題目_第2頁
程序員面試題目_第3頁
程序員面試題目_第4頁
程序員面試題目_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、The Questions for Developing ApplicantsPlease note: The questions with asterisk (*) can not be empty.Describe general experience with:1. LAN's, WAN.2. Unix, Windows3. Programming Languages.4. Device DriverGeneral questions:1.Describe an experience you feel proud of in programming, such as creati

2、vely resolving a programming (coding, algorithms, structure or others)problem you encountered in the past.2.What's your biggest project? What a role did you played in it?3.What's difference between dealing with an English string and a Chinese String?4.Do you know about GB code, Big5 code, Un

3、icode? Would you please give me your understanding of their relationship and difference?5. Now I have an English application and its source code, such as a word processor. What would you do to make it work correctly in Chinese environment?6. If you're free to choose a job, what would you like to

4、 do: marketing, tester engineer, software programmer, project manager, or other? And why? Will you accept a different assignment other than the job you like, such as tester engineer position?C QUESTIONS:1.* Explain the difference between "call by value" and "call by reference" in

5、 a programming language. How do these apply to the C language? call by value :調用時子程序得到的是參數(shù)值的副本,子程序中對形參的改變其實只是影響了該副本的值,但在返回主程序后該副本會被丟棄,因此在主程序中按值調用的參數(shù)仍保持原來的值。call by reference :調用時子程序得到的是實際參數(shù)的內(nèi)存地址,因此在子程序中改變形參的值時,實際會導致對該形參所對應的地址處的內(nèi)存數(shù)據(jù)的變化,即直接修改的是主程序中的變量的值,返回主程序后該參數(shù)所對應的變量值會產(chǎn)生變化。2.*Explain how C pointers

6、work. What are they really? How can they be used? What are the most useful/vital ways to use them? 變量的地址稱為變量的指針,即指針是一個內(nèi)存單元的地址。指針的基本形態(tài)有以下幾種:(1)int *p; /p為指向整型數(shù)據(jù)的指針變量(2)int *pn; /定義指針數(shù)組p(3)int *p(); /p為指針函數(shù),返回一個指向整型數(shù)據(jù)的指針(4)int (*p)(); /p為指向函數(shù)的指針,該函數(shù)返回一個整型值(5)int (*p)n /p為指向含有n個元素的一維數(shù)組的指針變量(6)int *p; /

7、p為指向指針的指針,被指向的指針指向一個整型數(shù)據(jù)(7)int(*p)n /p是一個指向另一個指針變量的指針變量,被指向的指針變量指向一個含有n個整型數(shù)據(jù)的一維數(shù)組(8)int *p()n /p為返回整型指針數(shù)組(首地址)的函數(shù)(9)int (*p)() /p為指向返回整型數(shù)值函數(shù)的指針數(shù)組指針的使用:(1) 指針和數(shù)組對于數(shù)組ai表示數(shù)組a的第i+1個變量,a是數(shù)組名,表示該數(shù)組的首地址。即a與&a0等價,而p=a;通過p來訪問數(shù)組元素。(a) p,a,與&a0它們之間是等價的,都表示數(shù)組a的首地址(b) int *p=a;*p=1;為所指向的存儲單元賦值1(c) int *p

8、=a;表達式p+1為指向p的下一個存儲單元(d) 表達式p+i為指向p后第i個元素。ai,*(a+i),*(p+i)都表示數(shù)組a的第i個元素(2) 指針與函數(shù)參數(shù)的選擇如果用數(shù)組名作為函數(shù)參數(shù),實參數(shù)組名代表數(shù)組首地址,而形參是用來接收從實參傳遞過來的首地址,因此,形參應該是一個指針變量,因為只有指針變量才能存放地址。(3) 指針與鏈表鏈表P中每一個元素都有一個指針,用于存放下一個元素的地址,當要訪問P中某一個元素時,只需要找到鏈表的首地址即可3.*What is a pointer to a function? How do you declare it? What is it useful

9、 for?函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應是指針變量,只不過該指針量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。C在編譯時,每一個函數(shù)都有一個入口地址,該入口地址就是函數(shù)指針所指向的地址。有了指向函數(shù)的指針變量后,可用該指針變量調用函數(shù)。函數(shù)指針的聲明方法為:函數(shù)類型 (標志符指針變量名) (形參列表);函數(shù)指針有兩個用途:調用函數(shù)和做函數(shù)的參數(shù)。4. *What are function prototypes? How are they used, and what are they useful for? 函數(shù)聲明由函數(shù)返回類型、函

10、數(shù)名和形參列表組成。形參列表必須包括形參類型,但是不必對形參命名。這三個元素被稱為函數(shù)原型,函數(shù)原型描述了函數(shù)的接口。函數(shù)原型類似函數(shù)定義時的函數(shù)頭,又稱函數(shù)聲明。為了能使函數(shù)在定義之前就能被調用,C+規(guī)定可以先說明函數(shù)原型,然后就可以調用函數(shù)。函數(shù)定義可放在程序后面。 由于函數(shù)原型是一條語句,因此函數(shù)原型必須以分號結束。函數(shù)原型由函數(shù)返回類型、函數(shù)名和參數(shù)表組成,它與函數(shù)定義的返回類型、函數(shù)名和參數(shù)表必須一致。函數(shù)原型不必包含參數(shù)的名字,可只包含參數(shù)的類型。5. *Explain how memory management is handled in C. What does C do fo

11、r the programmer, and what does the programmer need to do explicitly? C語言常用的內(nèi)存管理函數(shù)有以下三個:1. 分配內(nèi)存空間函數(shù)malloc調用形式:(類型說明符*)malloc(size)功能:在內(nèi)存的動態(tài)存儲區(qū)中分配一塊長度為"size"字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址。“類型說明符”表示把該區(qū)域用于何種數(shù)據(jù)類型。(類型說明符*)表示把返回值強制轉換為該類型指針?!皊ize”是一個無符號數(shù)。2. 分配內(nèi)存空間函數(shù) calloccalloc 也用于分配內(nèi)存空間。調用形式:(類型說明符*)ca

12、lloc(n,size)功能:在內(nèi)存動態(tài)存儲區(qū)中分配n塊長度為“size”字節(jié)的連續(xù)區(qū)域。函數(shù)的返回值為該區(qū)域的首地址。(類型說明符*)用于強制類型轉換。calloc函數(shù)與malloc 函數(shù)的區(qū)別僅在于一次可以分配n塊區(qū)域。2. 釋放內(nèi)存空間函數(shù)free調用形式:free(void*ptr);功能:釋放ptr所指向的一塊內(nèi)存空間,ptr是一個任意類型的指針變量,它指向被釋放區(qū)域的首地址。被釋放區(qū)應是由malloc或calloc函數(shù)所分配的區(qū)域。6.*Explain what a C struct (structure) is. What makes them usefull? 結構體(stru

13、ct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構成的數(shù)據(jù)集合。結構體和其他類型基礎數(shù)據(jù)類型一樣,如int類型,char類型 只不過結構體可以做成你想要的數(shù)據(jù)類型。在實際項目中,結構體是大量存在的。結構體常用來封裝一些屬性來組成新的類型。結構體在函數(shù)中的作用不是簡便,其最主要的作用就是封裝。封裝的好處就是可以再次利用。讓使用者不必關心這個是什么,只要根據(jù)定義使用就可以了。7.*How does error handling work in C. What's the difference between compile-time errors and run-time errors? Wh

14、at are some good ways to programatically handle run-time errors?錯誤處理方法:1 返回值方式:用函數(shù)的返回值標志函數(shù)是否執(zhí)行成功。 返回值可以判定正確錯誤,或則增加一些簡單的錯誤類型判定. 其缺點在于一旦函數(shù)修改后返回值回有變化的話就很麻煩,當然最重要的還在于無法明確獲知錯誤信息??偟膩碚f一般返回值只是做簡單的正確錯誤判定,而不能作為獲知具體錯誤的手段。 2 全局errno方式:在出現(xiàn)錯誤的時候,將錯誤代碼記錄到一個全局變量errno中。比如waitpid()函數(shù)在被信號中斷的情況下,將errno設置為EINTR(一宏定義常量)。

15、這種方式解決了返回值方式遇到的返回值沖突問題,而且效率方面也是非常令人愉悅的。但是它要求用戶在調用函數(shù)后檢查errno的值,這種保證是脆弱的,程序仍然有可能在不處理那些errno的情況下”安然”地運行,導致未定義的結果。另一個問題出在多線程方面,errno不是線程安全的,多個線程操作同一個errno會造成混亂。 3 錯誤封裝:就是將每個有錯誤返回值的函數(shù)分別用一個函數(shù)包起來,比如waitpid()函數(shù)可以封裝成Waitpid()(首字母大寫),在這個函數(shù)中處理相應的錯誤。這種錯誤處理方法可以很好的解決很多問題,應該說效果很好,但是有幾個方面需要商榷,一是,并不是每個函數(shù)的錯誤都以一種方式進行處

16、理,另一方面,c語言的函數(shù)調用開銷相對很高,在函數(shù)外面再包上一層會影響性能。 封裝向來都是由針對性的,對于錯誤處理,封裝的難度非常大,通用型的封裝是不適用的,更多的時候是要根據(jù)具體業(yè)務來處理的. 4 異常:它的優(yōu)點是能模擬實現(xiàn)c+中異常的一些優(yōu)點。但是這個異常機制很脆弱,使用時要注意很多問題,而且它的性能開銷肯定也會不小。 5 Goto語句:,當發(fā)生錯誤時,利用goto語句跳到相應的錯誤處理函數(shù)中。因為一直以來對goto語句的偏見,和goto語句本身對程序結構性的影響,所以一直以來少用用過這種方式。編譯錯誤就是說代碼有問題,比如說語法錯誤導致程序無法運行。運行時錯誤就是說運行時才有可能產(chǎn)生的問

17、題,并且這些問題可以進行處理,從而避免中斷程序,產(chǎn)生不好得用戶體驗。C RELATED QUESTIONS SPECIFIC TO MS-DOS AND WINDOWS:1.Explain what a 16-bit segmented architecture is. What are the positives and negatives about it? How does this affect C programming? How do NEAR and FAR fit into this picture?2.What is a callback function? How is i

18、t used? What is it useful for?3.Explain the difference between static and dynamic linking. Why is dynamic linking useful?Instance Questions:1. * Should we recommend or avoid writing the code in following way, and Why? (If there are any problem, please point them out as much as possible).Void SomeFun

19、ction(void)int* pInt;pInt = new int10000;ASSERT(pInt!=NULL);/Use pInt delete pInt;刪除的是一個數(shù)組,應該用delete pInt;2. * Please describe the usage of "static" keyword in C/C+. What does the keyword mean in the following code.CC+Static int i;Void f(void)static int j;class cstatic int m_i;static void

20、MemberFunction(void);c語言中static 用法:1. 全局靜態(tài)變量在全局變量之前加上關鍵字static,全局變量就被定義成為一個全局靜態(tài)變量。 (1)內(nèi)存中的位置:靜態(tài)存儲區(qū)(靜態(tài)存儲區(qū)在整個程序運行期間都存在)(2)初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動初始化為0(自動對象的值任意的,除非他被顯示初始化)(3)作用域:全局靜態(tài)變量在聲明他的文件之外是不可見的。準確地講從定義之處開始到文件結尾。 定義全局靜態(tài)變量的好處:<1>不會被其他文件所訪問,修改<2>其他文件中可以使用相同名字的變量,不會發(fā)生沖突。2. 局部靜態(tài)變量在局部變量之前加上關

21、鍵字static,局部變量就被定義成為一個局部靜態(tài)變量。(1)內(nèi)存中的位置:靜態(tài)存儲區(qū)(2)初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動初始化為0(自動對象的值是任意的,除非他被顯示初始化)(3)作用域:作用域仍為局部作用域,當定義它的函數(shù)或者語句塊結束的時候,作用域隨之結束。注:當static用來修飾局部變量的時候,它就改變了局部變量的存儲位置,從原來的棧中存放改為靜態(tài)存儲區(qū)。但是局部靜態(tài)變量在離開作用域之后,并沒有被銷毀,而是仍然駐留在內(nèi)存當中,直到程序結束,只不過我們不能再對他進行訪問。當static用來修飾全局變量的時候,它就改變了全局變量的作用域(在聲明他的文件之外是不可見的),但是

22、沒有改變它的存放位置,還是在靜態(tài)存儲區(qū)中。3. 靜態(tài)函數(shù)在函數(shù)的返回類型前加上關鍵字static,函數(shù)就被定義成為靜態(tài)函數(shù)。函數(shù)的定義和聲明默認情況下是extern的,但靜態(tài)函數(shù)只是在聲明他的文件當中可見,不能被其他文件所用。<1> 其他文件中可以定義相同名字的函數(shù),不會發(fā)生沖突<2> 靜態(tài)函數(shù)不能被其他文件所用。左框中第一個static定義一個全局靜態(tài)變量,第二個static定義一個局部靜態(tài)變量。右框中第一個static定義一個靜態(tài)變量,第二個static定義一個靜態(tài)函數(shù)。3. * Please point out the differences between each pair of functions in same row.Inline void SomeFunction(void) void SomeFunction(void) Class cinline void SomeFunction(void) Class cvoid SomeFunction(void) 左面在函數(shù)的類型前加了inline,定義了一個內(nèi)聯(lián)函數(shù)4. * Try to describe the usage of the keyword named "virtual" in the C+ language.虛函數(shù)是一個希望在派生類中重新定義

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論