freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

java工程師求職筆試題及答案-閱讀頁

2024-11-16 01:29本頁面
  

【正文】 址,高位高地址,內存占用情況是 Ox010A) b) main() { union{ /*定義一個聯(lián)合 */ int i。 char second。 }number。 /*聯(lián)合成員賦值 */ printf(%c%c\n, , )。a39。b39。 getch()。A39。B39。不調用C++/C 的字符串庫函數,請編寫函數 strcpy。 if ( strDest == strSrc) return strDest 。 while( (*strDest++ = *strSrc++) != ?\0‘) return tempptr 。 // 通用構造函數 String(const String amp。 // 拷貝構造函數 ~ String()。 operater =(const String amp。 // 賦值函數 private: char *m_data。 嘗試寫出類的成員函數實現(xiàn)。 m_data[0] = 39。 。 strcpy(m_data,str)。another) { m_data = new char[strlen() + 1]。 } Stringamp。rhs) { if ( this == amp。 delete []m_data。 strcpy(m_data,)。 } String::~String() { delete []m_data 。 14. # i nclude 與 # i nclude 的區(qū)別? 答:前者是從 Standard Library 的路徑尋找和引用 ,而后者是從當前工作路徑搜尋并引用 。 通常,在模塊的頭文件中對本模塊提供給其它模塊引用的函數和全局變量以關鍵字 extern 聲明。這樣,模塊 B 中調用模塊 A 中的函數時,在編譯階段,模塊 B雖然找不到該函數,但是并不會報錯;它會在連接階段中從模塊 A 編譯生成的目標代碼中找到此函數 extern C是連接申明 (linkage declaration),被 extern C修飾的變量和函數是 按照 C 語言方式編譯和連接的 ,來看看 C++中對類似 C的函數是怎樣編譯的: 作為一種面向對象的語言, C++支持函數重載,而過程式語言 C 則不支持。例如,假設某個函數的原型為: void foo( int x, int y )。 _foo_int_int 這樣的名字包含了函數名、函數參數數量及類型信息, C++就是靠這種機制來實現(xiàn)函數重載的。 同樣地, C++中的變量除支持局部變量外,還支持類成員變量和全局變量。而本質上,編譯器在進行編譯時,與函數的處理相似,也為類中的變量取了一個獨一無二的名字,這個名字與 用戶程序中同名的全局變量名字不同。 endif 在模塊 B 中引用該函數: // 模塊 B 實現(xiàn)文件 # i nclude foo(2,3)。 endif 在模塊 B 的實現(xiàn)文件中仍然調用 foo( 2,3 ),其結果是: ( 1)模塊 A 編譯生成 foo 的目標代碼時,沒有對其名字進行特殊處理,采用了 C 語言的方式; ( 2)連接器在 為模塊 B 的目標代碼尋找 foo(2,3)調用時,尋找的是未經修改的符號名 _foo。 所以,可以用一句話概括 extern ―C‖這個聲明的真實目的(任何語言中的任何語法特性的誕生都不是隨意而為的,來源于真實世界的需求驅動。 明白了 C++中 extern C的設立動機,我們下面來具體分析 extern C通常的使用技巧: extern C的慣用法 ( 1)在 C++中引用 C 語言中的函數和變量,在包含 C 語言頭文件(假設為 )時,需進行下列處理: extern C { # i nclude 28215 15 } 而在 C 語言的頭文件中,對其外部函數只能指定為 extern 類型, C 語言中不支持 extern C聲明,在 .c 文件中包含了 extern C時會出現(xiàn)編譯語法錯誤。 endif /* c 語言實現(xiàn)文件: */ # i nclude int add( int x, int y ) { return x + y。 return 0。 ( 2)在 C 中引用 C++語言中的函數和變量時, C++的頭文件需添加 extern C,但是在 C 語言中不能直接引用聲明了 extern C的該頭文件,應該僅將 C 文件中將 C++中定義的 extern C函數聲明為 extern 類型。 endif //C++實現(xiàn)文件 # i nclude int add( int x, int y ) { return x + y。 int main( int argc, char* argv[] ) { add( 2, 3 )。 } 15 題目的解答請參考《 C++中 extern ―C‖含義深層探索》注解: 28216 16 16. 關聯(lián)、聚合 (Aggregation)以及組合 (Composition)的區(qū)別? 涉及到 UML 中的一些概念:關聯(lián)是表示兩個類的一般性聯(lián)系,比如 ―學生 ‖和 ―老師 ‖就是一種關聯(lián)關系;聚合表示 hasa 的關系,是一種相對松散的關系,聚合類不需要對被聚合類負責,如下圖所示,用空的菱形表示聚合關系: 從實現(xiàn)的角度講,聚合可以表示為 : class A {...} class B { A* a。 ...} 參考文章: ,并簡單敘述之? 1. 封裝:將客觀事物抽象成類,每個類對自身的數據和方法實行 protection(private, protected,public) 2. 繼承:廣義的繼承有三種實現(xiàn)形式:實現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實現(xiàn)代碼 )、接口繼承(僅使用屬性和方法,實現(xiàn)滯后到子類實現(xiàn))。 3. 多態(tài):是將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。 18. 重載( overload)和重寫 (overried,有的書也叫做 ―覆蓋 ‖)的區(qū)別? 常考的題目。 重寫:是指子類重新定義復類虛函數的方法。如,有兩個同名函數: function func(p:integer):integer。那么編譯器做過修飾后的函數名稱可能是這樣的: int_func、 str_func。也就是說,它們的地址在編譯期就綁定了(早綁定),因此,重載和多態(tài)無關! 重寫:和多態(tài)真正相關。因此,這樣的函數地址是在運行期綁定的(晚綁定)。 20. Ado 與 的相同與不同? 除了 ―能夠讓應用程序處理存儲于 DBMS 中的數據 ―這一基本相似點外,兩者沒有太多共同之處。眾所周知 .NET 體系不同于 COM 體系, 接口也就完全不同于 ADO 和 OLE DB 接口,這也就是說 和 ADO 是兩種數據訪問方式。 21. New delete 與 malloc free 的聯(lián)系與區(qū)別 ? 答案:都是在堆 (heap)上進行動態(tài)的內存操作。 delete 會調用對象的 destructor,而 free 不會調用對象的 destructor. 22. define DOUBLE(x) x+x , i = 5*DOUBLE(5); i 是多少? 答案: i 為 30。 24. C++是不是類型安全的? 答案:不是。 C是類型安全的。 28217 17 26. 描述內存分配方式以及它們的區(qū)別 ? 1) 從靜態(tài)存儲區(qū)域分配。例如全局變量, static 變量。在執(zhí)行函數時,函數內局部變量的存儲單元都可以在棧上創(chuàng)建,函數執(zhí)行結束時這些存儲單元自動被釋放。 3) 從堆上分配,亦稱動態(tài)內存分配。動態(tài)內存的生存期由程序員決定,使用非常靈活,但問題也最多。 struct 和 class 在其他 方面是功能相當的。感覺上結構僅僅象一堆缺乏封裝和功能的開放的內存位,而類就象活的并且可靠的社會成員,它有智能服務,有牢固的封裝屏障和一個良好定義的接口。 A 中沒有生命任何成員變量與成員函數 ,這時 sizeof(A)的值是多少,如果不是零,請解釋一下編譯器為 什么沒有讓它為零。舉個反例,如果是零的話,聲明一個 class A[10]對象數組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分 A[0],A[1]… 了。 30. 比較 C++中的 4 種類型轉換方式? 請參考: static_cast, dynamic_cast 和 reinterpret_cast 的區(qū)別和應用。 答案: BOOL : if ( !a ) or if(a) int : if ( a == 0) float : const EXPRESSION EXP = if ( a EXP amp。 a EXP) pointer : if ( a != NULL) or if(a == NULL) const 與 define 相比,有何優(yōu)點? 答案: 1) const 常量有數據類型,而宏常量沒有數據類型。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產生意料不到的錯誤。 ? 數組要么在靜態(tài)存儲區(qū)被創(chuàng)建(如全局數組),要么在棧上被創(chuàng)建。 (1)修改內容上的差別 char a[] = ―hello‖。 char *p = ―world‖。 // 編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤 (2) 用運算符 sizeof 可以計算出數組的容量(字節(jié)數)。 C++/C 語言沒有辦法知道指針所指的內存容量,除非在申請內存時記住它。 char a[] = hello world。 cout sizeof(a) endl。 // 4 字節(jié) 計算數組和指針的內存容量 void Func(char a[100]) 28218 18 { cout sizeof(a) endl。 ,特征是: ( 1)不同的范圍(分別位于派生類與基類); ( 2)函數名字相同; ( 3)參數相同; ( 4)基類函數必須有 virtual 關鍵字。此時,不論有無 virtual 關鍵字,基類的函數將被隱藏(注意別與重載混淆)。此時,基類的函數 被隱藏(注意別與覆蓋混淆) 35. There are two int variables: a and b, don‘t use ―if‖, ―? :‖, ―switch‖or other judgement statements, find out the biggest one of the two numbers. 答案: ( ( a + b ) + abs( a b ) ) / 2 36. 如何打印出當前源文件的文件名以及源文件的當前行號? 答案: cout __FILE__ 。 __FILE__和 __LINE__是系統(tǒng)預定義宏,這種宏并不是在某個文件中定義的,而是由編譯器定義的。 void main( void ) { String str(zhanglin)。 _onexit( fn2 )。 _onexit( fn4 )。 } int fn1() { printf( next.\n )。 } int fn2() { printf( executed )。 } 28219 19 int fn3() { printf( is )。 } int fn4() { printf( This )。 } The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (lastinfirstout) order. The functions passed to _onexit cannot take parameters. 38. 如何判斷一段程序是由 C 編譯程序還是由 C++編譯程序編譯的? 答案: ifdef __cplusplus coutc++。 endif ,要求排序后輸出到另一個文件中 答案: # i nclude # i nclude using namespace std。 data) //bubble sort { int count = () 。 // 設置是否需要繼續(xù)冒泡的標志位 for ( int i = 0 。 i++) { for ( int j = 0 。 j++) { if ( data[j] data[j+1]) { tag = true 。 data[j] = data[j+1] 。 } } if ( !tag ) break 。 ifstream in(c:\\)。 exit(1)。 while (!()) { intemp。 } ()。 ofstream o
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1