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