廣東-深圳 .....?..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

高級(jí)軟件工程師(面試題)

發(fā)布時(shí)間:2020-06-18 04:32:30 來(lái)源:網(wǎng)絡(luò) 閱讀:439 作者:rr57db5e27e90cc 欄目:數(shù)據(jù)庫(kù)

高級(jí)軟件工程師

下面的面試題不分語(yǔ)言,適用于所有編程語(yǔ)言,更多偏向設(shè)計(jì)。

設(shè)計(jì)一個(gè)分類功能

該功用于行政區(qū)域劃分,商品分類,等等 例如中國(guó)->廣東-深圳 .....

要求:

  1. 無(wú)限極分類,層次深度不限

  2. 快速檢索,不能使用遞歸

  3. 只能使用一個(gè)數(shù)據(jù)庫(kù)表實(shí)現(xiàn)

  4. 可以生成樹(shù)形目錄


商品以及屬×××的設(shè)計(jì)

一個(gè)商品有很多屬性,例如尺寸,顏色這些屬性有固定的值,而另一些屬性如重量,體積是需要填寫(xiě)具體數(shù)值的,并且還有對(duì)應(yīng)的單位。

要求:

  1. 商品分類(上一個(gè)問(wèn)題中已經(jīng)實(shí)現(xiàn))

  2. 商品屬性,有多個(gè)屬性,且數(shù)目不確定,所以需要設(shè)計(jì)成可以無(wú)限添加

  3. 商品屬性即可下拉選擇,也可以填寫(xiě)具體數(shù)值

問(wèn)題:

  1. 商品搜索怎么解決下載  ,包含商品名稱,屬性,屬性值,描述的搜索

  2. 商品的庫(kù)存怎么設(shè)計(jì)下載 

  3. 分類搜索,怎樣列出所有子分類以及子分類下的所有分類(無(wú)限深度)


用戶注冊(cè)的功能需求

場(chǎng)景模擬: 用戶開(kāi)戶注冊(cè)時(shí)常常填寫(xiě)了一部分資料,就離開(kāi)了,有幾種情況

  1. 用戶放棄注冊(cè)

  2. 網(wǎng)絡(luò)連接失敗

  3. 提交出錯(cuò)

  4. 其他鏈接吸引了用戶點(diǎn)擊

等等原因......

需求:

  1. 要求記錄用戶填寫(xiě)資料,再次回來(lái)(數(shù)日/數(shù)月后)點(diǎn)擊注冊(cè)的時(shí)候,用戶不用重新填寫(xiě)所有資料,只需完成未完成的部分即可。

  2. 重要資料例如手機(jī),電郵,即時(shí)通訊號(hào)碼等等需要記錄到數(shù)據(jù)庫(kù),已被公司回訪客戶。

  3. 在用戶成功注冊(cè)后應(yīng)該刪除之前保留在數(shù)據(jù)庫(kù)中的手機(jī),電郵,即時(shí)通訊等等。

請(qǐng)問(wèn)如何實(shí)現(xiàn)?資料怎樣保存?下載 


事務(wù)處理相關(guān)

簡(jiǎn)述什么是事務(wù)處理?

在不能使用數(shù)據(jù)庫(kù)的事務(wù)處理以及鎖(表鎖/行級(jí)鎖)時(shí),怎么保持?jǐn)?shù)據(jù)一致性?怎么解決數(shù)據(jù)庫(kù)并發(fā)操作?

  1. 怎樣解決避免多個(gè)用戶讀讀取同一條數(shù)據(jù)記錄?

  2. 怎樣避免多個(gè)用戶更新同一條數(shù)據(jù)

模擬題一

例如有一個(gè)電商網(wǎng)站每個(gè)小時(shí)有100個(gè)用戶下單,公司需要有10個(gè)客服處理用戶的訂單。

問(wèn)題:

  1. 當(dāng)10位員工進(jìn)入admin后臺(tái),查看訂單會(huì)出現(xiàn)什么問(wèn)題?

  2. 怎樣防止一個(gè)訂單被一個(gè)以上的人看到?下載 

  3. 如果兩個(gè)員工同事看到同一個(gè)個(gè)訂單,怎樣避免員工,重復(fù)審批同一張訂單?下載 

  4. 如果訂單X最先被員工A點(diǎn)開(kāi),這是員工A去忙其他事情,X定點(diǎn)就會(huì)一直掛起,怎樣將訂單重新分配?


開(kāi)發(fā)框架

  1. 簡(jiǎn)述 MVC 原理以及實(shí)現(xiàn)

  2. 怎樣實(shí)現(xiàn) URL 路由

  3. 怎樣實(shí)現(xiàn)類,方法訪問(wèn)權(quán)限控制下載 

請(qǐng)問(wèn)下面代碼下載 怎么實(shí)現(xiàn)?

用你最熟悉的語(yǔ)言實(shí)現(xiàn)。

{% highlight java %}

DB db = new DB() db.select(new field("name","age"...)).from("user").where(new And("xxx=xx", "xxx=xxx")).limit(10).offset(10).orderby("id",DESC)

{% endhighlight %}


進(jìn)程與多線程

  1. 什么是阻塞,什么是非阻塞?

  2. 什么是同步,什么是異步?

  3. 什么情況下使用線程鎖?

  4. 進(jìn)程與線程的區(qū)別?

  5. 進(jìn)程間通信有那幾種,線程通信有那幾種,以及各自的優(yōu)勢(shì)?


消息隊(duì)列

消息有哪些瓶頸?


序列化

  1. 什么是序列化

  2. 常用序列化方式都有哪些下載 


CDN應(yīng)用

  1. CDN 緩存的原理?

  2. CDN 都可能緩存那些內(nèi)容?

  3. 網(wǎng)站首頁(yè)90%的內(nèi)容是靜態(tài)的,但是用戶登錄狀態(tài),消息狀態(tài)是動(dòng)態(tài)的怎么解決?

  4. JSON 可能緩存嗎?下載 

  5. 瀏覽器緩存與CDN緩存的關(guān)系,怎樣實(shí)現(xiàn)用戶瀏覽器與CDN同時(shí)緩存?


面向?qū)ο笤囶}?

編寫(xiě)一個(gè)求和程序

s = new Sum();
s.add(10).add(5).add(6)

s.add(10).add(5).add(6)......add(3) 可以無(wú)限的寫(xiě)下去

obj = new Object()
obj.a()
obj.b()
obj.c()
...
...
obj.z()

obj.a().b().c() ... z()

與上面類似

這是 一個(gè)簡(jiǎn)單的 OOP 面試題,在做多年的面試經(jīng)驗(yàn)中,發(fā)現(xiàn)很多人不知道怎樣實(shí)現(xiàn)上面的問(wèn)題


Restfull 試題

Restfull 是基于HTTP協(xié)議的RPC系統(tǒng),對(duì)于公共服務(wù)不存在安全上面的考慮,調(diào)用方法也多是ajax,所以公共系統(tǒng)是開(kāi)放的。

如果是私有服務(wù),就需要考慮安全問(wèn)題了,試題如下:

CQRS 問(wèn)題

  1. 什么是 CQRS

  2. 可以在那些地方處理 CQRS

請(qǐng)為 Restful 增加 HTTP Auth

  1. 怎樣為 Restful 增加 HTTP 認(rèn)證

  2. 增加 http 認(rèn)證有哪些方式下載 

  3. 用戶與密碼安全嗎?

使用 SSL 加密 Restful

  1. 購(gòu)買(mǎi)的證書(shū)與自己生成的證書(shū)有什么區(qū)別

  2. SSL 怎樣配置,在哪里配置

  3. 訪問(wèn) SSL 的 Restful 需要注意什么

 

數(shù)據(jù)庫(kù)應(yīng)用

數(shù)據(jù)庫(kù)分割問(wèn)題

  1. 什么是順平分割,什么是垂直分割

  2. 分表,分庫(kù)有需要主要那些事項(xiàng)

  3. 分表,分庫(kù)后怎么解決夸庫(kù)查詢

  4. 分表,分庫(kù)后怎么創(chuàng)建索引

數(shù)據(jù)庫(kù)復(fù)制問(wèn)題

  1. 數(shù)據(jù)庫(kù)復(fù)制有哪幾種?下載 

  2. 簡(jiǎn)述主從復(fù)制,主主復(fù)制,環(huán)形復(fù)制

  3. 當(dāng)選擇主從復(fù)制是軟件開(kāi)發(fā)上有哪些注意事項(xiàng)

  4. 主主如何應(yīng)用


軟件彈性設(shè)計(jì)

編譯語(yǔ)言的彈性設(shè)計(jì)問(wèn)題

背景模擬: 有一個(gè)電商平臺(tái)已經(jīng)開(kāi)發(fā)完畢,編譯打包,上線,運(yùn)營(yíng)。 由于市場(chǎng)瞬息萬(wàn)變,原有的打折系統(tǒng)設(shè)計(jì)已經(jīng)不能滿足現(xiàn)在的需求,如果不修改可會(huì)會(huì)給公司帶來(lái)經(jīng)濟(jì)隨時(shí)。 現(xiàn)在需要重新修改程序邏輯,但問(wèn)題來(lái)了。目前正在做推廣促銷活動(dòng),系統(tǒng)訪問(wèn)量大不能中斷現(xiàn)有服務(wù),哪怕30都會(huì)給公司帶來(lái)不可挽回的損失。

我的問(wèn)題:

  1. 怎樣在這個(gè)系統(tǒng)的設(shè)計(jì)之初解決后面遇到的問(wèn)題

  2. 如何設(shè)計(jì)一個(gè)彈性打折系統(tǒng)下載 

  3. 在不重啟的情況下怎樣改編編譯語(yǔ)言的內(nèi)部運(yùn)行邏輯

問(wèn)題延伸: 這個(gè)問(wèn)題可以延伸到蘋(píng)果IOS,例如發(fā)布app到蘋(píng)果appstore至少需要半個(gè)月,半個(gè)月可能存在很多變數(shù),很可能應(yīng)用被審批通過(guò),程序已經(jīng)不在適合當(dāng)前的情況了。


高可用設(shè)計(jì)

  1. 什么是高可用

  2. 什么是雙機(jī)熱備,雙機(jī)熱備有那些缺陷

  3. 什么是雙活

  4. 請(qǐng)簡(jiǎn)述實(shí)現(xiàn)軟件高可用要考慮那些因素

軟件設(shè)計(jì)中的災(zāi)備問(wèn)題

請(qǐng)簡(jiǎn)述設(shè)計(jì)一個(gè)遠(yuǎn)程異地災(zāi)備系統(tǒng)

  1. 兩個(gè)機(jī)房怎樣設(shè)計(jì)災(zāi)備系統(tǒng)

  2. 三個(gè)機(jī)房怎樣設(shè)計(jì)災(zāi)備系統(tǒng)

  3. 跨境情況需要考慮那些影響因素

軟件災(zāi)備開(kāi)發(fā)問(wèn)題

  1. 數(shù)據(jù)庫(kù)怎樣實(shí)現(xiàn)災(zāi)備

  2. 緩存怎樣實(shí)現(xiàn)災(zāi)備

  3. 應(yīng)用服務(wù)器怎樣實(shí)現(xiàn)災(zāi)備

  4. Web 服務(wù)器怎樣實(shí)現(xiàn)災(zāi)備下載 

  5. 計(jì)劃任務(wù)、定時(shí)周期運(yùn)行的程序怎樣災(zāi)備

  6. 消息隊(duì)列怎樣實(shí)現(xiàn)災(zāi)備

  7. 雙活的軟件怎樣實(shí)現(xiàn)同一時(shí)刻只能一個(gè)運(yùn)行,或者交替運(yùn)行


軟件部署問(wèn)題

  1. 怎樣實(shí)現(xiàn)軟件自動(dòng)化部署,實(shí)現(xiàn)自動(dòng)化部署的關(guān)鍵幾點(diǎn)是什么?

  2. 怎樣處理配置文件

  3. 怎樣排除不必要或者不希望部署的文件

  4. 怎樣實(shí)現(xiàn)增量部署

  5. 怎樣實(shí)現(xiàn)差異部署

  6. 怎樣部署大文件,例如視頻等。問(wèn)題:有一個(gè)文件有500M,內(nèi)容隨時(shí)有修改,也會(huì)不定期追加,怎樣實(shí)現(xiàn)差異部署,而不是再次發(fā)布一個(gè)500M的文件。

  7. 怎樣部署編譯軟件

  8. 怎樣備份

  9. 怎樣部署windows程序下載 

  10. 怎樣快速回撤,切換時(shí)間點(diǎn)或者指定的版本。

以上不允許使用GIT/SVN實(shí)現(xiàn)自動(dòng)部署。要求自動(dòng)化不是在30秒內(nèi)完成。


軟件開(kāi)發(fā)框架

插件的實(shí)現(xiàn)原理

  1. 插件有幾部分組成

  2. 如何實(shí)現(xiàn)插件安裝,卸載,啟用,禁用?

  3. 安裝,卸載,啟用,禁用怎樣實(shí)現(xiàn)不停機(jī),不關(guān)閉服務(wù)的情況進(jìn)行?

口述如何設(shè)計(jì)一個(gè)MVC框架下載 

  1. 怎樣實(shí)現(xiàn) URL 路由

  2. 怎樣實(shí)現(xiàn)控制器

  3. 怎樣實(shí)現(xiàn)視圖

  4. 怎樣實(shí)現(xiàn)模型

口述如何設(shè)計(jì)一個(gè)SOA框架

  1. 框架分為幾個(gè)部分?

  2. 采用什么協(xié)議與框架通信?

  3. 如果考慮到性能使用二進(jìn)制協(xié)議你怎樣實(shí)現(xiàn)?

  4. 如何解決并發(fā)沖突?

  5. 如何支持事務(wù)?

  6. 你怎樣與消息隊(duì)列集成或者通信?

口述設(shè)計(jì)一個(gè)分布式計(jì)劃任務(wù)系統(tǒng)

背景:計(jì)劃任務(wù)即周期或定時(shí)運(yùn)行的程序,我們要解決單點(diǎn)故障問(wèn)題與負(fù)載均衡的問(wèn)題,在一個(gè)分布式系統(tǒng)中單節(jié)點(diǎn)是不允許的。

設(shè)計(jì)要求:能夠?qū)崿F(xiàn)高可用,負(fù)載均衡,橫向擴(kuò)展

  1. 怎樣處理同時(shí)運(yùn)行產(chǎn)生的沖突問(wèn)題?

  2. 怎樣排隊(duì)運(yùn)行?

  3. 任務(wù)如何持久化?

  4. 一個(gè)節(jié)點(diǎn)宕機(jī),另一個(gè)節(jié)點(diǎn)怎么接管沒(méi)有完成的任務(wù)?

  5. 如何橫向擴(kuò)展?

  6. 擴(kuò)展,收縮,維護(hù)如果能做到不停機(jī),不影響業(yè)務(wù)?


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI