IT公司筆試面試題系列(九)
1.一個類有基類、內部有一個其他類的成員對象,構造函數的執行順序是怎樣的。
答:先執行基類的(如果基類當中有虛基類,要先執行虛基類的,其他基類則按照聲明派生類時的順序依次執行),再執行成員對象的,最後執行自己的。
2.在UML 中,聚合(aggregation)和組合(composition)有什麼區別
答案:聚合關係更強,類似於pages 和book 的關係;組合關係要弱,類似於books和bookshelf 的關係。
3.C#和C++除了語法上的差別以外,有什麼不同的地方?
答案:(C#我只是瞭解,不是很精通)
(1) c#有垃圾自動回收機制,程序員不用擔心對象的回收。(2)c#嚴禁使用指針,只能處理對象。如果希望使用指針,則僅可在unsafe 程序塊中能使用指針。(3)c#只能單繼承。(4)必須通過類名訪問靜態成員。不能像C++中那樣,通過對象訪問靜態成員。(5)在子類中覆蓋父類的虛函數時必須用關鍵字override,覆蓋父類的方法要用關鍵字new
和ADO 的區別?
答案:實際上除了“能夠讓應用程序處理存儲於DBMS 中的數據“這一基本相似點外,兩者沒有太多共同之處。但是ADO 使用OLE DB 接口並基於微軟的COM 技術,而 擁有自己的 接口並且基於微軟的 體系架構。衆所周知 體系不同於COM 體系, 接口也就完全不同於ADO和OLE DB 接口,這也就是說 和ADO是兩種數據訪問方式。 提供對XML 的支持。
與malloc free 的區別
答案:用malloc 函數不能初始化對象,new 會調用對象的構造函數。Delete 會調用對象的destructor,而free 不會調用對象的destructor.
6.#define DOUBLE(x) x+x
i = 5*DOUBLE(10); i 是多少?正確的聲明是什麼?
答案:i 爲60。正確的聲明是#define DOUBLE(x) (x+x)
7.有哪幾種情況只能用intialization list 而不能用assignment?
答案:當類中含有const、reference 成員變量;基類的構造函數都需要參數;類中含有其他類的成員對象,而該類的構造函數都需要參數。
8.C++是不是類型安全的?
答案:不是。兩個不同類型的指針之間可以強制轉換。C#是類型安全的。
函數執行以前,還會執行什麼代碼?
答案:全局對象的構造函數會在main 函數之前執行。
10.比較一下C++中static_cast 和 dynamic_cast 的區別。
dynamic_casts在幫助你瀏覽繼承層次上是有限制的。它不能被用於缺乏虛函數的類型上,它被用於安全地沿着類的繼承關係向下進行類型轉換。如你想在沒有繼承關係的類型中進行轉換,你可能想到static_cast
11.在8086 彙編下,邏輯地址和物理地址是怎樣轉換的.?
答案:通用寄存器給出的地址,是段內偏移地址,相應段寄存器地址*10H+通用寄存器內地址,就得到了真正要訪問的地址。
12.類成員函數的重載、覆蓋和隱藏區別
答案:
成員函數被重載的特徵:
(1)相同的範圍(在同一個類中);
(2)函數名字相同;
(3)參數不同;
(4)virtual 關鍵字可有可無。
覆蓋是指派生類函數覆蓋基類函數,特徵是:
(1)不同的範圍(分別位於派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual 關鍵字。
“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,規則如下:
(1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
(2)如果派生類的函數與基類的函數同名,並且參數也相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆)
13.如何判斷一段程序是由C 編譯程序還是由C++編譯程序編譯的?
答案:
#ifdef __cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
14.數組a[N],存放了1至N-1個數,其中某個數重複一次。寫一個函數,找出被重複的數字.時間複雜度必須爲o(N)函數原型:int do_dup(int a[],int N)
答案:方法1:如果數就是1-N-1,那麼求出a[N]的和,然後減去1-N-1就行了。(確定數字1-N)
S = N * (N-1) / 2;
int i;
int s = 0;
for(i=0;i{
s += a[i];
}
int res = s - S;
方法2.a[]中的某元素a[i]看做是pi[]數組的下標,元素a[i]存儲到對應數組下標pi[a[i]]的地址中
#include
#define N 10
void main()
{
int a[N]={1,2,3,4,5,6,7,7,8,9};
int pi[N]={0};
int key=0;
for(int i=0;i{ if(pi[a[i]]==0)
pi[a[i]]=a[i];
else
{ key=a[i];
break;
}
}
printf("多餘的數字是%dn",key);
}
15.一語句實現x是否爲2的若干次冪的判斷
位運算
int i = 512; cout << boolalpha << ((i & (i - 1)) ? false : true) << endl;
16.什麼是預編譯?何時需要預編譯?
1、總是使用不經常改動的大型代碼體。
2、程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯爲一個預編譯頭。
-
外管局單位筆試經驗分享
1、什麼是流動性陷阱有一種觀點:日本的貨幣政策無效是因爲其投資回報率太低,如果日本的財政政策也無效,是否能說明日本不存在流動性陷阱?2、名詞解釋:貨幣數量論、貨幣幻覺、有效市場價說微觀經濟:給了兩家公司的支付矩陣,問是否存在納什均衡的`問題,投資分析:1、一家...
-
精選微軟筆試經驗
微軟筆試經驗1.技術基礎這方面的題目主要以c、c++和數據結構爲主,也就是大家經常看到的那些題目。雖然微軟會說你可以用任何你熟悉的語言實現,但是有些東西,特別是底層些的,一般java和c#等其他高層語言用慣了的人肯定會比較忽視。所以c、c++和數據結構還是基礎。不...
-
分享綠盟筆試經驗
今天下午去參加綠盟筆試,綠盟啊,全國數一數二的信息安全公司,我大一剛進學校就有所瞭解了,那時他們來學校做過講座。像我們這樣學信息安全的,最理想的就是去綠盟了,所以雖然只是這麼一個國內公司,還整了個全國好幾場筆試。去了,好像有很多和我一樣是本科生,心安了不少。...
-
上週五的面試-三個小時的筆試+面試
上週四接到一個面試電話,lz一聽離家很近就趕緊答應了,去之前做了下功課,那機構是某國企下屬子公司,最新成立的,做藝術品的。職位匹配度還不錯,離lz家只有4公里。對方先是邀約上午9點面試,lz覺得太早了,改爲下午1點。好,正式說面試,到了後,先看環境,是在個商住兩用的樓裏,位...