第一篇:某公司軟件工程師筆試題4
1.面向?qū)ο蟮奶攸c(diǎn)
2.java類是否可以多繼承,怎樣實(shí)現(xiàn)多繼承
3.多線程的優(yōu)點(diǎn)
4.談?wù)刦inal,finally,finalize的區(qū)別
5.JAVA中異常處理機(jī)制,事件機(jī)制、6.寫(xiě)出SQL語(yǔ)句:從表A中查出值大于40、小于80的記錄,從表B中查出值小于
10、并將表A和表B查出的記錄合并于表C中
7.Java多線程編程。用Java寫(xiě)一個(gè)多線程程序,如寫(xiě)四個(gè)線程,二個(gè)加1,二個(gè)對(duì)一個(gè)變量建議,輸出。
8.Java的通信編程,編程題(或問(wèn)答),用java socket編程,讀服務(wù)器幾個(gè)字符,再寫(xiě)入本地顯示?
9.Servlet的基本架構(gòu) ?
第二篇:軟件測(cè)試工程師筆試題
軟件測(cè)試工程師筆試題一及答案
一、基礎(chǔ)理論
1、軟件測(cè)試的結(jié)束標(biāo)準(zhǔn)是什么?
2、一套完整的測(cè)試應(yīng)該由哪些階段組成?分別闡述一下各個(gè)階段。
3、什么是缺陷報(bào)告?
4、缺陷報(bào)告的作用
5、缺陷報(bào)告的要點(diǎn)
6、軟件測(cè)試缺陷報(bào)告的“5C”原則
7、缺陷的二八定理
8、軟件測(cè)試的流程
9、測(cè)試計(jì)劃的目的是什么?測(cè)試計(jì)劃的內(nèi)容都包括什么?其中哪些是最重要的?
10、請(qǐng)?jiān)囍容^一下黑盒測(cè)試、白盒測(cè)試、單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試的區(qū)別與聯(lián)系。
11、Alpha 測(cè)試與beta 測(cè)試的區(qū)別
答案:
一、基礎(chǔ)理論
1、測(cè)試計(jì)劃中所有規(guī)定的測(cè)試內(nèi)容和回歸測(cè)試都已經(jīng)運(yùn)行完成或根據(jù)上級(jí)主管對(duì)測(cè)試結(jié)果的意見(jiàn),就可以結(jié)束本次測(cè)試
2、計(jì)劃階段、設(shè)計(jì)階段、白盒單元、白盒集成、黑盒單元、黑盒集成、系統(tǒng)測(cè)試、回歸測(cè)試、驗(yàn)收測(cè)試
一套完整的測(cè)試應(yīng)該由五個(gè)階段組成:
1)測(cè)試計(jì)劃首先,根據(jù)用戶需求報(bào)告中關(guān)于功能要求和性能指標(biāo)的規(guī)格說(shuō)明書(shū),定義相應(yīng)的測(cè)試需求報(bào)告,即制訂黑盒測(cè)試的最高標(biāo)準(zhǔn)。以后所有的測(cè)試工作都將圍繞著測(cè)試需求來(lái)進(jìn)行,符合測(cè)試需求的應(yīng)用程序即是合格的,反之即是不合格的;同時(shí),還要適當(dāng)選擇測(cè)試內(nèi)容,合理安排測(cè)試人員、測(cè)試時(shí)間及測(cè)試資源等。
2)測(cè)試設(shè)計(jì)將測(cè)試計(jì)劃階段制訂的測(cè)試需求分解、細(xì)化為若干個(gè)可執(zhí)行的測(cè)試過(guò)程,并為每個(gè)測(cè)試過(guò)程選擇適當(dāng)?shù)臏y(cè)試用例(測(cè)試用例選擇的好壞將直接影響測(cè)試結(jié)果的有效性)。
3)測(cè)試開(kāi)發(fā)建立可重復(fù)使用的自動(dòng)測(cè)試過(guò)程。
4)測(cè)試執(zhí)行執(zhí)行測(cè)試開(kāi)發(fā)階段建立的自動(dòng)測(cè)試過(guò)程,并對(duì)所發(fā)現(xiàn)的缺陷進(jìn)行跟蹤管理,測(cè)試執(zhí)行一般由單元測(cè)試、組合測(cè)試、集成測(cè)試、系統(tǒng)聯(lián)調(diào)及回歸測(cè)試等步驟組成,測(cè)試人員應(yīng)本著科學(xué)負(fù)責(zé)的態(tài)度,一步一個(gè)腳印地進(jìn)行測(cè)試。
5)測(cè)試評(píng)估結(jié)合量化的測(cè)試覆蓋域及缺陷跟蹤報(bào)告,對(duì)于應(yīng)用軟件的質(zhì)量和開(kāi)發(fā)團(tuán)隊(duì)的工作進(jìn)度及工作效率進(jìn)行綜合評(píng)價(jià)。
3、缺陷報(bào)告是描述軟件缺陷現(xiàn)象和重現(xiàn)步驟地集合。軟件缺陷報(bào)告Software Bug Report(SBR)或軟件問(wèn)題報(bào)告Software Problem Report(SPR)
4、缺陷報(bào)告是軟件測(cè)試人員的工作成果之一,體現(xiàn)軟件測(cè)試的價(jià)值
缺陷報(bào)告可以把軟件存在的缺陷準(zhǔn)確的描述出來(lái),便于開(kāi)發(fā)人員修正
缺陷報(bào)告可以反映項(xiàng)目/產(chǎn)品當(dāng)前的質(zhì)量狀態(tài),便于項(xiàng)目整體進(jìn)度和質(zhì)量控制
軟件測(cè)試缺陷報(bào)告是軟件測(cè)試的輸出成果之一,可以衡量測(cè)試人員的工作能力
5、標(biāo)題(Title)
簡(jiǎn)潔、準(zhǔn)確、完整、反映缺陷本質(zhì)、方便查詢
前綴 + 標(biāo)題正文,標(biāo)題正文采用結(jié)果和動(dòng)作,或者現(xiàn)象和位置的方式表達(dá)
步驟(Steps)
可復(fù)現(xiàn)、完整、簡(jiǎn)潔、準(zhǔn)確
按數(shù)字編號(hào)
實(shí)際結(jié)果(Actual results)
準(zhǔn)確、詳細(xì)描述軟件的現(xiàn)象和特征
期望結(jié)果(Expected results)
準(zhǔn)確、豐富、有理有據(jù)
平臺(tái)(Platforms)
準(zhǔn)確
截圖(Screenshots)
準(zhǔn)確反映缺陷特征
注釋(Notes)
關(guān)于缺陷的輔助說(shuō)明
6、內(nèi)容準(zhǔn)確(Correct):
每個(gè)組成部分的描述準(zhǔn)確,不會(huì)引起誤解
步驟簡(jiǎn)潔(Concise):
只包含必不可少的信息,不包括任何多余的內(nèi)容
內(nèi)容清晰(Clear):
每個(gè)組成部分的描述清晰,易于理解
結(jié)構(gòu)完整(Complete):
包含復(fù)現(xiàn)該缺陷的完整步驟和其他本質(zhì)信息
風(fēng)格一致(Consistent):
按照一致的格式書(shū)寫(xiě)全部缺陷報(bào)告
7、在分析、設(shè)計(jì)、實(shí)現(xiàn)階段的復(fù)審和測(cè)試工作能夠發(fā)現(xiàn)和避免80%的缺陷,而系統(tǒng)測(cè)試又能找出其余缺陷中的80%,最后的4%的缺陷可能只有在用戶大范圍、長(zhǎng)時(shí)間使用后才會(huì)暴露出來(lái)。
8、制訂測(cè)試計(jì)劃、設(shè)計(jì)測(cè)試用例、實(shí)施測(cè)試、提交缺陷報(bào)告、測(cè)試總結(jié)。
9、測(cè)試計(jì)劃的目的:編寫(xiě)軟件測(cè)試計(jì)劃的目的是指導(dǎo)測(cè)試組成員進(jìn)行工作和讓測(cè)試組以外的項(xiàng)目成員了解測(cè)試工作的。
測(cè)試計(jì)劃的內(nèi)容:測(cè)試目的和測(cè)試項(xiàng)目簡(jiǎn)介、測(cè)試參考文檔和測(cè)試提交文檔、術(shù)語(yǔ)和定義、測(cè)試策略、確定測(cè)試內(nèi)容、資源、測(cè)試進(jìn)度、測(cè)試員的職責(zé)與任務(wù)分配、項(xiàng)目通過(guò)或失敗的標(biāo)準(zhǔn)、暫
停和重新啟動(dòng)測(cè)試的標(biāo)準(zhǔn)、風(fēng)險(xiǎn)和問(wèn)題等。
最重要的:測(cè)試策略、確定測(cè)試內(nèi)容、資源、測(cè)試進(jìn)度、測(cè)試員的職責(zé)與任務(wù)分配、項(xiàng)目通過(guò)或失敗的標(biāo)準(zhǔn)
10、黑盒測(cè)試:把測(cè)試對(duì)象當(dāng)成一個(gè)黑盒子,測(cè)試人員完全不考慮邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程式的需求說(shuō)明書(shū)來(lái)檢查程式的功能是否滿足它的功能說(shuō)明。
白盒測(cè)試:把測(cè)試對(duì)象當(dāng)成一個(gè)透明的盒子,允許測(cè)試人員利用程序內(nèi)部邏輯結(jié)構(gòu)及相關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程式所有邏輯路徑進(jìn)行測(cè)試。
單元測(cè)試:白盒測(cè)試的一種,對(duì)軟件設(shè)計(jì)中的單元模塊進(jìn)行測(cè)試。
集成測(cè)試:在單元測(cè)試的基礎(chǔ)上,對(duì)單元模塊之間的連接和組裝w進(jìn)行測(cè)試。
系統(tǒng)測(cè)試:在所有都考慮的情況下,對(duì)系統(tǒng)進(jìn)行測(cè)試。
驗(yàn)收測(cè)試:第三方進(jìn)行的確認(rèn)軟件滿足需求的測(cè)試。
第三篇:某公司軟件工程師筆試題
軟件工程師-筆試試題
說(shuō)明:不需要全部完成,做你懂的就可以。
Java基礎(chǔ)
1.Set、Map、List有什么異同?
2.Abstract class和interface有什么區(qū)別?什么是基于接口編程?
3.類C有4個(gè)方法m1、m2、m3、m4,其中m1、m2、m3使用synchronized聲明,m3還有static聲明,m4沒(méi)有特殊的聲明。當(dāng)一個(gè)線程T1進(jìn)入C的一個(gè)實(shí)例的m1方法后,另一線程T2能立刻進(jìn)入另一個(gè)實(shí)例的m1、m2、m3、m4方法嗎?為什么?[高分] 4.String和StringBuffer區(qū)別,什么時(shí)候應(yīng)該使用StringBuffer?
5.RuntimeException與一般異常(非RuntimeException的Exception)有何異同?
Web(HTML, DOM, JavaScript, CSS)
6.你平時(shí)有注意瀏覽器的兼容性嗎?簡(jiǎn)述你知道的瀏覽器兼容性的例子。7.簡(jiǎn)述iframe的特點(diǎn)、使用模式 8.你用過(guò)些什么javascript的框架? 9.你了解什么是SEO嗎?
10. 怎樣的網(wǎng)頁(yè)適合做緩存?一個(gè)網(wǎng)頁(yè)怎樣才會(huì)被緩存?網(wǎng)頁(yè)緩存為什么重要? 11. 使用Cookie應(yīng)注意什么問(wèn)題,什么時(shí)候適合用Cookie,什么時(shí)候不適合?
JavaEE 12。說(shuō)出Servlet的生命周期
13。Forward和redirect的區(qū)別
14。Jsp中動(dòng)態(tài)include和靜態(tài)include的區(qū)別?
15。不能往Session里面存儲(chǔ)太多太大的對(duì)象,為什么?
16。Servlet里面,什么情況下會(huì)調(diào)用doGet()和doPost()?有什么區(qū)別
數(shù)據(jù)庫(kù)
17。寫(xiě)一段數(shù)據(jù)庫(kù)查詢的JDBC或hibernate程序(select * from employee where empid=?”)(只要主要的代碼,把你認(rèn)為“不可缺少”的語(yǔ)句寫(xiě)上,但要完整)18。在SQL里面怎樣過(guò)濾重復(fù)的記錄?
19。What is a “transaction”?Why are they necessary? 20。Trigger 有什么作用?
21。What are stored procedures?How is it useful? 22。What is the advantage of using PreparedStatement?
XML和WebService 23。Xml文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別? 24。What is the difference between SAX parser and DOM parser?
OOAD和UML 25。What is an usecase? 架構(gòu)與框架
26.說(shuō)說(shuō)你對(duì)MCV的認(rèn)識(shí)
第四篇:軟件工程師筆試題3
預(yù)處理器(Preprocessor)
1.用預(yù)處理指令#define 聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問(wèn)題)#define SECONDS_PER_YEAR(60 * 60 * 24 * 365)UL
我在這想看到幾件事情:
1).#define 語(yǔ)法的基本知識(shí)(例如:不能以分號(hào)結(jié)束,括號(hào)的使用,等等)
2).懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值,因此,直接寫(xiě)出你是如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清晰而沒(méi)有代價(jià)的。
3).意識(shí)到這個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出-因此要用到長(zhǎng)整型符號(hào)L告訴編譯器這個(gè)常數(shù)是的長(zhǎng)整型數(shù)。
4).如果你在你的表達(dá)式中用到UL(表示無(wú)符號(hào)長(zhǎng)整型),那么你有了一個(gè)好的起點(diǎn)。記住,第一印象很重要。
2.寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。
#define MIN(AB)((A)6”。原因是當(dāng)表達(dá)式中存在有符號(hào)類型和無(wú)符號(hào)類型時(shí)所有的操作數(shù)都自動(dòng)轉(zhuǎn)換為無(wú)符號(hào)類型。因此-20變成了一個(gè)非常大的正整數(shù),所以該表達(dá)式計(jì)算出的結(jié)果大于6。這一點(diǎn)對(duì)于應(yīng)當(dāng)頻繁用到無(wú)符號(hào)數(shù)據(jù)類型的嵌入式系統(tǒng)來(lái)說(shuō)是豐常重要的。如果你答錯(cuò)了這個(gè)問(wèn)題,你也就到了得不到這份工作的邊緣。
13.評(píng)價(jià)下面的代碼片斷:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1's complement of zero */
對(duì)于一個(gè)int型不是16位的處理器為說(shuō),上面的代碼是不正確的。應(yīng)編寫(xiě)如下: unsigned int compzero = ~0;
這一問(wèn)題真正能揭露出應(yīng)試者是否懂得處理器字長(zhǎng)的重要性。在我的經(jīng)驗(yàn)里,好的嵌入式程序員非常準(zhǔn)確地明白硬件的細(xì)節(jié)和它的局限,然而PC機(jī)程序往往把硬件作為一個(gè)無(wú)法避免的煩惱。
到了這個(gè)階段,應(yīng)試者或者完全垂頭喪氣了或者信心滿滿志在必得。如果顯然應(yīng)試者不是很好,那么這個(gè)測(cè)試就在這里結(jié)束了。但如果顯然應(yīng)試者做得不錯(cuò),那么我就扔出下面的追加問(wèn)題,這些問(wèn)題是比較難的,我想僅僅非常優(yōu)秀的應(yīng)試者能做得不錯(cuò)。提出這些問(wèn)題,我希望更多看到應(yīng)試者應(yīng)付問(wèn)題的方法,而不是答案。不管如何,你就當(dāng)是這個(gè)娛樂(lè)吧… 動(dòng)態(tài)內(nèi)存分配(Dynamic memory allocation)
14.盡管不像非嵌入式計(jì)算機(jī)那么常見(jiàn),嵌入式系統(tǒng)還是有從堆(heap)中動(dòng)態(tài)分配內(nèi)存的過(guò)程的。那么嵌入式系統(tǒng)中,動(dòng)態(tài)分配內(nèi)存可能發(fā)生的問(wèn)題是什么?
這里,我期望應(yīng)試者能提到內(nèi)存碎片,碎片收集的問(wèn)題,變量的持行時(shí)間等等。這個(gè)主題已經(jīng)在ESP雜志中被廣泛地討論過(guò)了(主要是 P.J.Plauger 他的解釋遠(yuǎn)遠(yuǎn)超過(guò)我這里能提到的任何解釋),所有回過(guò)頭看一下這些雜志吧!讓?xiě)?yīng)試者進(jìn)入一種虛假的安全感覺(jué)后,我拿出這么一個(gè)小節(jié)目:下面的代碼片段的輸出是什么,為什么?
char *ptr;
if((ptr =(char *)malloc(0))== NULL)
puts(“Got a null pointer”);
else
puts(“Got a valid pointer”);
這是一個(gè)有趣的問(wèn)題。最近在我的一個(gè)同事不經(jīng)意把0值傳給了函數(shù)malloc,得到了一個(gè)合法的指針之后,我才想到這個(gè)問(wèn)題。這就是上面的代碼,該代碼的輸出是“Got a valid pointer”。我用這個(gè)來(lái)開(kāi)始討論這樣的一問(wèn)題,看看被面試者是否想到庫(kù)例程這樣做是正確。得到正確的答案固然重要,但解決問(wèn)題的方法和你做決定的基本原理更重要些。
Typedef
15.Typedef 在C語(yǔ)言中頻繁用以聲明一個(gè)已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個(gè)指向結(jié)構(gòu)s指針。哪種方法更好呢?(如果有的話)為什么?
這是一個(gè)非常微妙的問(wèn)題,任何人答對(duì)這個(gè)問(wèn)題(正當(dāng)?shù)脑颍┦菓?yīng)當(dāng)被恭喜的。答案是:typedef更好。思考下面的例子:dPS p1p2;
tPS p3p4;
第一個(gè)擴(kuò)展為
struct s * p1 p2;
上面的代碼定義p1為一個(gè)指向結(jié)構(gòu)的指,p2為一個(gè)實(shí)際的結(jié)構(gòu),這也許不是你想要的。第二個(gè)例子正確地定義了p3 和p4 兩個(gè)指針。
16.C語(yǔ)言同意一些令人震驚的結(jié)構(gòu)下面的結(jié)構(gòu)是合法的嗎,如果是它做些什么?int a = 5 b = 7 c;
c = a+++b;
這個(gè)問(wèn)題將做為這個(gè)測(cè)驗(yàn)的一個(gè)愉快的結(jié)尾。不管你相不相信,上面的例子是完全合乎語(yǔ)法的。問(wèn)題是編譯器如何處理它?水平不高的編譯作者實(shí)際上會(huì)爭(zhēng)論這個(gè)問(wèn)題,根據(jù)最處理原則,編譯器應(yīng)當(dāng)能處理盡可能所有合法的用法。因此,上面的代碼被處理成:
c = a++ + b;
因此 這段代碼持行后a = 6 b = 7 c = 12。
第五篇:MTK深圳公司嵌入式軟件工程師筆試題+
MTK深圳公司嵌入式軟件工程師筆試題
//MTK深圳嵌入式軟件工程師筆試題(B卷)
//1***************************************** #define pi 3.14
#define Area(R)pi*R*R
main()
{
int r1=5,r2=2;
double s=0;
s=Area(r1-r2);
printf(“The area is %f”,s);
}
//求結(jié)果
//2********************************************* //函數(shù) int compare(int a,int b),定義為該函數(shù)的函數(shù)指針P:為_(kāi)______________
//3********************************************* #include
void sub(char*s,int num)
{
int i ,j=num;
char t;
while(j-->1)
{
for(i=0;i { if(s[i] { t=s[i]; s[i]=s[i+1]; s[i+1]=t; } } } } main() { char*s=“CEAeded”; sub(s,6); printf(“%sn”,s) } //求結(jié)果 //4********************************************** //交換兩個(gè)變量的值,不使用第三個(gè)變量,即a=3,b=5交換 //后b=3,a=5 unsigned char a=3,b=5; //5************************************************** #define N 100 void GetMemory1(char*p) { p=(char*)malloc(sizeof(char)*N); strcpy(p,“Have a good day!”); } char*GetMemory2(void) { char p[]=“Have a good day!”; return p; void main(void) { char*str1=NULL,*str2=NULL; GetMemory1(str1); GetMemory2(str2); printf(“nstr1:%s”,str1); printf(“nstr2:%s”,str2); //6****************************************************** //構(gòu)造N個(gè)結(jié)點(diǎn)的單鏈表返回鏈表頭指針,要求鏈表中各結(jié)點(diǎn)順序 //與結(jié)點(diǎn)數(shù)據(jù)輸入順序相反,例如輸入1,2,3,4,5,形成的鏈表為 //head->5 4 3 2 1 ,補(bǔ)充程序 #define N 10 typedef struct Node { int data; struct Node*next; }NODE; int Get_Data(int i);//定義省略 Node*Create_u() { int i; NODE*p,*Head=NULL; for(i=0;i { VP=New NODE; P->Data=Get_Data(i); ________________; ________________; return Head; } //7********************************************** //N個(gè)結(jié)點(diǎn)鏈表,每個(gè)結(jié)點(diǎn)中存放一個(gè)字符,判斷鏈表存放的字符是否 //中心對(duì)稱,即a b c c b a或a b c b a,補(bǔ)充程序 typedef struct Node { int data; struct Node*next; }NODE; bool Is_symmeic(NODE*head,*int n) { char D[N]; int i,d; __________; for(i=0;i { D[i]=head->data; head=head->next; } if(__________) { head=head->next; } while(head) { _______________; if(D[i]!=head->data) { return false; } head=head->next; } return true; } //8************************************* //str中只含有大寫(xiě)和小寫(xiě)字母函數(shù)change_move(char*str)將字符串中大寫(xiě)改成*并 //移到前面小寫(xiě)后返回*的個(gè)數(shù) //如AabBdcYY改為*****abd,返回5 int chang_move(char*str) { int len,i,curstr=-1; len=strlen(str); for(i=len-1;i>=0;i--) { if(str[i]>='A'&&str[i]<='Z') { str[i]='*'; if(cursor==-1) { cursor=i; } else if(cursor>i) { _____________; str[i]='*'; _____________; } } return____________; } //9*********************************************** //求兩個(gè)字符串的第一個(gè)公共子串,并返回該子串 //如:“a b c d e f g e h i” “a a c d e f * * g e h i” //第一個(gè)為“c d e f”;不許用strcmp() char*Maxf(char*str1,char*str2) { }