中興面試準備_第1頁
中興面試準備_第2頁
中興面試準備_第3頁
中興面試準備_第4頁
中興面試準備_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、筆試:數據結構,數據庫,軟件工程,C比較少C語言(讀程序,寫程序,字節(jié)對齊) 指針,宏,switch,strcpy函數指針(詳見文檔)char * const cp; ( * 讀成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; 變量的存儲類別1. 局部變量自動變量(auto,離開函數,值就消失,每次重新賦值)靜態(tài)局部變量(函數內static定義的變量,離開函數,值仍存在)寄存器變量(register,離開函數,值就消失,只有局部自動變量和形式參數可以作為寄存器變量

2、)2. 全局變量靜態(tài)外部變量(只限本文件引用)外部變量(非靜態(tài)的外部變量,允許其他文件引用)一冒泡法冒泡法的適合與局部有序的序列,越是有序,時間復雜度越低,所以時間復雜度介于O(1)O(n2),而樓主的那種選擇排序時間復雜度是不變的,總是O(n2).   這兩種方法都是可以改進的,前面幾樓提到的快速排序就是冒泡的改進。冒泡(須要進行幾次比較,即比較次數為i*j。)void   sort(int   arr,int   n)         int   i,j,temp;     

3、60;   for(i=0;   i <n-1;   i+)      / i表示總共要進行幾輪比較,                                         for(j=0;   j <n-i-1;   j+)  / j表示在第幾輪排序中     &#

4、160;                                           if(arrj> arrj+1)                                     &#

5、160;                             temp=arrj;                                 arrj=arrj+1;                  

6、;               arrj+1=temp;                                                 選擇 void   sort(int   arr,int   n)      

7、;   int   i,j,temp;         for(i=0;   i <n-1;   i+)                         for(j=i+1;   j <n;   j+)                        

8、;                 if   (arri> arrj)                                                              

9、                                                         temp=arri;                           &

10、#160;     arri=arrj;                                 arrj=temp;                                          

11、       二0和1不是素數三字節(jié)對齊什么是對齊,以及為什么要對齊:1. 現代計算機中內存空間都是按照byte劃分的,從理論上講似乎對任何類型的變量的訪問可以從任何地址開始,但實際情況是在訪問特定變量的時候經常在特定的內存地址訪問,這就需要各類型數據按照一定的規(guī)則在空間上排列,而不是順序的一個接一個的排放,這就是對齊。2. 對齊的作用和原因:各個硬件平臺對存儲空間的處理上有很大的不同。一些平臺對某些特定類型的數據只能從某些特定地址開始存取。其他平臺可能沒有這種情況, 但是最常見的是如果不按照適合其平臺的要求對數據存放進行對齊,會在存取效率上帶來損失。比如有些平臺

12、每次讀都是從偶地址開始,如果一個int型(假設為 32位)如果存放在偶地址開始的地方,那么一個讀周期就可以讀出,而如果存放在奇地址開始的地方,就可能會需要2個讀周期,并對兩次讀出的結果的高低 字節(jié)進行拼湊才能得到該int數據。顯然在讀取效率上下降很多。這也是空間和時間的博弈。二、對齊的實現通常,我們寫程序的時候,不需要考慮對齊問題。編譯器會替我們選擇適合目標平臺的對齊策略。當然,我們也可以通知給編譯器傳遞預編譯指令而改變對指定數據的對齊方法。但是,正因為我們一般不需要關心這個問題,所以因為編輯器對數據存放做了對齊,而我們不了解的話,常常會對一些問題感到迷惑。最常見的就是struct數據結構的s

13、izeof結果,出乎意料。為此,我們需要對對齊算法所了解。這里面有四個概念值:1)數據類型自身的對齊值:就是上面交代的基本數據類型的自身對齊值。2)指定對齊值:#pragma pack (value)時的指定對齊值value。3)結構體或者類的自身對齊值:其成員中自身對齊值最大的那個值。4)數據成員、結構體和類的有效對齊值:自身對齊值和指定對齊值中較小的那個值。有了這些值,我們就可以很方便的來討論具體數據結構的成員和其自身的對齊方式。有效對齊值N是最終用來決定數據存放地址方式的值,最重要。有效對齊N,就 是表示“對齊在N上”,也就是說該數據的"存放起始地址%N=0".而數據

14、結構中的數據變量都是按定義的先后順序來排放的。第一個數據變量的起始地址就是 數據結構的起始地址。結構體的成員變量要對齊排放,結構體本身也要根據自身的有效對齊值圓整四Swtichswitch(c)中的c的數據類型有哪些?Char, int, bool,long;不能是float,long double,double這類型的你是否在所有的switch中都加了default語句?是否在所有的case中都加了break語句(一般情況的做法)?如果你不加break,將會發(fā)生什么?不加break,則順序執(zhí)行下面的所有case,因為case常量表達式只是起到語句標號作用,并不在該處進行條件判斷。五字符串相關

15、問題,Strcpy函數char a="hello"sizeof(a)=6strlen(a)=5char *strcpy1(char *strDest , const char *strSrc) assert(strDest!=NULL) && (strSrc!=NULL); /斷言判斷指針不能為空 char *temp = strDest; while(*strDest+ = *strSrc+)!='0');/取每一個字逐一符賦值改變指針指,變量本身值也改變 /(先取值再賦值,循環(huán),判斷) return temp; ² 【建議 6-

16、2-1】有時候函數原本不需要返回值,但為了增加靈活性如支持鏈式表達,可以附加返回值。 例如字符串拷貝函數 strcpy 的原型: char *strcpy(char *strDest,const char *strSrc); strcpy 函數將 strSrc 拷貝至輸出參數 strDest 中,同時函數的返回值又是 strDest。這樣做并非多此一舉,可以獲得如下靈活性: char str20; int length = strlen( strcpy(str, “Hello World”) ); 計算機網絡 OSI模型,TCP/IP協議(詳見文檔),移動聯通電信的3G制式一OSI模型 OSI

17、模型的各個層次為:n 應用層 這是OSI模型中的最高層次,它負責管理網絡應用程序之間的交流。這一層并不是應用程序本身,盡管有一些應用程序可能會執(zhí)行應用層的功能。應用層協議的例子包括文件傳輸協議(FTP)、超文本傳輸協議(HTTP)、簡單郵件傳送協議(SMTP)和Telnet。n 表示層 這層負責數據演示、加密與壓縮。n 會話層 會話層負責建立并管理終端系統(tǒng)之間的對話。會話層協議在很多協議中都不使用。會話層協議的例子包括NetBIOS與遠程過程調用(RPC)。n 傳輸層 這層負責程序或者過程之間的交流。端口或者插口的數目可以用來識別這些特殊的過程。傳輸層協議的例子包括傳輸控制協議(TCP)、用戶

18、數據報協議(UDP)和順序分組交換協議(SPX)。n 網絡層 這層負責從來源主機訪問,并向目的主機傳送的數據包。網絡層從傳輸層得到數據,把它裝在一個數據包或者數據報中。邏輯網址通常被分配給這層的主機。網絡層協議的例子包括IP與IPX。n 數據鏈接層 這層負責在相同的物理區(qū)段中的網卡之間傳輸數據。數據鏈接層進行的對話通常都是基于硬件的地址進行的。數據鏈接層把來自網絡層的數據包裝到一個幀中。數據鏈接層協議的例子包括以太網、令牌環(huán)與點對點協議(PPP)。在這層運行的設備包括連接橋與交換機。n 物理層 這層定義了連接器和接線方式,還有關于電壓和字節(jié)如何通過有線(或無線)介質傳播的說明。這層的設備包括中

19、繼器、集中器和Hub。在物理層運行的設備不需要了解傳輸路徑。二移動聯通電信的3G制式GSM  指的是第二代移動通信技術。CDMA    也是第二代移動通信技術。最初由聯通運營,后來賣給電信。聯通3G   就是WCDMA網絡。是聯通從歐洲引技術的第三代移動通信技術,是目前全球應用最廣,技術最成熟的3G網絡。移動3G   就是TD-SCDMA網絡,是中國自主研發(fā)的3G網絡。電信3G  就是CDMA2000網絡。也是引進技術,是從CDMA的基礎上升級的3G網絡。3G主流的網絡一共有4種:WCDMA。TD-SCD

20、MA、CDMA2000。WIMAXWCDMA(聯通)CDMA2000(電信)TD_SCDMA(移動)定義Wideband Code Division Multiple Access(寬帶碼分多址)的英文簡稱,這是基于GSM網發(fā)展出來的3G技術規(guī)范,是歐洲提出的寬帶CDMA技術。該標準提出了GSM(2G)GPRSEDGEWCDMA(3G)的演進策略。目前中國聯通正在采用這一方案向3G過渡,并已將原有的GSM網絡升級為GPRS網絡。CDMA2000是由窄帶CDMA(CDMA IS95)技術發(fā)展而來的寬帶CDMA技術,由美國主推,該標準提出了從CDMA IS95(2G)CDMA20001xCDMA2

21、0003x(3G)的演進策略。CDMA20001x被稱為2.5代移動通信技術。CDMA20003x與CDMA20001x的主要區(qū)別在于應用了多路載波技術,通過采用三載波使帶寬提高。目前中國電信正在采用這一方案向3G過渡,并已建成了CDMA  IS95網絡。全稱為Time Division-Synchronous CDMA(時分同步CDMA),是由我國大唐電信公司提出的3G標準,該標準提出不經過2.5代的中間環(huán)節(jié),直接向3G過渡,非常適用于GSM系統(tǒng)向3G升級。目前中國移動正在采用這一方案向3G過渡相同點WCDMA、CDMA2000與TDSCDMA都屬于寬帶CDMA技術。WC

22、DMA、CDMA2000與TD-SCDMA都能在靜止狀態(tài)下提供2Mbit/s的數據傳輸速率雙工模式采用FDD(頻分數字雙工)模式,采用TDD(時分數字雙工)模式。WCDMA與CDMA2000能夠支持移動終端在時速500公里左右時的正常通信,而TD-SCDMA只能支持移動終端在時速120公里左右時的正常通信。TD-SCDMA在高速公路及鐵路等高速移動的環(huán)境中處于劣勢。碼片速率與載波帶寬WCDMA(FDD-DS)采用直接序列擴頻方式,其碼片速率為3.84Mchip/s。,WCDMA在這方面最具優(yōu)勢。載波帶寬方面,WCDMA采用了直接序列擴譜技術,具有5MHz的載波帶寬。   

23、     WCDMA與CDMA2000要傳送2Mbit/s的數據業(yè)務,均需要兩個對稱的帶寬,分別作為上、下行頻段,因而TD-SCDMA對頻率資源的利用率是最高的。CDMA20001x與CDMA20003x的區(qū)別在于載波數量不同,CDMA20001x為單載波,碼片速率為1.2288Mchip/s,CDMA20003x為三載波,其碼片速率為1.2288×33.6864Mchip/s。CDMA20001x采用了1.25MHz的載波帶寬,CDMA20003x利用三個1.25MHz載波的合并形成3.75MHz的載波帶寬。TDSCDMA系統(tǒng)僅采用1.28M

24、chip/s的碼片速率,采用TDD雙工模式,因此只需占用單一的1.6M帶寬,就可傳送2Mbit/s的數據業(yè)務。而TD-SCDMA的碼片速率為1.28Mchip/s。碼片速率高能有效地利用頻率選擇性分集以及空間的接收和發(fā)射分集,可以有效地解決多徑問題和衰落問題越區(qū)切換技術WCDMA與CDMA2000都采用了越區(qū)“軟切換”技術。由于軟切換在瞬間同時連接兩個基站,對信道資源占用較大。而WCDMA無需基站間的同步,通過兩個基站間的定時差別報告來完成軟切換。TD-SCDMA則是采用了越區(qū)“接力切換”技術,WCDMA的網絡在許多環(huán)境下更易于部署,即使在地鐵等GPS信號無法到達的地方也能安裝基站,實現真正的

25、無縫覆蓋。CDMA2000與TD-SCDMA都需要基站間的嚴格同步,因而必須借助GPS(Global  Positioning System,全球定位系統(tǒng))等設備來確定手機的位置并計算出到達兩個基站的距離。由于GPS依賴于衛(wèi)星,CDMA2000與TD-SCDMA的網絡布署將會受到一些限制。與第二代系統(tǒng)的兼容性由GSM網絡過渡而來,雖然可以保留GSM核心網絡,但必須重新建立WCDMA的接入網,并且不可能重用GSM基站。WCDMA在升級的過程中耗資最大。CDMA20003x從CDMA  IS95、CDMA20001x過渡而來,可以保留原有的CDMA IS95

26、設備。TD-SCDMA系統(tǒng)的的建設只需在已有的GSM網絡上增加TD-SCDMA設備即可。Linux部分一個初始化變量和未初始化變量編譯后在LINIUX系統(tǒng)中分配在什么段 首先要看你的變量是否為全局變量,如果是全局變量,程序只要跑起來,其就會占用內存空間。如果只是局部變量,這個變量只有在其作用域被執(zhí)行到的時候,才會在棧里面分配空間。針對樓主所說為局部變量時:編譯的時候是不會分配內存的,只有到運行用的時候才會分配未初始化全局會在主函數開始前進行清零初始工作。也是發(fā)生在運行時!數據結構 鏈表,堆,棧,(堆和棧詳細區(qū)別看文檔記錄)一個由C/C+編譯的程序占用的內存分為以下幾個部分  

27、0; 1、棧區(qū)(stack)   由編譯器自動分配釋放   ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。    2、堆區(qū)(heap)      一般由程序員分配釋放,   若程序員不釋放,程序結束時可能由OS回收   。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。    3、全局區(qū)(靜態(tài)區(qū))(static),全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的    全局變量和靜態(tài)

28、變量在一塊區(qū)域,   未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。   -   程序結束后由系統(tǒng)釋放。    4、文字常量區(qū)   常量字符串就是放在這里的。   程序結束后由系統(tǒng)釋放    5、程序代碼區(qū)存放函數體的二進制代碼。 數組和鏈表的區(qū)別,及各自優(yōu)缺點 解答一:A 從邏輯結構來看A-1. 數組必須事先定義固定的長度(元素個數),不能適應數據動態(tài)地增減的情況。當數據增加時,可能超出原先定義的元素個數;當數據減少時,造成內存浪費

29、。A-2. 鏈表動態(tài)地進行存儲分配,可以適應數據動態(tài)地增減的情況,且可以方便地插入、刪除數據項。(數組中插入、刪除數據項時,需要移動其它數據項)B 從內存存儲來看B-1. (靜態(tài))數組從棧中分配空間, 對于程序員方便快速,但是自由度小B-2. 鏈表從堆中分配空間, 自由度大但是申請管理比較麻煩解答二:鏈表和數組一樣是一種數據結構。數組是將元素在內存中連續(xù)存放,由于每個元素占用內存相同,所以可以通過下標迅速訪問數組中任何元素。但是如果要在數組中增加一個元素,需要移動大量元素,在內存中空出一個元素的空間,然后將要增加的元素放在其中。同樣的道理,如果想刪除一個元素,同樣需要移動大量元素去填掉被移動的

30、元素。  鏈表恰好相反,鏈表中的元素在內存中不是順序存儲的,而是通過存在元素中的指針聯系到一起。如:上一個元素有個指針指到下一個元素,以此類推,直到最后一個元素。如果要訪問鏈表中一個元素,需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對于鏈表數據結構就非常簡單了, 只要修改元素中的指針就可以了。從上面的比較可以看出,如果需要快速訪問數據,很少或不插入和刪除元素,就應該用數組;相反, 如果需要經常插入和刪除元素就需要用鏈表數據結構了。算法的時間復雜度算法復雜度分為時間復雜度和空間復雜度。其作用: 時間復雜度是度量算法執(zhí)行的時間長短;而

31、空間復雜度是度量算法所需存儲空間的大小。常用的算法的時間復雜度和空間復雜度排序法 最差時間分析平均時間復雜度 穩(wěn)定度 空間復雜度 冒泡排序O(n2)O(n2) 穩(wěn)定 O(1) 快速排序O(n2)O(n*log2n) 不穩(wěn)定 O(log2n)O(n) 選擇排序O(n2)O(n2) 穩(wěn)定 O(1) 二叉樹排序O(n2)O(n*log2n) 不穩(wěn)定 O(n) 插入排序 O(n2)O(n2) 穩(wěn)定 O(1) 堆排序O(n*log2n) O(n*log2n) 不穩(wěn)定 O(1) 希爾排序OO 不穩(wěn)定 O(1)平均算法復雜度計算比較復雜,可按如下三個步驟進行:1. 將所有的輸入按其執(zhí)行時間分類2. 確定每類

32、輸入發(fā)生的概率3. 確定每類輸入的執(zhí)行時間4.按概率公式,求平均時間復雜度1、時間復雜度 (1)時間頻度 一個算法執(zhí)行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個算法都上機測試,只需知道哪個算法花費的時間多,哪個算法花費的時間少就可以了。并且一個算法花費的時間與算法中語句的執(zhí)行次數成正比例,哪個算法中語句執(zhí)行次數多,它花費時間就多。一個算法中的語句執(zhí)行次數稱為語句頻度或時間頻度。記為T(n)。 (2)時間復雜度 在剛才提到的時間頻度中,n稱為問題的規(guī)模,當n不斷變化時,時間頻度T(n)也會不斷變化。但有時我們想知道它變化時呈現什么規(guī)律。為此,我們

33、引入時間復雜度概念。 一般情況下,算法中基本操作重復執(zhí)行的次數是問題規(guī)模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得當n趨近于無窮大時,T(n)/f(n)的極限值為不等于零的常數,則稱f(n)是T(n)的同數量級函數。記作T(n)=(f(n),稱(f(n) 為算法的漸進時間復雜度,簡稱時間復雜度。 在各種不同算法中,若算法中語句執(zhí)行次數為一個常數,則時間復雜度為O(1),另外,在時間頻度不相同時,時間復雜度有可能相同,如T(n)=n2+3n+4與T(n)=4n2+2n+1它們的頻度不同,但時間復雜度相同,都為O(n2)。 按數量級遞增排列,常見的時間復雜度有:常數階O(1),對

34、數階O(log2n),線性階O(n), 線性對數階O(nlog2n),平方階O(n2),立方階O(n3),., k次方階O(nk),指數階O(2n)。隨著問題規(guī)模n的不斷增大,上述時間復雜度不斷增大,算法的執(zhí)行效率越低。 2、空間復雜度 與時間復雜度類似,空間復雜度是指算法在計算機內執(zhí)行時所需存儲空間的度量。記作: S(n)=O(f(n) 我們一般所討論的是除正常占用內存開銷外的輔助存儲單元規(guī)模。討論方法與時間復雜度類似,不再贅述。 (3)漸進時間復雜度評價算法時間性能 主要用算法時間復雜度的數量級(即算法的漸近時間復雜度)評價一個算法的時間性能。 2、類似于時間復雜度的討論,一個算法的空間復

35、雜度(Space Complexity)S(n)定義為該算法所耗費的存儲空間,它也是問題規(guī)模n的函數。漸近空間復雜度也常常簡稱為空間復雜度。 空間復雜度(Space Complexity)是對一個算法在運行過程中臨時占用存儲空間大小的量度。一個算法在計算機存儲器上所占用的存儲空間,包括存儲算法本身所占用的存儲空間,算法的輸入輸出數據所占用的存儲空間和算法在運行過程中臨時占用的存儲空間這三個方面。算法的輸入輸出數據所占用的存儲空間是由要解決的問題決定的,是通過參數表由調用函數傳遞而來的,它不隨本算法的不同而改變。存儲算法本身所占用的存儲空間與算法書寫的長短成正比,要壓縮這方面的存儲空間,就必須編寫出

溫馨提示

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

評論

0/150

提交評論