出題者:netkiller面試
出處:http://www.netkiller.cn/ajax
下面的面試題不分語言,適用於全部編程語言,更多偏向設計。數據庫
該功用於行政區域劃分,商品分類,等等 例如中國->廣東-深圳 .....編程
要求:windows
無限極分類,層次深度不限瀏覽器
快速檢索,不能使用遞歸緩存
只能使用一個數據庫表實現安全
能夠生成樹形目錄服務器
一個商品有不少屬性,例如尺寸,顏色這些屬性有固定的值,而另外一些屬性如重量,體積是須要填寫具體數值的,而且還有對應的單位。網絡
要求:
商品分類(上一個問題中已經實現)
商品屬性,有多個屬性,且數目不肯定,因此須要設計成能夠無限添加
商品屬性便可下拉選擇,也能夠填寫具體數值
問題:
商品搜索怎麼解決,包含商品名稱,屬性,屬性值,描述的搜索
商品的庫存怎麼設計
分類搜索,怎樣列出全部子分類以及子分類下的全部分類(無限深度)
場景模擬:
用戶開戶註冊時經常填寫了一部分資料,就離開了,有幾種狀況
用戶放棄註冊
網絡鏈接失敗
提交出錯
其餘連接吸引了用戶點擊
等等緣由......
需求:
要求記錄用戶填寫資料,再次回來(很多天/數月後)點擊註冊的時候,用戶不用從新填寫全部資料,只需完成未完成的部分便可。
重要資料例如手機,電郵,即時通信號碼等等須要記錄到數據庫,已被公司回訪客戶。
在用戶成功註冊後應該刪除以前保留在數據庫中的手機,電郵,即時通信等等。
請問如何實現?資料怎樣保存?
簡述什麼是事務處理?
在不能使用數據庫的事務處理以及鎖(表鎖/行級鎖)時,怎麼保持數據一致性?怎麼解決數據庫併發操做?
怎樣解決避免多個用戶讀讀取同一條數據記錄?
怎樣避免多個用戶更新同一條數據
例若有一個電商網站每一個小時有100個用戶下單,公司須要有10個客服處理用戶的訂單。
問題:
當10位員工進入admin後臺,查看訂單會出現什麼問題?
怎樣防止一個訂單被一個以上的人看到?
若是兩個員工同事看到同一個個訂單,怎樣避免員工,重複審批同一張訂單?
若是訂單X最早被員工A點開,這是員工A去忙其餘事情,X定點就會一直掛起,怎樣將訂單從新分配?
簡述 MVC 原理以及實現
怎樣實現 URL 路由
怎樣實現類,方法訪問權限控制
用你最熟悉的語言來實現DB、Field類。
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);
什麼是阻塞,什麼是非阻塞?
什麼是同步,什麼是異步?
什麼狀況下使用線程鎖?
進程與線程的區別?
進程間通訊有那幾種,線程通訊有那幾種,以及各自的優點?
消息有哪些瓶頸?
什麼是序列化
經常使用序列化方式都有哪些
CDN 緩存的原理?
CDN 均可能緩存那些內容?
網站首頁90%的內容是靜態的,可是用戶登陸狀態,消息狀態是動態的怎麼解決?
JSON 可能緩存嗎?
瀏覽器緩存與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 是基於HTTP協議的RPC系統,對於公共服務不存在安全上面的考慮,調用方法也可能是ajax,因此公共系統是開放的。
若是是私有服務,就須要考慮安全問題了,試題以下:
什麼是 CQRS
能夠在那些地方處理 CQRS
怎樣爲 Restful 增長 HTTP 認證
增長 http 認證有哪些方式
用戶與密碼安全嗎?
購買的證書與本身生成的證書有什麼區別
SSL 怎樣配置,在哪裏配置
訪問 SSL 的 Restful 須要注意什麼
什麼是水平分割,什麼是垂直分割
分表,分庫有須要主要那些事項
分表,分庫後怎麼解決誇庫查詢
分表,分庫後怎麼建立索引
數據庫複製有哪幾種?
簡述主從複製,主主複製,環形複製
當選擇主從複製是軟件開發上有哪些注意事項
主主如何應用
背景模擬:
有一個電商平臺已經開發完畢,編譯打包,上線,運營。 因爲市場瞬息萬變,原有的打折系統設計已經不能知足如今的需求,若是不修改可會會給公司帶來經濟隨時。 如今須要從新修改程序邏輯,但問題來了。目前正在作推廣促銷活動,系統訪問量大不能中斷現有服務,哪怕30都會給公司帶來不可挽回的損失。
個人問題:
怎樣在這個系統的設計之初解決後面遇到的問題
如何設計一個彈性打折系統
在不重啓的狀況下怎樣改編編譯語言的內部運行邏輯
問題延伸:
這個問題能夠延伸到蘋果IOS,例如發佈app到蘋果appstore至少須要半個月,半個月可能存在不少變數,極可能應用被審批經過,程序已經不在適合當前的狀況了。
什麼是高可用
什麼是雙機熱備,雙機熱備有那些缺陷
什麼是雙活
請簡述實現軟件高可用要考慮那些因素
數據庫怎樣實現災備
緩存怎樣實現災備
應用服務器怎樣實現災備
Web 服務器怎樣實現災備
計劃任務、定時週期運行的程序怎樣災備
消息隊列怎樣實現災備
雙活的軟件怎樣實現同一時刻只能一個運行,或者交替運行
怎樣實現軟件自動化部署,實現自動化部署的關鍵幾點是什麼?
怎樣處理配置文件
怎樣排除沒必要要或者不但願部署的文件
怎樣實現增量部署
怎樣實現差別部署
怎樣部署大文件,例如視頻等。問題:有一個文件有500M,內容隨時有修改,也會不按期追加,怎樣實現差別部署,而不是再次發佈一個500M的文件。
怎樣部署編譯軟件
怎樣備份
怎樣部署windows程序
怎樣快速回撤,切換時間點或者指定的版本。
以上不容許使用GIT/SVN實現自動部署。要求自動化不是在30秒內完成。
插件有幾部分組成
如何實現插件安裝,卸載,啓用,禁用?
安裝,卸載,啓用,禁用怎樣實現不停機,不關閉服務的狀況進行?
怎樣實現 URL 路由
怎樣實現控制器
怎樣實現視圖
怎樣實現模型
框架分爲幾個部分?
採用什麼協議與框架通訊?
若是考慮到性能使用二進制協議你怎樣實現?
如何解決併發衝突?
如何支持事務?
你怎樣與消息隊列集成或者通訊?
背景:
計劃任務即週期或定時運行的程序,咱們要解決單點故障問題與負載均衡的問題,在一個分佈式系統中單節點是不容許的。
設計要求:
可以實現高可用,負載均衡,橫向擴展
怎樣處理同時運行產生的衝突問題?
怎樣排隊運行?
任務如何持久化?
一個節點宕機,另外一個節點怎麼接管沒有完成的任務?
如何橫向擴展?
擴展,收縮,維護若是能作到不停機,不影響業務?