軟件工程師面試題六道
軟件工程師面試題六道
1. 如果要設(shè)計(jì)一個(gè)搜索引擎,像google那樣只有兩個(gè)頁面,要求性能最大化,web方面應(yīng)該如何設(shè)計(jì)?(不需要考慮搜索的邏輯)
性能:
1-客戶端:js的寫法,數(shù)據(jù)排列,不同瀏覽器區(qū)別
2-服務(wù)器:邏輯,計(jì)算,緩存,減少I/O,提高命中
3-傳輸:帶寬,緩存,異步,進(jìn)度條,并發(fā),集群,數(shù)據(jù)壓縮
我認(rèn)為最主要的性能是人的體驗(yàn),其它都是可以放到第二位去的
2. struts,spring,hibernate這樣的開源框架,他們的歷史局限性在哪里?在何種情況下會(huì)不適合用這些框架?
struts是以請(qǐng)求回答方式為基礎(chǔ)的.ajax,flash等富客戶端越來越多了.....
spring是由于java的靜態(tài)類型限制,等java可以支持動(dòng)態(tài)方法添加之后.....
hibernate是由于數(shù)據(jù)庫都是關(guān)系型的,等數(shù)據(jù)庫面向了對(duì)象之后.....
綜上所述...ssh蹦達(dá)不了幾天了
3. 如果要設(shè)計(jì)一個(gè)用于小型路由器中的web系統(tǒng),應(yīng)該如何來設(shè)計(jì)?
使用不需要并發(fā)多線程的簡(jiǎn)單文件服務(wù)器提交后直接改文件
不使用常規(guī)異常捕獲方式
(由于選擇性少所以根本不使用異常,只提供軟硬的復(fù)位)
4. 請(qǐng)?jiān)u價(jià)下你所熟悉的web框架的可測(cè)試性如何,struts,springMVC,webwork或其他均可.在什么樣的條件下才能對(duì)web系統(tǒng)引入自動(dòng)化測(cè)試?請(qǐng)描述一套完備的面向web系統(tǒng)的自動(dòng)化測(cè)試框架所應(yīng)當(dāng)具有的特性
由于容器的限制所以:web,spring,hibernate都不是很好測(cè)試
由于大多數(shù)web是以人的體驗(yàn)為主的.主觀概念變成代碼代價(jià)過高
由于頁面生成工具沒有足夠的測(cè)試支持.所以寫出的代碼非常難以程序化自動(dòng)化
現(xiàn)有的seleniumIDE還不是很穩(wěn)定
如果把html,js,css分開,頁面內(nèi)容以json或xml來傳輸,頁面的邏輯由js二次絢染成型那么測(cè)試成本會(huì)下降很多.....(開發(fā)成本提高2到5倍)
5. 企業(yè)級(jí)應(yīng)用有哪些特殊要求?在何種情況下我們不需要考慮這些要求?
性能,擴(kuò)展性,7*24小時(shí)
性能問題在出現(xiàn)性能問題之前不考慮
擴(kuò)展性問題在簽定長(zhǎng)期維護(hù),二期開發(fā)合同之前不考慮
7*24工作系統(tǒng)一般不考慮...開發(fā)中本身就是
6. 你們從前的研發(fā)流程是怎樣的?如果由你來設(shè)計(jì)研發(fā)流程,是否能大幅提高生產(chǎn)力和開發(fā)質(zhì)量?如果能,那體現(xiàn)在哪些方面?如果不能,瓶頸在哪里?
瓶頸很大一部分是由于沒有勇氣 去嘗試新的實(shí)踐