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

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

 

出題者:netkiller面試

出處:http://www.netkiller.cn/ajax

 

高級軟件工程師

下面的面試題不分語言,適用於全部編程語言,更多偏向設計。數據庫

設計一個分類功能

該功用於行政區域劃分,商品分類,等等 例如中國->廣東-深圳 .....編程

要求:windows

  1. 無限極分類,層次深度不限
  2. 快速檢索,不能使用遞歸
  3. 只能使用一個數據庫表實現
  4. 能夠生成樹形目錄

商品以及屬性功能的設計

一個商品有不少屬性,例如尺寸,顏色這些屬性有固定的值,而另外一些屬性如重量,體積是須要填寫具體數值的,而且還有對應的單位。瀏覽器

要求:緩存

  1. 商品分類(上一個問題中已經實現)
  2. 商品屬性,有多個屬性,且數目不肯定,因此須要設計成能夠無限添加
  3. 商品屬性便可下拉選擇,也能夠填寫具體數值

問題:安全

  1. 商品搜索怎麼解決,包含商品名稱,屬性,屬性值,描述的搜索
  2. 商品的庫存怎麼設計
  3. 分類搜索,怎樣列出全部子分類以及子分類下的全部分類(無限深度)

用戶註冊的功能需求

場景模擬: 用戶開戶註冊時經常填寫了一部分資料,就離開了,有幾種狀況服務器

  1. 用戶放棄註冊
  2. 網絡鏈接失敗
  3. 提交出錯
  4. 其餘連接吸引了用戶點擊

等等緣由......

需求:

  1. 要求記錄用戶填寫資料,再次回來(很多天/數月後)點擊註冊的時候,用戶不用從新填寫全部資料,只需完成未完成的部分便可。
  2. 重要資料例如手機,電郵,即時通信號碼等等須要記錄到數據庫,已被公司回訪客戶。
  3. 在用戶成功註冊後應該刪除以前保留在數據庫中的手機,電郵,即時通信等等。

請問如何實現?資料怎樣保存?

事務處理相關

簡述什麼是事務處理?

在不能使用數據庫的事務處理以及鎖(表鎖/行級鎖)時,怎麼保持數據一致性?怎麼解決數據庫併發操做?

  1. 怎樣解決避免多個用戶讀讀取同一條數據記錄?
  2. 怎樣避免多個用戶更新同一條數據

模擬題一

例若有一個電商網站每一個小時有100個用戶下單,公司須要有10個客服處理用戶的訂單。

問題:

  1. 當10位員工進入admin後臺,查看訂單會出現什麼問題?
  2. 怎樣防止一個訂單被一個以上的人看到?
  3. 若是兩個員工同事看到同一個個訂單,怎樣避免員工,重複審批同一張訂單?
  4. 若是訂單X最早被員工A點開,這是員工A去忙其餘事情,X定點就會一直掛起,怎樣將訂單從新分配?

開發框架

  1. 簡述 MVC 原理以及實現
  2. 怎樣實現 URL 路由
  3. 怎樣實現類,方法訪問權限控制

請問下面代碼怎麼實現?

用你最熟悉的語言實現。

{% 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 %}

進程與多線程

  1. 什麼是阻塞,什麼是非阻塞?
  2. 什麼是同步,什麼是異步?
  3. 什麼狀況下使用線程鎖?
  4. 進程與線程的區別?
  5. 進程間通訊有那幾種,線程通訊有那幾種,以及各自的優點?

消息隊列

消息有哪些瓶頸?

序列化

  1. 什麼是序列化
  2. 經常使用序列化方式都有哪些

CDN應用

  1. CDN 緩存的原理?
  2. CDN 均可能緩存那些內容?
  3. 網站首頁90%的內容是靜態的,可是用戶登陸狀態,消息狀態是動態的怎麼解決?
  4. JSON 可能緩存嗎?
  5. 瀏覽器緩存與CDN緩存的關係,怎樣實現用戶瀏覽器與CDN同時緩存?

面向對象試題?

編寫一個求和程序

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

s.add(10).add(5).add(6)......add(3) 能夠無限的寫下去

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

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

與上面相似

這是 一個簡單的 OOP 面試題,在作多年的面試經驗中,發現不少人不知道怎樣實現上面的問題

Restfull 試題

Restfull 是基於HTTP協議的RPC系統,對於公共服務不存在安全上面的考慮,調用方法也可能是ajax,因此公共系統是開放的。

若是是私有服務,就須要考慮安全問題了,試題以下:

CQRS 問題

  1. 什麼是 CQRS
  2. 能夠在那些地方處理 CQRS

請爲 Restful 增長 HTTP Auth

  1. 怎樣爲 Restful 增長 HTTP 認證
  2. 增長 http 認證有哪些方式
  3. 用戶與密碼安全嗎?

使用 SSL 加密 Restful

  1. 購買的證書與本身生成的證書有什麼區別
  2. SSL 怎樣配置,在哪裏配置
  3. 訪問 SSL 的 Restful 須要注意什麼

 

數據庫應用

數據庫分割問題

  1. 什麼是順平分割,什麼是垂直分割
  2. 分表,分庫有須要主要那些事項
  3. 分表,分庫後怎麼解決誇庫查詢
  4. 分表,分庫後怎麼建立索引

數據庫複製問題

  1. 數據庫複製有哪幾種?
  2. 簡述主從複製,主主複製,環形複製
  3. 當選擇主從複製是軟件開發上有哪些注意事項
  4. 主主如何應用

軟件彈性設計

編譯語言的彈性設計問題

背景模擬: 有一個電商平臺已經開發完畢,編譯打包,上線,運營。 因爲市場瞬息萬變,原有的打折系統設計已經不能知足如今的需求,若是不修改可會會給公司帶來經濟隨時。 如今須要從新修改程序邏輯,但問題來了。目前正在作推廣促銷活動,系統訪問量大不能中斷現有服務,哪怕30都會給公司帶來不可挽回的損失。

個人問題:

  1. 怎樣在這個系統的設計之初解決後面遇到的問題
  2. 如何設計一個彈性打折系統
  3. 在不重啓的狀況下怎樣改編編譯語言的內部運行邏輯

問題延伸: 這個問題能夠延伸到蘋果IOS,例如發佈app到蘋果appstore至少須要半個月,半個月可能存在不少變數,極可能應用被審批經過,程序已經不在適合當前的狀況了。

高可用設計

  1. 什麼是高可用
  2. 什麼是雙機熱備,雙機熱備有那些缺陷
  3. 什麼是雙活
  4. 請簡述實現軟件高可用要考慮那些因素

軟件設計中的災備問題

請簡述設計一個遠程異地災備系統

  1. 兩個機房怎樣設計災備系統
  2. 三個機房怎樣設計災備系統
  3. 跨境狀況須要考慮那些影響因素

軟件災備開發問題

  1. 數據庫怎樣實現災備
  2. 緩存怎樣實現災備
  3. 應用服務器怎樣實現災備
  4. Web 服務器怎樣實現災備
  5. 計劃任務、定時週期運行的程序怎樣災備
  6. 消息隊列怎樣實現災備
  7. 雙活的軟件怎樣實現同一時刻只能一個運行,或者交替運行

軟件部署問題

  1. 怎樣實現軟件自動化部署,實現自動化部署的關鍵幾點是什麼?
  2. 怎樣處理配置文件
  3. 怎樣排除沒必要要或者不但願部署的文件
  4. 怎樣實現增量部署
  5. 怎樣實現差別部署
  6. 怎樣部署大文件,例如視頻等。問題:有一個文件有500M,內容隨時有修改,也會不按期追加,怎樣實現差別部署,而不是再次發佈一個500M的文件。
  7. 怎樣部署編譯軟件
  8. 怎樣備份
  9. 怎樣部署windows程序
  10. 怎樣快速回撤,切換時間點或者指定的版本。

以上不容許使用GIT/SVN實現自動部署。要求自動化不是在30秒內完成。

軟件開發框架

插件的實現原理

  1. 插件有幾部分組成
  2. 如何實現插件安裝,卸載,啓用,禁用?
  3. 安裝,卸載,啓用,禁用怎樣實現不停機,不關閉服務的狀況進行?

口述如何設計一個MVC框架

  1. 怎樣實現 URL 路由
  2. 怎樣實現控制器
  3. 怎樣實現視圖
  4. 怎樣實現模型

口述如何設計一個SOA框架

  1. 框架分爲幾個部分?
  2. 採用什麼協議與框架通訊?
  3. 若是考慮到性能使用二進制協議你怎樣實現?
  4. 如何解決併發衝突?
  5. 如何支持事務?
  6. 你怎樣與消息隊列集成或者通訊?

口述設計一個分佈式計劃任務系統

背景:計劃任務即週期或定時運行的程序,咱們要解決單點故障問題與負載均衡的問題,在一個分佈式系統中單節點是不容許的。

設計要求:可以實現高可用,負載均衡,橫向擴展

  1. 怎樣處理同時運行產生的衝突問題?
  2. 怎樣排隊運行?
  3. 任務如何持久化?
  4. 一個節點宕機,另外一個節點怎麼接管沒有完成的任務?
  5. 如何橫向擴展?
  6. 擴展,收縮,維護若是能作到不停機,不影響業務?

 

相關文章
相關標籤/搜索