與程序員面試寶典第18章_第1頁
與程序員面試寶典第18章_第2頁
與程序員面試寶典第18章_第3頁
與程序員面試寶典第18章_第4頁
與程序員面試寶典第18章_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第 18 章文字解答實(shí)戰(zhàn)題前面的章節(jié)已經(jīng)介紹了在 C/C+面試中的大部分考點(diǎn),覆蓋了基礎(chǔ)知識高級算法的各個方面。本章將之前介紹的知識做試題的介紹和分析,提供一些各大公司的經(jīng)典和常見試題,以及考題和完整的解題思路分析,幫助讀者鞏固 C/C+面試的各個考點(diǎn),通過大量的練習(xí)進(jìn)一步提高實(shí)戰(zhàn)能力。文字解答題考的是 C/C+程序員的語言基礎(chǔ)和工作經(jīng)驗(yàn)等方面的知識,以及一些簡單但是可能設(shè)有“陷阱”的計(jì)算和程序邏輯推理。C/C+的基礎(chǔ)和經(jīng)驗(yàn)對于反映一個程序員的水平是非常重要的,很多公司在面試時都會準(zhǔn)備這種類型的題目。下面將介紹一些常見的經(jīng)驗(yàn)概念試題以及相關(guān)分析和解答。面試題 199介紹 STL,詳細(xì)說明 ST

2、L 如何實(shí)現(xiàn) vector(面試題)【分析與】STL(標(biāo)準(zhǔn)模版庫,Standard Template Library)它由容器算法迭代器組成。本題應(yīng)聘者對于 STL 的了解。STL 有包括以下一些優(yōu)點(diǎn)。qqq可以方便容易地實(shí)現(xiàn)搜索數(shù)據(jù)或?qū)?shù)據(jù)排序等一系列的算法; 調(diào)試程序時更加安全和方便;即使是程序員使用 STL 在 UNIX 平臺下寫的代碼讀者也可以很容易地理解(因?yàn)镾TL 是跨平臺的)。vector 實(shí)質(zhì)上就是一個動態(tài)數(shù)組,會根據(jù)數(shù)據(jù)的增加,動態(tài)的增加數(shù)組空間。以下是一段基于 SGI STL 的一個 vector 的實(shí)現(xiàn)的代碼:#include <alloc.h>/內(nèi)存分配器頭

3、文件,非標(biāo)準(zhǔn)#include <iterator.h>/迭代器頭文件,非標(biāo)準(zhǔn)template <class T >/模板類,提供泛型功能class vectortypedef alloc Alloc;/內(nèi)存分配器 typedef public:typedef T value_type;/值類型 T typedef value_type* pointer;/指針類型 T*typedef value_type* iterator;/迭代器,這里的迭代器不需要,只是一個原生指針的 typedef typedef const value_type* const_iterator

4、; /只讀迭代器typedef value_type& reference;/T&typedef const value_type& const_reference; /只讀typedef size_t size_type;/長度類型 size_t,一般是 unsigned int;第 18 章 文字解答實(shí)戰(zhàn)題從示例代碼中可以看到,vector 使用 allocator 來進(jìn)行內(nèi)存管理,使用 3 個迭代器來引用這存。vector 的 iterator 其實(shí)就是 T*的別名。在續(xù)的內(nèi)存里(數(shù)組),指針是可以做算術(shù)運(yùn)算的,也支持操作,由此,vector 的 iterator

5、 也支持算術(shù)運(yùn)算,+,-,+=,-=,。vector 的迭代器就是通常的隨機(jī)迭代器了。面試題 200分析 Visual C+程序出錯的使用 Visual C+開發(fā)程序經(jīng)常會遇見這幾個錯誤:LNK2001,C2001,c2005,c2011。請問出現(xiàn)這些錯誤的是什么?【分析與】在學(xué)習(xí) Visual C+的過程中,遇到的 LNK2001 錯誤的消息主要為 unresolved、externalsymbol“symbol”(不確定的外部“符號”)。本題主要是應(yīng)聘者是否有足夠的經(jīng)驗(yàn)。如果連接程序不能在所有的庫和目標(biāo)文件內(nèi)找到所的函數(shù)、變量或,將產(chǎn)生此錯誤消息。一般來說,發(fā)生錯誤的主要有以下兩個:(1)

6、是所的函數(shù)、變量不存在、拼寫不正確或者使用錯誤。(2)可能使用了不同版本的連接庫。編譯器錯誤 C2001:常數(shù)中有換行符。字符串常數(shù)不能繼續(xù)到第二行,除非進(jìn)行此類操作: 用反斜杠結(jié)束第一行。用一個雙引號結(jié)束第一行上的字符串,并在下一行使用另一個雙引號開始該字符串。用 n 結(jié)束第一行是不夠的,例如下面的代碼:下一行開始處位于行繼續(xù)的空格包含在字符串常數(shù)中。以上顯示的示例都沒有將換行符嵌入字符串常數(shù)中,可以按如下所示嵌入換行符:printf("Hello,nworld");·239·printf("Hello, world"); /錯誤p

7、rintf("Hello,nworld"); /錯誤printf("Hello, world"); /正確printf("Hello,"" world"); /正確typedef ptrdiff_t difference_type; /指針間隔,用來表示兩個指針間的距離typedef reverse_iterator<const_iterator, value_type, const_reference, difference_type> const_reverse_iterator;/反向迭代器,定義

8、在<iterator.h> typedef reverse_iterator<iterator, value_type, reference, difference_ type>reverse_iterator;/只讀反向迭代器protected:/數(shù)據(jù)成員typedef simple_alloc<value_type, Alloc> data_allocator;/分配器的 typedefiterator start;/vector 的第一個元素的迭代器,用來表示 vector,永遠(yuǎn)為 vector.begin(); iterator finish;/ve

9、ctor 的末尾,指向 vector 的最后一個元素的下一個位置。永遠(yuǎn)為 vector.end(); iterator end_of_storage;/vector 所擁有的內(nèi)存的末尾。如果等于 vector.end(),表示 vector 已滿第 4 篇 C/C+面試題實(shí)戰(zhàn)編譯器錯誤 C2005:#line 應(yīng)輸入行號,卻找到“token”。#line 指令后面必須跟行號。下面的示例生成 C2005:編譯器錯誤 C2011:“identifier”:“type”類型重定義,該標(biāo)識符已定義為 type 類型。如果多次將某個類型庫導(dǎo)入同一個文件,也可能生成 C2011,例如下面的代碼:面試題 2

10、01繼承和多態(tài)有何區(qū)別【分析與】本題應(yīng)聘者對面向?qū)ο髴?yīng)用的了解。在 OOD 和 OOP 中,多態(tài)組合優(yōu)于繼承。多態(tài)的基礎(chǔ)是繼承,沒有繼承,多態(tài)無從談起。(1) 對象的類型不影響類中函數(shù)的行為時,就要使用模板來生成這樣一組類。(2) 對象的類型影響類中函數(shù)的行為時,就要使用繼承來得到這樣一組類。面試題 202有何區(qū)別?傳指針和比傳指針安全,為什么【分析與本題(1)】應(yīng)聘者對于 C/C+最基礎(chǔ)的指針的了解,如下:在創(chuàng)建的同時必須初始化,即到一個有效的對象,而指針在定義的時候不必初始化,可以在定義后面的任何地方重新賦值。(2)不存在 NULL,必須與合法的單元關(guān)聯(lián);而指針則可以是 NULL。(3)一

11、旦被初始化為指向一個對象,它就不能被改變?yōu)榱硪粋€對象的;而指針在任何時候都可以改變?yōu)橹赶蛄硪粋€對象。給關(guān)系。賦值并不是改變它和原始對象的綁定(4)的創(chuàng)建和銷毀并調(diào)用類的拷貝構(gòu)造函數(shù)。(5)語言層面,的用法和對象一樣。在二進(jìn)制層面,一般都是通過指針來實(shí)現(xiàn)的,只不過編譯器幫我們完成了轉(zhuǎn)換。不存在空,并且一旦被初始化為指向一個對象,它就不能被改變?yōu)榱硪粋€對象,顯得很安全。const 指針仍然存在空指針,并且有可能產(chǎn)生野指針??偟膩碚f,既具有指針的效率,又具有變量使用的方便性和直觀性。·240·struct S;union S;/錯誤:C2011/ C2005.cpp int ma

12、in()int i = 0;#line i / C2005/ try ./ #line 0printf("Hello,nworld"); printf("Hello,n""world");printf("Hello,""nworld");第 18 章 文字解答實(shí)戰(zhàn)題面試題 203參數(shù)傳遞的方式與多態(tài)參數(shù)傳遞的實(shí)現(xiàn)(摩托羅拉面試題)【分析與】參數(shù)傳遞有傳值,傳指針或者等 3 種,下面作詳細(xì)介紹。qq傳值方式適合一般數(shù)值傳送,并且不改變原數(shù)據(jù),但要消耗內(nèi)存空間;傳指針方式適合傳遞數(shù)組、指針,由于傳遞

13、的是地址,所以直接操作會改變原 數(shù)據(jù);q指針比較類似,是相對比較新的式。一般情況下能用傳址的就能用,而且使用更方便一點(diǎn)?;A(chǔ)好的 C/C+程序員應(yīng)該明白,實(shí)現(xiàn)多態(tài)主要采用和指針。傳值這種方式是復(fù)制數(shù)據(jù),其類型編譯器就已決定,而多態(tài)是類型要等到執(zhí)行期才能決定,所以不使用傳值方式來實(shí)現(xiàn)多態(tài)參數(shù)傳遞。面試題 204怎樣應(yīng)用設(shè)計(jì)模式的理念【分析與設(shè)計(jì)模式】考慮的是擴(kuò)展和重用,而這兩方面在很多情況下,往往會被忽略。面試官主要對應(yīng)聘者未來的發(fā)展前景考慮,通過本題了解應(yīng)聘者對系統(tǒng)分析、整體架構(gòu)設(shè)計(jì)方面的經(jīng)驗(yàn)。雖然設(shè)計(jì)模式非常關(guān)鍵,不過也不建議程序員不建議用設(shè)計(jì)模式可能使得簡單問題變得復(fù)雜化。設(shè)計(jì)模式,因?yàn)椴?/p>

14、合適的使面試題 205介紹一下對設(shè)計(jì)模式的理解【分析與】設(shè)計(jì)模式概念是由設(shè)計(jì)師 Christopher Alexander 提出:“每一個模式描述了一個在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的解決方案的次地使用該方案而不必做重復(fù)勞動。”上述定義是對設(shè)計(jì)模式的向?qū)ο筌浖念I(lǐng)域內(nèi),就形成了對設(shè)計(jì)模式的狹義定義。這樣,你就能一次又一義。將其應(yīng)用到面可以簡單的認(rèn)為:設(shè)計(jì)模式就是解決某個特定的面向?qū)ο筌浖栴}的特定方法,并且已經(jīng)上升到理論程度。下面是框架與設(shè)計(jì)模式的區(qū)別:(1)設(shè)計(jì)模式和框架對特定業(yè)務(wù)的問題域。的問題域不同。設(shè)計(jì)模式面向?qū)ο蟮膯栴}域就是框架針(2) 設(shè)計(jì)模式比框架更為抽象。設(shè)計(jì)模式在碰

15、到具體問題后,才能產(chǎn)生代碼;框架已經(jīng)可以用代碼表示。(3) 設(shè)計(jì)模式是比框架更小的體系結(jié)構(gòu)元素??蚣苤锌梢园ǘ鄠€設(shè)計(jì)模式。例如,設(shè)計(jì)模式就像武術(shù)中基本的招式。將這些招式合理地縱組合起來,就形成套路(框架)??蚣芫褪且环N半成品。·241·第 4 篇 C/C+面試題實(shí)戰(zhàn)面試題 206C+和 C 定義結(jié)構(gòu)的區(qū)別是什么(摩托羅拉筆試題)【分析與】C 語言中的結(jié)構(gòu)僅僅是數(shù)據(jù)的結(jié)合,C 語言中的結(jié)構(gòu)體內(nèi)是不能函數(shù)的。面試官要的就是應(yīng)聘者對這兩種語言基礎(chǔ)的了解。C+中的結(jié)構(gòu)和類其實(shí)具備幾乎一樣的功能,結(jié)構(gòu)體內(nèi)也可以函數(shù)。C+的結(jié)構(gòu)和類默認(rèn)具有不一樣的屬性。面試題 207關(guān)于構(gòu)造函數(shù)和析

16、構(gòu)函數(shù)構(gòu)造函數(shù)可否是虛函數(shù)?為什么?析構(gòu)函數(shù)呢?析構(gòu)函數(shù)可否是純虛的呢?【分析與】這是初學(xué)者容易的問題。構(gòu)造函數(shù)不能為虛函數(shù),要構(gòu)造一個對象,必須清楚地知道要構(gòu)造什么,否則無法構(gòu)造一個對象。析構(gòu)函數(shù)可以是虛函數(shù),也可以是純虛函數(shù)。面試題 208對拷貝構(gòu)造函數(shù)的深拷貝、淺拷貝和臨時對象的理解【分析與】應(yīng)聘者對于基礎(chǔ)知識的了解。深拷貝意味著拷貝了和指針,而淺拷貝只是拷,造成對同一份析構(gòu)兩次,貝了指針,沒有拷貝。這樣會使得兩個指針指向同一份程序。臨時對象的開銷比局部對象小些。面試題 209基類中有一個虛函數(shù),子類還需要申明為 virtual 嗎【分析與】這種情況下不申明為 virtual 是沒有關(guān)系

17、的。不過,很多程序員也會喜歡使用顯式申明,這樣可以使得代碼更加清晰,增強(qiáng)可讀性。面試官主要的其實(shí)是程序員對于基礎(chǔ)知識的了解,能說出正確的,就說明基礎(chǔ)比較扎實(shí)。面試題 210C+的類有什么優(yōu)點(diǎn)C+可以通過精心僅為了實(shí)現(xiàn)重用?某些函數(shù)功能實(shí)現(xiàn)重用,那 C+的類有什么優(yōu)點(diǎn)嗎?是不是僅【分析與】并不僅僅是為了實(shí)現(xiàn)重用。(Object Oriented Design,簡稱 OOD 即面向?qū)ο螅┖停∣bject Oriented Programming,簡稱 OOP 即面向?qū)ο蟮某绦蛟O(shè)計(jì))從根本上改變了程序設(shè)計(jì)模式和設(shè)計(jì)思想,具備深遠(yuǎn)的意義。和·242·第 18 章 文字解答實(shí)戰(zhàn)題類的

18、 3 大最基本的特征:,繼承和多態(tài)。這些特征將編程模型從面向過程轉(zhuǎn)變?yōu)槊嫦驅(qū)ο?,從根本上改變了編寫程序的思路和模式。本題應(yīng)聘者對于面向?qū)ο蠛徒?jīng)驗(yàn)。面試題 211如何實(shí)現(xiàn)多態(tài)?父類和子類的繼承關(guān)系如何【分析與】多態(tài)的基礎(chǔ)是繼承,需要虛函數(shù)的支持,C+中多態(tài)有下面 3 種實(shí)現(xiàn)方式:qqq使用函數(shù)重載; 使用模板函數(shù);使用虛函數(shù)。子類繼承父類的大部分。不能繼承的有構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、operator=函數(shù)、函數(shù)等。面試題 212為什么要引入抽象基類和純虛函數(shù)(摩托羅拉筆試題)【分析與】主要目的是為了實(shí)現(xiàn)一種接口的效果。在面向?qū)ο蟮木幊陶Z言中,為了更好的表示客觀世界。所以有些類可以什么都

19、不實(shí)現(xiàn)只是提供一個共享的接口。這就是純虛函數(shù),而含有純虛函數(shù)的基類即為抽象基類。面試題 213介紹一下模板和容器,如何實(shí)現(xiàn)【分析與】模板可以說比較古老了,但是當(dāng)前使用的泛型編程實(shí)質(zhì)上就是模板編程。它體現(xiàn)了一種通用和泛化的思想。本題的就是模板的基礎(chǔ)知識。STL 有 7 種主要容器:vector、list、deque、map、multimap、set 和 multiset。面試題 214什么是 MVC?簡單舉例說明其應(yīng)用【分析與】MVC 模式是 Observer 模式的一個特例,典型的有 MFC 中的文檔視圖架構(gòu)。本題應(yīng)聘者對于設(shè)計(jì)模式的了解,對于先進(jìn)流行框架的學(xué)習(xí)程度。面試題 215列舉幾種進(jìn)程

20、的同步機(jī)制(面試題)【分析與】原子操作、信號量機(jī)制、自旋鎖、管程、會合、分布式系統(tǒng)。本題對于進(jìn)程基礎(chǔ)知識的深入理解程度,同時要求應(yīng)聘者一定要知道什么是同步,同步的原理是什么。·243·第 4 篇 C/C+面試題實(shí)戰(zhàn)面試題 216進(jìn)程之間通信的途徑【分析與】本題進(jìn)程之間通信的途徑主要有以下 3 種:qqq共享系統(tǒng);消息傳遞系統(tǒng);:以文件系統(tǒng)為基礎(chǔ)。面試題 217進(jìn)程死鎖的【分析與】死鎖是指在兩個或多個并發(fā)進(jìn)程中,如果每個進(jìn)程持有某種而又都等待別的進(jìn)程它們現(xiàn)在保持著的,否則就不能向前推進(jìn)。此時,每個進(jìn)程都占用了一定的但是又不能向前推進(jìn),稱這一組進(jìn)程產(chǎn)生了死鎖。簡單地說,就是兩個

21、或多個進(jìn)程無止境的等候著,永遠(yuǎn)成立的條件的一種系統(tǒng)狀態(tài)。產(chǎn)生死鎖的根本如下。是系統(tǒng)能夠提供的個數(shù)比要求該的進(jìn)程數(shù)少,具體q 系統(tǒng)不足;q 進(jìn)程推進(jìn)順序。面試題 218死鎖的 4 個必要條件【分析與】如果應(yīng)聘者能完整的回答此題,則顯示出他對基礎(chǔ)知識的熟練程度。(1)互斥條件:一個每次只能被一個進(jìn)程使用。(2)請求與保持條件:一個進(jìn)程因請求而阻塞時,對已獲得的保持不放。 關(guān)系。(3)不條件:進(jìn)程已獲得的,在沒使用完之前,不能強(qiáng)行(4)循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待面試題 219死鎖的處理【分析與】知道如何發(fā)現(xiàn)問題,如何解決問題是一個程序員必須面對的任務(wù)。本題何處理常見的死鎖問

22、題,具體有以下幾個方面:(1) 鴕鳥算法忽略該問題。(2) 檢測死鎖并且恢復(fù)。應(yīng)聘者如(3)仔細(xì)地對進(jìn)行動態(tài)分配,以避免死鎖。(4)通過破壞死鎖產(chǎn)生的 4 個必要條件之一,來防止死鎖產(chǎn)生。·244·第 18 章 文字解答實(shí)戰(zhàn)題面試題 220操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種【分析與】在考慮這個問題時,首先要考慮操作系統(tǒng),如果不確定,先要詢問面試官,是 Windows系統(tǒng)還是 Linux 系統(tǒng)。如果這兩種操作系統(tǒng)應(yīng)聘者都很熟悉,則直接可以說出這兩個系統(tǒng)的區(qū)別和進(jìn)程調(diào)度的策略,詳細(xì)如下:FCFS(先來先服務(wù))、優(yōu)先級、時間片輪轉(zhuǎn)和多級反饋。面試題 221類的靜態(tài)成員和非靜態(tài)成員有何

23、區(qū)別【分析與】靜態(tài)變量使用 static 修飾符進(jìn)行,在類被實(shí)例化時創(chuàng)建,通過類進(jìn)行不帶有static 修飾符的變量稱做非靜態(tài)變量。在對象被實(shí)例化時創(chuàng)建,通過對象進(jìn)行一個類的所有實(shí)例的同一靜態(tài)變量都是同一個值,同一個類的不同實(shí)例的同一非靜態(tài)變量可以是不同的值。靜態(tài)函數(shù)的實(shí)現(xiàn)里不能使用非靜態(tài)成員,例如非靜態(tài)變量、非靜態(tài)函數(shù)等。類的靜態(tài)成員每個類只有一個,非靜態(tài)成員每個對象一個。本題識的把握程度。應(yīng)聘者對基礎(chǔ)知面試題 222純虛函數(shù)如何定義?使用時應(yīng)注意什么【分析與】定義方式如下:virtual void f()=0;必須要實(shí)現(xiàn)該接口。在 C/C+語言中,純虛函數(shù)的應(yīng)此函數(shù)是一個接口,子類用非常廣

24、泛,它如何定義和注意事項(xiàng),是對基礎(chǔ)知識的一種考量。面試題 223數(shù)組和鏈表的區(qū)別【分析與本題】C/C+語言的基礎(chǔ)知識,應(yīng)聘者應(yīng)該了解數(shù)組和鏈表的概念和定義,然后才能具體的區(qū)別它們,詳細(xì)如下。q 數(shù)組:數(shù)據(jù)順序,固定大??;q 鏈表:數(shù)據(jù)可以隨機(jī),大小可動態(tài)改變。面試題 224關(guān)于 ISO 七層模型的典型問題ISO 的七層模型是什么?TCP/UDP 是屬于哪一層?TCP/UDP 有何優(yōu)缺點(diǎn)?【分析與】ISO 的七層模型主要包括:應(yīng)用層、表示層、會話層、層、網(wǎng)絡(luò)層、物理鏈路層、·245·第 4 篇 C/C+面試題實(shí)戰(zhàn)物理層。TCP/UDP 屬于傳輸層。TCP 服務(wù)提供了數(shù)據(jù)流傳輸

25、、可靠性、有效流、全雙工操作和多路復(fù)用技術(shù)等。與 TCP 不同,UDP 并不提供對 IP 協(xié)議的可靠機(jī)制、流以及錯誤恢復(fù)功能等。由于 UDP 比較簡單,所以它的頭部信息包含很少的字節(jié),比 TCP 負(fù)載消耗少。q TCP:提供穩(wěn)定的傳輸服務(wù),有流量,缺點(diǎn)是包頭大,冗余性不好。q UDP:不提供穩(wěn)定的服務(wù),包頭部信息少,開銷小。面試題 225內(nèi)存的分配方式及其區(qū)別【分析與】對于 C/C+語言,因?yàn)槎嗍情_發(fā)操作系統(tǒng)的底層技術(shù),所以內(nèi)存分配非常關(guān)鍵。下面從多方面解釋內(nèi)存分配方式:(1)從靜態(tài)區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運(yùn)行期間都存在。例如,全局變量和 static

26、變量。(2)在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些單元自動被。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集。(3)從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運(yùn)行的時候使用 malloc 或 new 申請任意多少的內(nèi)存,程序員負(fù)責(zé)在何時用 free 或 delete內(nèi)存。動態(tài)內(nèi)存的生存期由程序員決定,使用非常靈活,但問題也最多。面試題 226struct 和 class 的區(qū)別【分析與】struct 的成員默認(rèn)是公有的,而類的成員默認(rèn)是私有的。struct 和 class 在其他方面是功能相當(dāng)?shù)?。從?xí)慣上來講,大多數(shù)的開發(fā)者感到類和結(jié)構(gòu)有很大的差別。感覺上結(jié)構(gòu)僅僅像一

27、堆缺乏和功能的開放的內(nèi)存位,而類就像活的并且可靠的成員,它有智能服務(wù),有牢固的屏障和一個良好的定義接口。既然大多數(shù)人都這么認(rèn)為,那么只有在程序員的類有很少的方法并且有公有數(shù)據(jù)(這種事情在良好設(shè)計(jì)的系統(tǒng)中是存在的)時,也許應(yīng)該使用 struct 關(guān)鍵字,否則,應(yīng)該使用 class 關(guān)鍵字。面試題 227一個類所占內(nèi)存空間的問題(Autodesk 面試題改編)當(dāng)一個類 A 中沒有任何成員變量與成員函數(shù)時,sizeof(A)的值是否可以為 0?請解釋一下編譯器為什么沒有讓它為 0。【分析與】肯定不是 0。舉個反例,如果是 0 的話,一個 class A10對象數(shù)組,而每一個對象占用的內(nèi)存空間是 0,

28、這時就沒辦法區(qū)分 A0,A1了。這是一個最簡單的例子,本例的就是應(yīng)聘者的反應(yīng)能力和考慮問題的多面性。·246·第 18 章 文字解答實(shí)戰(zhàn)題面試題 228在 8086 匯編中,邏輯地址和物理地址如何轉(zhuǎn)換(Intel 面試題)【分析與】首先要明白,為什么特指在 8086 匯編下?因?yàn)?C 語言能編譯成 8086 匯編語言。本題范圍比較寬廣,需要應(yīng)聘者對匯編語言有一定的了解。通用寄存器給出的地址,是偏移地址,相應(yīng)段寄存器地址*10H+通用寄存器內(nèi)地址,就得到了真正要的地址。面試題 229比較 C+中的 4 種類型轉(zhuǎn)換方式【分析與】C+同時提供了 4 種新的強(qiáng)制形式(通常稱為新風(fēng)格

29、的或 C+風(fēng)格的強(qiáng)制):const_cast(expression)、dynamic_cast(expression)、reinterpret_cast(expression) 和 static_cast (expression),每一種都適用于特定的目的,具體如下:(1)dynamic_cast 主要用于執(zhí)行“安全的向下(safe downcasting)”,也就是說,要確定一個對象是否是一個繼承體系中的一個特定類型。它是唯一不能用舊風(fēng)格語法執(zhí)行的強(qiáng)制,也是唯一可能有運(yùn)行價的強(qiáng)制。(2)static_cast 可以被用于強(qiáng)制隱型轉(zhuǎn)換(例如,non-const 對象為 const 對象,int

30、為 double,等等),它還可以用于很多這樣的轉(zhuǎn)換的反向轉(zhuǎn)換(例如,void*指針為有類型指針,基類指針為派生類指針),但是它不能將一個const 對象對象(只有 const_cast 能做到),它最接近于 C-style 的轉(zhuǎn)換。為non-const(3)const_cast 一般用于強(qiáng)制消除對象的常量性。它是唯一能做到這一點(diǎn)的 C+風(fēng)格的強(qiáng)制。(4)reinterpret_cast 是特意用于底層的強(qiáng)制,導(dǎo)致實(shí)現(xiàn)依賴( implementation-dependent)(就是說,不可移植)的結(jié)果,例如,將一個指針制在底層代碼以外應(yīng)該極為罕見。為一個整數(shù)。這樣的強(qiáng)舊風(fēng)格的強(qiáng)制依然合法,但是

31、新的形式更可取。首先,在代碼中它們更容易識別(無論是人還是像 grep 這樣的工具都是如此),這樣就簡化了在代碼中尋找類型系統(tǒng)被破壞的地方的過程。其次,更精確地指定每一個強(qiáng)制的目的,使得編譯器診斷使用錯誤成為可能。例如,試圖使用一個 const_cast 以外的新風(fēng)格強(qiáng)制無法編譯。來消除常量性,代碼將面試題 230面向?qū)ο蟮?3 個基本特征是什么【分析與】應(yīng)聘者對于面向?qū)ο蠹夹g(shù)的了解,下面是簡述:將客觀事物抽象成類,每個類對自身的數(shù)據(jù)和方法實(shí)行 protection(private,(1)protected,public)。(2)繼承:廣義的繼承有 3 種實(shí)現(xiàn)形式:實(shí)現(xiàn)繼承(指使用基類的屬性和

32、方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使·247·第 4 篇 C/C+面試題實(shí)戰(zhàn)用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn))。前兩種(類繼承)和后一種(對象組合=>接口繼承以及純虛函數(shù))了功能復(fù)用的兩種方式。(3)多態(tài):是將父對象設(shè)置成為和一個或的它的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式將子類類型的指針賦值給父類類型的指針。簡單地說,就是面試題 231重載(overload)和重寫(overried)的區(qū)別【分析與】這是一個經(jīng)常會考到的題目,從定義上來說具有以下兩個方面:(1)重載:是

33、指存在多個同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。(2)重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。從實(shí)現(xiàn)原理上來說:(1)重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,對同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)(至少對于編譯器來說是這樣的)。例如,下面的代碼有兩個同名函數(shù):function func(p:integer):integer;和function func(p:string):integer;那么編譯器做過修飾后的函數(shù)名稱可能是這樣的:int_func、str_func。對于這兩個函數(shù)的調(diào)用,在編譯器間就已經(jīng)確定了,是靜態(tài)的。也就是說,

34、它們的地址在編譯期就已經(jīng)綁定了(早綁定),因此,重載和多態(tài)是沒有關(guān)系的。(2)重寫:和多態(tài)真正相關(guān)。當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針,動態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無法確定的(調(diào)用的子類的虛函數(shù)的地址無法給出)。因此,這樣的函數(shù)地址是在運(yùn)行期綁定的(晚綁定)。面試題 232多態(tài)的作用【分析與】多態(tài)是面向?qū)ο箝_發(fā)的一個特色,其作用主要是以下兩個。q 隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼能夠模塊化;擴(kuò)展代碼模塊,實(shí)現(xiàn)代碼重用。q 接口重用:為了類在繼承和派生的時候,保證使用性時的正確調(diào)用。中任一類的實(shí)例的某一屬面試題 233ADO 與 ADO.NET 有

35、何異同【分析與】除了能夠讓應(yīng)用程序處理于 DBMS 數(shù)據(jù)庫中的數(shù)據(jù)這一基本相似點(diǎn)外,兩者沒有·248·第 18 章 文字解答實(shí)戰(zhàn)題太多共同之處。但是 ADO 使用 OLE DB 接口并基于微軟的 COM 技術(shù),而 ADO.NET 擁有的 ADO.NET 接口并且基于微軟的.NET 體系架構(gòu)。眾所周知.NET 體系不同于 COM 體系,ADO.NET 接口也就完全不同于 ADO 和 OLE DB 接口,這也就是說 ADO.NET 和 ADO是兩種數(shù)據(jù)方式。ADO.NET 提供對 XML 的支持。面試題 234New delete 與 malloc free 有何與區(qū)別【分析與

36、】C/C+軟件工程師在面試的時候內(nèi)存的特別的多,這是程序安全開發(fā)的關(guān)鍵。本題題干中,這兩者都是在堆(heap)上進(jìn)行動態(tài)的內(nèi)存操作。使用 malloc 函數(shù)需要指定內(nèi)存分配的字節(jié)數(shù)并且不能初始化對象,New 會自動調(diào)用對象的構(gòu)造函數(shù)。delete 會調(diào)用對象的 destructor,而 free調(diào)用對象的 destructor.面試題 235#define DOUBLE(x) x+x,i = 5*DOUBLE(5),求 i【分析與本題主要】函數(shù)的宏定義,例如,#define DOUBLE(x) x+x 就是函數(shù)的宏定義。把宏定義展開就能計(jì)算正確的結(jié)果。將其展開:i= 5*6 + 6 = 30。

37、所以,i 為 30。面試題 236哪幾種情況只能用 intialization list 而不能用 assignment【分析與】當(dāng)類中含有 const 和 reference 等成員變量時,基類的構(gòu)造函數(shù)都需要初始化表。本題主要就是初始化關(guān)鍵字,這是 C+中非?;A(chǔ)又非常關(guān)鍵的技術(shù)點(diǎn)。面試題 237C+是不是類型安全的【分析與】不是。兩個不同類型的指針之間可以強(qiáng)制轉(zhuǎn)換(用 reinterpret cast)。回答本題時,可以先說清楚什么是類型安全,然后解釋類型安全的必要性,最后回答結(jié)果。當(dāng)然如果能很干脆地給出結(jié)果,也說明了應(yīng)聘者基礎(chǔ)還比較扎實(shí),對待問題的處理不拖泥帶水。面試題 238main

38、()函數(shù)執(zhí)行前還會執(zhí)行什么代碼【分析與】全局對象的構(gòu)造函數(shù)會在 main()函數(shù)之前執(zhí)行。筆者曾經(jīng)在 MSN 上應(yīng)聘一個的工作,當(dāng)初方面給的所有的題都是一些包含多個構(gòu)造函數(shù)的對象,的主·249·第 4 篇 C/C+面試題實(shí)戰(zhàn)要內(nèi)容就是每個構(gòu)造函數(shù)執(zhí)行的先后順序。外企公司特別注意這種題型,而初學(xué)者經(jīng)常在這方面有點(diǎn)。通過此題也希望讀者能深化面向?qū)ο蟮闹R。面試題 239static 有什么用途(至少說明兩種)【分析與】靜態(tài)變量的類型說明符是 static。靜態(tài)變量當(dāng)然是屬于靜態(tài)儲方式的變量不一定就是靜態(tài)變量。例如,外部變量雖屬于靜態(tài)方式,但是屬于靜態(tài)存方式,但不一定是靜態(tài)變量,

39、必須由 static 加以定義后才能成為靜態(tài)外部變量,或稱靜態(tài)全局變量。通過上述概念的了解,可以知道 static 的主要用途有以下兩個:q 限制變量的作用域;q 設(shè)置變量的域。面試題 240描述實(shí)時系統(tǒng)的基本特性【分析與】實(shí)時系統(tǒng)的特性就是在特定時間內(nèi)完成特定的任務(wù)、實(shí)時性與可靠性。本題其實(shí)的是應(yīng)聘者對于實(shí)時系統(tǒng)的了解程度。除了解外,還要知道它與 C 語言的關(guān)系。面試題 241全局變量和局部變量在內(nèi)存中是否有區(qū)別?說明【分析與】有區(qū)別。全局變量在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中。本題一看就知道的是基礎(chǔ)知識,了解什么是全局變量,什么是局部變量。既然名字不同,那肯定有一定的區(qū)別。如果這類問題不上來,

40、那應(yīng)聘者應(yīng)該把一本 C 語言入門書從頭到尾再讀一遍。面試題 242什么是平衡二叉樹【分析與】二叉樹是每個結(jié)點(diǎn)最多有兩個子樹的有序樹。通常子樹的根被稱作左子樹(left subtree) 和右子樹(right subtree)。應(yīng)聘者應(yīng)先了解什么是二叉樹,再去說明什么是平衡二叉樹。平衡二叉樹的左右子樹都是平衡二叉樹,且左右子樹的深度差值的絕對值不大于 1。面試題 243定義 int *a34,則變量占用的內(nèi)存空間為多少【分析與】還是常見的對 C 語言的內(nèi)存如下:,回答占用內(nèi)存空間應(yīng)該考慮 16 位和 32 位的問題,在 int *p; /*16 位下 sizeof(p)=2,32 位下 size

41、of(p)=4*/,總共 3*4*sizeof(p)。·250·第 18 章 文字解答實(shí)戰(zhàn)題面試題 244堆棧溢出一般是由什么導(dǎo)致的【分析與】堆棧溢出一般是循環(huán)的遞歸調(diào)用導(dǎo)致的。如果使用的大數(shù)據(jù)結(jié)構(gòu)的局部變量,也可能導(dǎo)致堆棧溢出。沒有回收會導(dǎo)致內(nèi)存泄露最后耗盡系統(tǒng)內(nèi)存。如果這個問題說的很清楚,則應(yīng)聘者在安全開發(fā)方面是比較在意的,面試官要的就是 C/C+語言開發(fā)的安全問題。面試題 245什么函數(shù)不能為虛函數(shù)【分析與】構(gòu)造函數(shù)不能為虛函數(shù),如下:(1)所謂虛函數(shù)就是多態(tài)情況下只執(zhí)行一個,而從繼承的概念來講,總是要先構(gòu)造父類對象,然后才能是子類對象。如果構(gòu)造函數(shù)設(shè)為虛函數(shù),那么當(dāng)

42、在構(gòu)造父類的構(gòu)造函數(shù)時就不得不顯示的調(diào)用構(gòu)造。還有一個就是為了防錯,試想如果在子類中一不重寫了一個與父類構(gòu)造函數(shù)一樣的函數(shù),那么父類的構(gòu)造函數(shù)將被覆蓋,這樣的話既不能完成父類的構(gòu)造也會出錯。(2)虛函數(shù)的主要意義在于被派生類繼承從而產(chǎn)生多態(tài)。派生類的構(gòu)造函數(shù)中,編譯器會加入構(gòu)造基類的代碼,如果基類的構(gòu)造函數(shù)用到參數(shù),則派生類在其構(gòu)造函數(shù)的初始化列表中必須為基類給出參數(shù)。面試題 246冒泡排序算法的時間復(fù)雜度是什么【分析與】冒泡排序是這樣實(shí)現(xiàn)的:首先將所有待排序的數(shù)字放入工作列表中。從列表的第一個數(shù)字到倒數(shù)第二個數(shù)字,逐個檢查:若某一位上的數(shù)字大于它的下一位,則將它與它的下一位交換。重復(fù)上述步驟

43、,直至再也不能交換。冒泡排序的平均時間復(fù)雜度與同,也是平方級的,但也是非常容易實(shí)現(xiàn)的算法。冒泡排序的時間復(fù)雜度是:O(n2)。排序相面試題 247寫出 float x 與“零值”比較的 if 語句【分析與】x 是一個變量,被定義為 float,所以在比較時,零值并不是 0,而是以下代碼:if(x>0.000001&&x<-0.000001)一般來說,對于一個浮點(diǎn)數(shù),只定義了不使用。通常我們都會對浮點(diǎn)數(shù)進(jìn)行比較復(fù)雜的運(yùn)算,那么在運(yùn)算的過程中,就有可能發(fā)生四舍五入的情況。所以,對于一個進(jìn)行了一些可能導(dǎo)致四舍五入的運(yùn)算的浮點(diǎn)數(shù)而言,不能保證它的準(zhǔn)確性(當(dāng)然這里的誤差是&#

44、183;251·第 4 篇 C/C+面試題實(shí)戰(zhàn)非常非常小的)。所以,在對浮點(diǎn)數(shù)比較的時候,就需要考慮到這些誤差,方法之一就是,讓浮點(diǎn)數(shù)與一段數(shù)值范圍比較,而不是與一個確定的數(shù)值比較。面試題 248Internet 采用哪種網(wǎng)絡(luò)協(xié)議?介紹該協(xié)議的主要層次結(jié)構(gòu)【分析與】Internet 采用的是 TCP/IP 協(xié)議。TCP/IP 協(xié)議的主要層次結(jié)構(gòu)為 5 層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。本題的是網(wǎng)絡(luò)相關(guān)知識,需要對網(wǎng)絡(luò)的層次結(jié)構(gòu)和協(xié)議有一定的了解。這些內(nèi)容非?;A(chǔ),如果應(yīng)聘網(wǎng)絡(luò)方面的工程師,則這些問題必須能回答上來。面試題 249Internet 物理地址和 IP 地址轉(zhuǎn)

45、換采用什么協(xié)議【分析與】采用 ARP(Address Resolution Protocol)即地址ARP 協(xié)議的基本功能就是通過目標(biāo)設(shè)備的 IP 地址,協(xié)議。目標(biāo)設(shè)備的 MAC 地址,以保證通信的順利進(jìn)行。地址換成目標(biāo) MAC 地址的過程。(address resolution)就是主機(jī)在幀前將目標(biāo) IP 地址轉(zhuǎn)面試題 250IP 地址的編碼分為哪兩部分【分析與】IP 地址由兩部分組成:網(wǎng)絡(luò)號和主機(jī)號。不過是要和“子網(wǎng)掩碼”按位與上之后,才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機(jī)位。本題也是的網(wǎng)絡(luò)相關(guān)知識。如果是普通的 C/C+工程師,可能這方面的問題,專門做通信或語音等相關(guān)方面的網(wǎng)絡(luò)工程師,本題很常見

46、。面試題 251不能做 switch()的參數(shù)類型是什么數(shù)據(jù)類型【分析與switch(表數(shù)不能為實(shí)型。switch()表】),表可以是整型、字符型以及枚舉類型等表。switch()的參是常見的分支選擇語句,在多條件時經(jīng)常遇到,為了更好的使用它,一定要了解這方面的知識,本題就是應(yīng)聘者的編程經(jīng)驗(yàn),因?yàn)槿绻憬?jīng)驗(yàn)豐富,則這種編程中常用表的注意事項(xiàng)難不倒應(yīng)聘者。面試題 252盡可能多地說出 static 和 const 關(guān)鍵字的作用【分析與】static 關(guān)鍵字至少有下列 n 個作用:·252·第 18 章 文字解答實(shí)戰(zhàn)題(1)函數(shù)體內(nèi) static 變量的作用范圍為該函數(shù)體,不同

47、于 auto 變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值。(2)在模塊內(nèi)的 static 全局變量可以被模塊內(nèi)所用函數(shù)數(shù)。,但不能被模塊外其他函(3)在模塊內(nèi)的 static 函數(shù)只可以被這一模塊內(nèi)的其他函數(shù)調(diào)用。這個函數(shù)的使用范圍被限制在它的模塊內(nèi)。(4) 在類中的 static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝。(5) 在類中的 static 成員函數(shù)屬于整個類所擁有,這個函數(shù)不接收 this 指針,因而只能類的 static 成員變量。const 關(guān)鍵字至少有下列 n 個作用:(1)欲一個變量被改變,可以使用 const 關(guān)鍵字。在定義該 co

48、nst 變量時,通常需要對它進(jìn)行初始化,因?yàn)橐院缶蜎]有機(jī)會再去改變它了。(2)對指針來說,可以指定指針本身為 const;也可以指定指針?biāo)傅臄?shù)據(jù)為 const, 或二者同時指定為 const。(3)在一個函數(shù)能改變其值。中,const 可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不(4) 對于類的成員函數(shù),若指定其為 const 類型,則表明其是一個常函數(shù),不能修改類的成員變量。(5) 對于類的成員函數(shù),有時候必須指定其返回值為 const 類型,以使得其返回值不為“”,例如下面的代碼:const classA operator*(const classA& a1,const cl

49、assA& a2);operator*的返回結(jié)果必須是一個 const 對象。如果不是,這樣的代碼也編譯出錯:操作(a * b) = c 顯然不符合編程者的初衷,也沒有任何意義。%注意:看到上面的代碼,讀者也許會覺得有一點(diǎn)驚訝。很普通的 static 和 const 居然有這么多功能,這個題可以考查面試者對程序設(shè)計(jì)知識的掌握程度是初級、中級還是比較深入,如果沒有一定的知識廣度和深度,不可能對這個問題給出全面地解答。大多數(shù)人只能回答出 static 和 const 關(guān)鍵字的部分功能。面試題 253什么是預(yù)編譯【分析與】預(yù)編譯就是處理#開頭的指令。例如,拷貝#include 包含的文件代碼

50、,#define 宏定義的替換和條件編譯等。預(yù)編譯就是為編譯做的預(yù)備工作的階段,主要處理#開始的預(yù)編譯指令。預(yù)編譯指令指示了在程序正式編譯前就由編譯器進(jìn)行的操作,可以放在位置。何時需要預(yù)編譯,具體如下:的任何·253·classA a, b, c;(a * b) = c;/對 a*b 的結(jié)果賦值第 4 篇 C/C+面試題實(shí)戰(zhàn)(1)總是使用不經(jīng)常改動的大型代碼體。(2)多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個預(yù)編譯頭。面試題 254寫一個,使其輸入兩個參數(shù),返回較小的一個【分析與本題就是】宏定義,注意最后沒有

51、分號結(jié)尾。詳細(xì)代碼如下:.#define Min(X, Y) (X)>(Y)?(Y):(X) /結(jié)尾沒有;面試題 255系統(tǒng)中如何用 C 語言編寫死循環(huán)【分析與】如果不是常面試的人可能不知道,題目竟然是要使用 C 語言來編寫死循環(huán),這不是影響程序的進(jìn)行嘛?但筆者面試過很多公司,這個問題還是非常多見的。因?yàn)轭}目的前提是系統(tǒng)中經(jīng)常遇到無限循環(huán),也就是我們while(1)或者 for(;)的死循環(huán)。如下:面試題 256int (*s10)(int)表示什么【分析與】學(xué)習(xí) C 語言時,覺得指針是最基礎(chǔ)卻又最難的一項(xiàng)技術(shù),面試題基本都會碰到,但一旦學(xué)習(xí)好它,就很容易過關(guān)。本題的就是數(shù)組指針。int

52、 (*s10)(int)函數(shù)指針數(shù)組,將每個指針指向一個 int func(int param)的函數(shù)。面試題 257下列表哪些會被編譯器(面試題)題目:【分析與】指針和變量定義相關(guān)方面的知識,非常基礎(chǔ),如下:·254·int a=248; b=4;int const c=21; const int *d=&a; int *const e=&b;int const *f const =&a;*c=32; d=&b;*d=43;e=34;e=&a; f=0x321f;第 18 章 文字解答實(shí)戰(zhàn)題(1)*c 語法錯誤,所以。(2)*d 已

53、經(jīng)定義了是 const,所以(3)e = &a 已經(jīng)定義了是 const,所以。(4)const *f const =&a,。面試題 258換兩個變量的值而不使用第 3 個變量,即 a=3,b=5,交換之后 a=5,b=3【分析與】有兩種解法:一種是使用算術(shù)算法,另一種是使用(異或)。示例代碼如下:和:面試題 259C 和 C+中的 struct 有什么不同【分析與】在 C 和 C+中,struct 的主要區(qū)別是 C 中的 struct 不可以含有成員函數(shù),而 C+中的struct 可以。在 C+中 struct 和 class 的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,struct

54、默認(rèn)為public,而 class 默認(rèn)為 private。面試題 260如何讓程序跳轉(zhuǎn)到絕對地址 0x100000 去執(zhí)行要對絕對地址 0x100000 賦值,可以用(unsigned int*)0x100000 = 1234。那么如何讓程序跳轉(zhuǎn)到絕對地址 0x100000 去執(zhí)行?【分析與】 *(void (*)( )0x100000 ) ( );首先要將 0x100000 強(qiáng)制轉(zhuǎn)換成函數(shù)指針,即:(void (*)()0x100000;然后再調(diào)用它,即: *(void (*)()0x100000)();用 typedef 可以看得更直觀些,如下:·255·typedef void(*)() voidFuncPtr;*(voidFuncPtr)0x100000)();a = ab;/ 只能對 int,char. b = ab;a = ab; ora = b = a;a = a + b; b

溫馨提示

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

評論

0/150

提交評論