1、static有什么用途?(請至少說明兩種)
(1).限制變量的作用域(變量、函數(shù)只能在該文件中使用)
(2).設(shè)置變量的存儲域 (在全局區(qū)分配內(nèi)存)
2、引用與指針有什么區(qū)別?
1) 引用必須被初始化,指針不必。 (引用是給變量起一個別名,所以要指明是那么變量,使用int a;int &rc=a)
2) 引用初始化以后不能被改變,指針可以改變所指的對象。
3) 不存在指向空值的引用,但是存在指向空值的指針。 int &rc=NULL ; //ERROR
4)不能建立引用的引用,不能建立指向引用的
指針。因為引用不是一種數(shù)據(jù)類型,所以沒有引用的引用,沒有引用的指針。 但是可以建立指向指針的指針、
注意:可以建立指針的引用,相當(dāng)于給指針起一個別名。
5)不能建立
數(shù)組的引用。因為數(shù)組是一個由若干個元素所組成的集合,所以無法建立一個數(shù)組的別名,但是可以建立指向數(shù)組的指針
3、描述實時系統(tǒng)的基本特性
在特定時間內(nèi)完成特定的任務(wù),實時性與可靠性(
時鐘信號能夠準(zhǔn)確的定時) (所謂“實時操作系統(tǒng)”,實際上是指操作系統(tǒng)工作時,其各種資源可以根據(jù)需要隨時進(jìn)行動態(tài)分配。由于各種資源可以進(jìn)行動態(tài)分配,因此其處理事務(wù)的能力較強(qiáng)、速度較快。 早期的操作系統(tǒng)的各種資源都是事先已經(jīng)分配好的,工作期間這些資源不能再重新進(jìn)行分配。因此其處理事務(wù)的能力較差、速度較慢,現(xiàn)在則稱之為“非實時操作系統(tǒng)”。但“非實時操作系統(tǒng)”誕生時,其功能、性能等在當(dāng)時也是非常強(qiáng)的,人們在未認(rèn)識到更好的操作系統(tǒng)之前并不將其這樣稱呼。將來如果新的、功能更強(qiáng)的、實時性能更高的操作系統(tǒng)出現(xiàn),也許現(xiàn)在稱之為“實時”的操作系統(tǒng)則可能將讓位于新的“實時操作系統(tǒng)”了。從這方面講“實時操作系統(tǒng)”是一個相對的概念的)
4、 全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?
全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧
那么有那些是全局變量呢?
(1)、外部變量 ,定義在函數(shù)(或者主函數(shù))前。但其使用只能在定義后。加上在別的文件中使用要加上extent聲明。
(2)、static表明的全局的靜態(tài)變量。只在定義文件有效。、
局部變量包括三種類型:自動型(auto)、靜態(tài)型(static)和寄存器型(register)
auto型就是我們平時定義的類型,默認(rèn)為auto
static表明為局部靜態(tài)變量,主要性能是只被初始化一次,下次進(jìn)入該函數(shù)時該變量是上次運行結(jié)束后的值。
register作用是定義寄存器變量,為了讓變量計算速度更快。
5、什么是平衡二叉樹?
左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1
掌握4種旋轉(zhuǎn)。
單向向右旋型:在結(jié)點左子樹插入左子樹。
單向向左旋型:在結(jié)點右子樹插入右子樹。
先左后右:在結(jié)點左子樹插入右子樹。
先右后左:在結(jié)點右子樹插入左子樹。
算法參考http://www.shnenglu.com/Cass/archive/2011/10/04/157454.html
6、堆棧溢出一般是由什么原因?qū)е碌模?舉例說明。
(堆棧溢出就是不顧堆棧中分配的局部數(shù)據(jù)塊大小,向該數(shù)據(jù)塊寫入了過多的數(shù)據(jù),導(dǎo)致數(shù)據(jù)越界,結(jié)果覆蓋了老的堆棧數(shù)據(jù)。)
沒有回收垃圾資源
層次太深的遞歸調(diào)用
7、什么函數(shù)不能聲明為虛函數(shù)?
constructor //構(gòu)造函數(shù)與析構(gòu)函數(shù)
那么什么是虛函數(shù)、為什么說虛函數(shù)是實現(xiàn)面向?qū)ο蟮亩鄳B(tài)性參考http://www.shnenglu.com/Cass/archive/2011/09/30/157249.html
8、冒泡排序算法的時間復(fù)雜度是什么?
O(n^2)
那么,各種排序的復(fù)雜度分析如下:
(1)、冒泡排序:兩數(shù)比較,小的往前放大的往后。復(fù)雜度O(n^2) ,是一種穩(wěn)定的排序算法、。
(2)、選擇排序:序列中選出最小(大)值,擺在前面。復(fù)雜度O(n^2) ,是一種不穩(wěn)定的排序算法。
(3)、插入排序:O(n^2)。穩(wěn)定
①、簡單直接插入:把序列分成兩斷。有序和無序。循環(huán)把無序段插入有序段。復(fù)雜度為O(n^2) ,是一種穩(wěn)定的排序。需要后移元素。
②、折半排序:是直接排序與折半查找的結(jié)合。時間復(fù)雜度為O(n^2)。是穩(wěn)定的排序
(4)、快速排序:設(shè)key=e[0].作為關(guān)鍵數(shù)據(jù)。兩個游標(biāo) K=1;J=N-1; J往前找第一個比Key小的元素,交換。K往后找第一個比key大的元素,交換
(5)、歸并排序:待排序序列分為若干個子序列,每個子序列是有序的,時間復(fù)雜度為O(nlogn),穩(wěn)定
參考:http://www.shnenglu.com/Cass/archive/2011/10/13/158249.html
(6)、堆排序:O(nlogn)。 不穩(wěn)定的排序算法
參考http://www.shnenglu.com/Cass/archive/2011/10/01/157298.html
(7)、基數(shù)排序:
(8)、希爾排序:
:
注意:判斷算法穩(wěn)定排序的依據(jù)。
假定在待排序的記錄序列中,存在多個具有相同的關(guān)鍵字的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,則稱這種排序算法是穩(wěn)定的;否則稱為不穩(wěn)定的。
///////////////////////////待續(xù)、
posted on 2011-10-12 00:21
Yu_ 閱讀(706)
評論(0) 編輯 收藏 引用 所屬分類:
The Interview