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


Senior software engineer

Mar 2, 2016 面試

高級軟件工程師

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

設計一個分類功能

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

要求: 瀏覽器

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

商品以及屬性功能的設計

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

要求: 網絡

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

問題: 多線程

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

用戶註冊的功能需求

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

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

等等緣由…… 框架

需求: 異步

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

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


事務處理相關

簡述什麼是事務處理?

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

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

開發框架

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

請問下面代碼怎麼實現?

用你最熟悉的語言實現。

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)

進程與多線程

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

消息隊列

消息有哪些瓶頸?


CDN應用

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

先寫到這裏,後面會不斷更新。。。。。

相關文章
相關標籤/搜索