第一篇:知名IT企業(yè)程序員面試過程及面試題目
知名IT企業(yè)程序員面試過程及面試題目
發(fā)表時間:2009-09-04 09:38:24.0 作者:CBISMB編輯 來源:中小企業(yè)IT采購
華為
1)筆試可以選擇JAVA和C++。
其中一個編程題:用數(shù)組實現(xiàn)棧,首席技術(shù)官(cto.icxo.com)并且當棧空間滿時,??臻g增加一倍。
2)面試:IT類或者管理類。
一面:技術(shù)面試,40分鐘,問的很細,UML,單點登錄,J2EE
二面:綜合面試,20分鐘一個項目完整的經(jīng)歷
三面:HR,職業(yè)規(guī)劃,優(yōu)勢與劣勢,期望工資與工作地點。
四面:決策層面試。一般是總裁面試。但是根據(jù)第一印象刷人的情況很常見,很殘酷。
騰訊-移動kjava開發(fā)
1)筆試:C++,基礎題目與程序員考試水平相當。
附加題:
1.有10億個浮點數(shù),從中找出1萬個最大的數(shù)。寫一個高性能的算法
2.Unix后臺進程的實現(xiàn)
3.MFC的多文檔模板的加載
4.數(shù)據(jù)庫SQL語句查詢
2)面試
技術(shù)1面:一般有很多面試官,你個人可以選擇其中的一個。問的問題,是否接觸過DirectX技術(shù)?2D,3D引擎原理?然后問一個很基礎的問題,寫一個程序:從雙向循環(huán)鏈表中刪除一個節(jié)點。
廣東北電-研發(fā)
1)筆試C++:考的比較難,一共4題,1個小時完成:
1.英譯漢
2.中序遍歷一個二叉樹,不能用遞歸
3.雙向冒泡程序改錯--3個錯誤
4.回答程序所完成的功能-共5問題目很長,時間來不及。最好提前準備一下。
以下是一些中大考試題目:
1.IS95標準,關(guān)于CDMA發(fā)展。漢譯英
2.編程題
輸入年月日格式y(tǒng)yyymmdd,判斷是否是周末,只要求對2005年判斷。
3.分析題:有關(guān)移動通信編碼,位圖什么的,好像是輸入一串數(shù)據(jù),根據(jù)題目比編碼方法,寫出編碼后結(jié)果,好像沒多少人會做。
2)面試
1.多進程與多線程的區(qū)別與通信
2.測試方法
3.C++中的多態(tài)在C中如何實現(xiàn)
神州數(shù)碼-開發(fā)工程師
1)筆試:綜合能力測試(公務員題目)+專業(yè)測試(J2EE/C++/數(shù)據(jù)庫)
2)面試:沒有問技術(shù)問題
1面:HR面,半結(jié)構(gòu)化測試,主要是性格測試
2面:業(yè)務面,沒有問任何技術(shù)問題,就是職業(yè)規(guī)劃和情景分析
立信-從興電子
筆試:C++,考的n基礎,但是不是很好做
1)C++中引用編譯過的C代碼為什么要用“extern c”
2)類與struct的區(qū)別
3)數(shù)據(jù)庫建表的SQL語句,注意主鍵與外鍵是如何建立的
4)文件的外排序,考慮到CPU,內(nèi)存,硬盤空間等。
面試:
一面:技術(shù)+HR,很容易應付
二面:通知是綜合面,還沒有去面,應該是談價錢
招商銀行研發(fā)中心
筆試:IQ測試+專業(yè)測試(c++,java,delphi,html都有),考的都是很基礎的,但是不容易對付
面試:在筆試的過程中進行,就問了一下項目,工作流,專業(yè)課程與成績。
金蝶軟件
筆試:綜合能力測試(公務員題目)+專業(yè)測試(java+數(shù)據(jù)庫+UML)
1.SWING中組件布局有哪幾種方式
2.寫實例代碼說明多態(tài)的實現(xiàn)
3.數(shù)據(jù)庫SQL語句
4.基礎題目考的很全,國際化,數(shù)據(jù)庫索引,xml shema,ejb,數(shù)據(jù)結(jié)構(gòu)等等
面試:
1)HR:問了專業(yè),成績,期望工作城市。
2)技術(shù)面:問其中一個項目,UML用在項目的哪些方面,有沒有用到數(shù)據(jù)庫索引,數(shù)據(jù)庫實體建模是用什么工具
群碩
筆試:英文,不難做,JAVA基礎知識
面試:
一面:技術(shù)面,MVC架構(gòu),存儲過程,JDBC,JMX與JMS的區(qū)別,Servlet的運行過程與線程安全性。net自動裝箱與拆箱是否可逆,ADO與ADO.NET的區(qū)別
二面:HR面,職業(yè)規(guī)劃,期望工資,雙選的準則
康拓普電力自動化
康拓普公司
筆試:IQ測試+專業(yè)測試(java):
考的非?;A:人民幣數(shù)字轉(zhuǎn)化為文字,如1235,輸出一千二百三十五元
面試:項目和一些基礎。
第二篇:C.C++程序員面試背誦題目
1.面向?qū)ο蟮某绦蛟O計思想是什么?
答:把數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)結(jié)構(gòu)進行操作的方法封裝形成一個個的對象。
2.什么是類?
答:把一些具有共性的對象歸類后形成一個集合,也就是所謂的類。
3.對象都具有的二方面特征是什么?分別是什么含義? 答:對象都具有的特征是:靜態(tài)特征和動態(tài)特征。
靜態(tài)特征是指能描述對象的一些屬性; 動態(tài)特征是指對象表現(xiàn)出來的行為 ;
4.在頭文件中進行類的聲明,在對應的實現(xiàn)文件中進行類的定義有什么意義?
答:1這樣可以提高編譯效率,因為分開的話只需要編譯一次生成對應的.obj文件后,再次應用該類的地方,這個類就不會被再次編譯,從而大大提高了效率。
2隱藏了代碼;
5.在類的內(nèi)部定義成員函數(shù)的函數(shù)體,這種函數(shù)會具備那種屬性? 答:這種函數(shù)會自動為內(nèi)聯(lián)函數(shù),這種函數(shù)在函數(shù)調(diào)用的地方在編譯階段都會進行代碼替換。
6.成員函數(shù)通過什么來區(qū)分不同對象的成員數(shù)據(jù)?為什么它能夠區(qū)分? 答:通過this指針來區(qū)分的,因為它指向的是對象的首地址。
7.C++編譯器自動為類產(chǎn)生的四個缺省函數(shù)是什么?
答:默認構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),析構(gòu)函數(shù),賦值函數(shù)。
8.拷貝構(gòu)造函數(shù)在哪幾種情況下會被調(diào)用?
答:1.當類的一個對象去初始化該類的另一個對象時;
2.如果函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時; 3.如果函數(shù)的返回值是類對象,函數(shù)調(diào)用完成返回時。
9.構(gòu)造函數(shù)與普通函數(shù)相比在形式上有什么不同?(構(gòu)造函數(shù)的作用,它的聲明形式來分析)答:構(gòu)造函數(shù)是類的一種特殊成員函數(shù),一般情況下,它是專門用來初始化對象成員變量的。
構(gòu)造函數(shù)的名字必須與類名相同,它不具有任何類型,不返回任何值。
10.什么時候必須重寫拷貝構(gòu)造函數(shù)?
答:當構(gòu)造函數(shù)涉及到動態(tài)存儲分配空間時,要自己寫拷貝構(gòu)造函數(shù),并且要深拷貝。
11.構(gòu)造函數(shù)的調(diào)用順序是什么? 答:1.先調(diào)用基類構(gòu)造函數(shù)
2.按聲明順序初始化數(shù)據(jù)成員
3.最后調(diào)用自己的構(gòu)造函數(shù)。
12.哪幾種情況必須用到初始化成員列表? 答:類的成員是常量成員初始化;
類的成員是對象成員初始化,而該對象沒有無參構(gòu)造函數(shù)。類的成員常變量時。
13.什么是常對象?
答:常對象是指在任何場合都不能對其成員的值進行修改的對象。
14.靜態(tài)函數(shù)存在的意義?
答:1靜態(tài)私有成員在類外不能被訪問,可通過類的靜態(tài)成員函數(shù)來訪問;
2當類的構(gòu)造函數(shù)是私有的時,不像普通類那樣實例化自己,只能通過靜態(tài)成員函數(shù)來調(diào)用構(gòu)造函數(shù)。
15.在類外有什么辦法可以訪問類的非公有成員? 答:友元,繼承,公有成員函數(shù)。
16.什么叫抽象類?
答:不用來定義對象而只作為一種基本類型用作繼承的類。
17.運算符重載的意義?
答:為了對用戶自定義數(shù)據(jù)類型的數(shù)據(jù)的操作與內(nèi)定義的數(shù)據(jù)類型的數(shù)據(jù)的操作形式一致。
18.不允許重載的5個運算符是哪些? 答:
1..*(成員指針訪問運算符號)2.::域運算符
3.sizeof 長度運算符號 4.?:條件運算符號 5..(成員訪問符)
19.運算符重載的三種方式?
答:普通函數(shù),友元函數(shù),類成員函數(shù)。
20.流運算符為什么不能通過類的成員函數(shù)重載?一般怎么解決? 答:因為通過類的成員函數(shù)重載必須是運算符的第一個是自己,而對流運算的重載要求第一個參數(shù)是流對象。一般通過友元來解決。
21.賦值運算符和拷貝構(gòu)造函數(shù)的區(qū)別與聯(lián)系? 答:相同點:都是將一個對象copy到另一個中去。不同點:拷貝構(gòu)造函數(shù)涉及到要新建立一個對象。
22.在哪種情況下要調(diào)用該類的析構(gòu)函數(shù)? 答:對象生命周期結(jié)束時。
23.對象間是怎樣實現(xiàn)數(shù)據(jù)的共享的? 答:通過類的靜態(tài)成員變量來實現(xiàn)的。靜態(tài)成員變量占有自己獨立的空間不為某個對象所私有。
24.友元關(guān)系有什么特性?
答:單向的,非傳遞的,不能繼承的。
25.對對象成員進行初始化的次序是什么? 答:它的次序完全不受它們在初始化表中次序的影響,只與成員對象在類中聲明的次序來決定的。
26.類和對象之間的關(guān)系是什么?
答:類是對象的抽象,對象是類的實例。
27.對類的成員的訪問屬性有什么? 答:public,protected,private。
28.const char *p,char * const p;的區(qū)別
如果const位于星號的左側(cè),則const就是用來修飾指針所指向的變量,即指針指向為常量; 如果const位于星號的右側(cè),const就是修飾指針本身,即指針本身是常量。
29.是不是一個父類寫了一個virtual 函數(shù),如果子類覆蓋它的函數(shù)不加virtual ,也能實現(xiàn)多態(tài)? virtual修飾符會被隱形繼承的。
virtual可加可不加,子類覆蓋它的函數(shù)不加virtual ,也能實現(xiàn)多態(tài)。
30.函數(shù)重載是什么意思?它與虛函數(shù)的概念有什么區(qū)別? 函數(shù)重載是一個同名函數(shù)完成不同的功能,編譯系統(tǒng)在編譯階段通過函數(shù)參數(shù)個數(shù)、參數(shù)類型不同,即實現(xiàn)的是靜態(tài)的多態(tài)性。但是記住:不能僅僅通過函數(shù)返回值不同來實現(xiàn)函數(shù)重載。而虛函數(shù)實現(xiàn)的是在基類中通過使用關(guān)鍵字virtual來申明一個函數(shù)為虛函數(shù),含義就是該函數(shù)的功能可能在將來的派生類中定義或者在基類的基礎之上進行擴展,系統(tǒng)只能在運行階段才能動態(tài)決定該調(diào)用哪一個函數(shù),所以實現(xiàn)的是動態(tài)的多態(tài)性。它體現(xiàn)的是一個縱向的概念,也即在基類和派生類間實現(xiàn)。
31.構(gòu)造函數(shù)和析構(gòu)函數(shù)是否可以被重載,為什么? 答:構(gòu)造函數(shù)可以被重載,析構(gòu)函數(shù)不可以被重載。因為構(gòu)造函數(shù)可以有多個且可以帶參數(shù),而析構(gòu)函數(shù)只能有一個,且不能帶參數(shù)。
32.如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)? 答:
所謂的回調(diào)函數(shù),就是預先在系統(tǒng)對函數(shù)進行注冊,讓系統(tǒng)知道這個函數(shù)的存在,以后,當某個事件發(fā)生時,再調(diào)用這個函數(shù)對事件進行響應。
定義一個類的成員函數(shù)時在該函數(shù)名前加CALLBACK即將其定義為回調(diào)函數(shù),函數(shù)的實現(xiàn)和普通成員函數(shù)沒有區(qū)別 33.虛函數(shù)是怎么實現(xiàn)的? 答:簡單說來使用了虛函數(shù)表.34.抽象類不會產(chǎn)生實例,所以不需要有構(gòu)造函數(shù)。錯
35.從一個模板類可以派生新的模板類,也可以派生非模板類。對
36.main 函數(shù)執(zhí)行以前,還會執(zhí)行什么代碼?
答案:全局對象的構(gòu)造函數(shù)會在main 函數(shù)之前執(zhí)行。
37.當一個類A 中沒有申明任何成員變量與成員函數(shù),這時sizeof(A)的值是多少,如果不是零,請解釋一下編譯器為什么沒有讓它為零。(Autodesk)
答案:肯定不是零。舉個反例,如果是零的話,聲明一個class A[10]對象數(shù)組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分A[0],A[1]?了。
38.delete與 delete []區(qū)別:
delete只會調(diào)用一次析構(gòu)函數(shù),而delete[]會調(diào)用每一個成員的析構(gòu)函數(shù)。
39.子類析構(gòu)時要調(diào)用父類的析構(gòu)函數(shù)嗎? 會調(diào)用,析構(gòu)函數(shù)調(diào)用的次序是先派生類的析構(gòu)后基類的析構(gòu),也就是說在基類的的析構(gòu)調(diào)用的時候,派生類的信息已經(jīng)全部銷毀了
40.繼承優(yōu)缺點。
1、類繼承是在編譯時刻靜態(tài)定義的,且可直接使用,2、類繼承可以較方便地改變父類的實現(xiàn)。缺點:
1、因為繼承在編譯時刻就定義了,所以無法在運行時刻改變從父類繼承的實現(xiàn)
2、父類通常至少定義了子類的部分行為,父類的任何改變都可能影響子類的行為
3、如果繼承下來的實現(xiàn)不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關(guān)系限制了靈活性并最終限制了復用性。
41.解釋堆和棧的區(qū)別。
棧區(qū)(stack)—
由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。堆:一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由OS回收。
42.一個類的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時候被調(diào)用,是否需要手工調(diào)用? 答:構(gòu)造函數(shù)在創(chuàng)建類對象的時候被自動調(diào)用,析構(gòu)函數(shù)在類對象生命期結(jié)束時,由系統(tǒng)自動調(diào)用。
43.何時需要預編譯:
總是使用不經(jīng)常改動的大型代碼體。
程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。44.多態(tài)的作用? 主要是兩個:
1.隱藏實現(xiàn)細節(jié),使得代碼能夠模塊化;擴展代碼模塊,實現(xiàn)代碼重用;
2.接口重用:為了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調(diào)用
45.虛擬函數(shù)與普通成員函數(shù)的區(qū)別?內(nèi)聯(lián)函數(shù)和構(gòu)造函數(shù)能否為虛擬函數(shù)?
答案:區(qū)別:虛擬函數(shù)有virtual關(guān)鍵字,有虛擬指針和虛函數(shù)表,虛擬指針就是虛擬函數(shù)的接口,而普通成員函數(shù)沒有。內(nèi)聯(lián)函數(shù)和構(gòu)造函數(shù)不能為虛擬函數(shù)。
46.構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序? 析構(gòu)函數(shù)為什么要虛擬? 答案:構(gòu)造函數(shù)的調(diào)用順序:基類構(gòu)造函數(shù)—對象成員構(gòu)造函數(shù)—派生類構(gòu)造函數(shù);析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反。析構(gòu)函數(shù)虛擬是為了防止析構(gòu)不徹底,造成內(nèi)存的泄漏。
47.C++中類型為private的成員變量可以由哪些函數(shù)訪問? 只可以由本類中的成員函數(shù)和友員函數(shù)訪問
48.請說出類中private,protect,public三種訪問限制類型的區(qū)別
private是私有類型,只有本類中的成員函數(shù)訪問;protect是保護型的,本類和繼承類可以訪問;public是公有類型,任何類都可以訪問.49.類中成員變量怎么進行初始化?
可以通過構(gòu)造函數(shù)的初始化列表或構(gòu)造函數(shù)的函數(shù)體實現(xiàn)。
50.在什么時候需要使用“常引用”? 如果既要利用引用提高程序的效率,又要保護傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應使用常引用。
51.引用與指針有什么區(qū)別?
答、1)引用必須被初始化,指針不必。
2)引用初始化以后不能被改變,指針可以改變所指的對象。3)不存在指向空值的引用,但是存在指向空值的指針。
52.描述實時系統(tǒng)的基本特性
答、在特定時間內(nèi)完成特定的任務,實時性與可靠性。
54.全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 答、全局變量儲存在靜態(tài)數(shù)據(jù)區(qū),局部變量在棧中。
55.堆棧溢出一般是由什么原因?qū)е碌模?答、沒有回收垃圾資源
56.什么函數(shù)不能聲明為虛函數(shù)? 答 構(gòu)造函數(shù)(constructor)
57..IP地址的編碼分為哪倆部分?
答 IP地址由兩部分組成,網(wǎng)絡號和主機號。
58..不能做switch()的參數(shù)類型是: 答、switch的參數(shù)不能為實型。
59.如何引用一個已經(jīng)定義過的全局變量?
答、可以用引用頭文件的方式,也可以用extern關(guān)鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯
60.對于一個頻繁使用的短小函數(shù),在C語言中應用什么實現(xiàn),在C++中應用什么實現(xiàn)? 答、c用宏定義,c++用inline
61.C++是不是類型安全的?
答案:不是。兩個不同類型的指針之間可以強制轉(zhuǎn)換(用reinterpret cast)
62.當一個類A 中沒有生命任何成員變量與成員函數(shù),這時sizeof(A)的值是多少,請解釋一下編譯器為什么沒有讓它為零。
答案:為1。舉個反例,如果是零的話,聲明一個class A[10]對象數(shù)組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分A[0],A[1]?了。
63.簡述數(shù)組與指針的區(qū)別?
數(shù)組要么在靜態(tài)存儲區(qū)被創(chuàng)建(如全局數(shù)組),要么在棧上被創(chuàng)建。指針可以隨時指向任意類型的內(nèi)存塊。
(1)修改內(nèi)容上的區(qū)別 char a[] = “hello”;a[0] = ?X?;
char *p = “world”;// 注意p 指向常量字符串
p[0] = ‘X’;// 編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤(2)用運算符sizeof 可以計算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一個指針變量的字節(jié)數(shù),而不是p 所指的內(nèi)存容量。
64.C++函數(shù)中值的傳遞方式
有三種方式:值傳遞、指針傳遞、引用傳遞
65.內(nèi)存的分配方式 分配方式有三種,1、靜態(tài)存儲區(qū),是在程序編譯時就已經(jīng)分配好的,在整個運行期間都存在,如全局變量、常量。
2、棧上分配,函數(shù)內(nèi)的局部變量就是從這分配的,但分配的內(nèi)存容易有限。
3、堆上分配,也稱動態(tài)分配,如我們用new,malloc分配內(nèi)存,用delete,free來釋放的內(nèi)存。
66.extern“C”有什么作用? extern “C”是由C++提供的一個連接交換指定符號,用于告訴C++這段代碼是C函數(shù)。這是因為C++編譯后庫中函數(shù)名會變得很長,與C生成的不一致,造成C++不能直接調(diào)用C函數(shù),加上extren “c”后,C++就能直接調(diào)用C函數(shù)了。
extern “C”主要使用正規(guī)DLL函數(shù)的引用和導出 和 在C++包含C函數(shù)或C頭文件時使用。使用時在前面加上extern “c” 關(guān)鍵字即可。
67.用什么函數(shù)開啟新進程、線程。答案:
線程:CreateThread/AfxBeginThread等 進程:CreateProcess等
68.SendMessage和PostMessage有什么區(qū)別
答案:SendMessage是阻塞的,等消息被處理后,代碼才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被處理,代碼馬上走到PostMessage的下一行。
69.CMemoryState主要功能是什么
答案:查看內(nèi)存使用情況,解決內(nèi)存泄露問題。
70.26、#include
71.處理器標識#error的目的是什么?
答:編譯時輸出一條錯誤信息,并中止繼續(xù)編譯。
72.#if!defined(AFX_…_HADE_H)#define(AFX_…_HADE_H)??
#endif作用?
防止該頭文件被重復引用。
73.在定義一個宏的時候要注意什么?
定義部分的每個形參和整個表達式都必須用括號括起來,以避免不可預料的錯誤發(fā)生
74.數(shù)組在做函數(shù)實參的時候會轉(zhuǎn)變?yōu)槭裁搭愋停?數(shù)組在做實參時會變成指針類型。
75.系統(tǒng)會自動打開和關(guān)閉的3個標準的文件是?(1)標準輸入----鍵盤---stdin(2)標準輸出----顯示器---stdout(3)標準出錯輸出----顯示器---stderr
76..在Win32下 char, int, float, double各占多少位?(1)Char 占用8位(2)Int 占用32位(3)Float 占用32位(4)Double 占用64位
77.strcpy()和memcpy()的區(qū)別?
strcpy()和memcpy()都可以用來拷貝字符串,strcpy()拷貝以’