前兩天,參加了搜狗實習的面試。因為實習是一時的想法,沒有做太多准備。第一天投簡歷,第二天就面試了。搜狗營銷事業部的董先生面試的,總體來說表示的十分不好,好多地方都欠缺。特此把面試中的問題記錄下來,留作後續復習使用。
設計模式
- 選擇你熟悉的設計模式,畫出UML圖。(策略模式、裝飾者模式、門面模式等)
- 你在項目中使用到了什麼設計模式,為什麼使用?
數據庫
- 如果要設計一個分布式數據庫,你會怎麼設計,需要考慮什麼。
- 分布式事務的實現方式。
- 數據庫的隔離級別。
- 數據庫加索引的時候,采用的什麼數據結構。如果使用Like進行查詢,使不使用索引。
Java異常
- 異常有那幾大類,ClassNotFound屬於哪一類,這些異常有什麼區別。
- 在項目中構建的業務邏輯異常,采用的運行時異常還是檢查異常。
Java並發
- synchronized關鍵字加在一個靜態方法上時,加鎖的對象是什麼。
- 線程的狀態轉換圖,wait和sleep的區別。
- synchronized實現的工作原理是什麼。
- 什麼是Java Monitor的概念,主要作用是什麼。
- 生產者和消費者模型,偽代碼實現。
Java容器
- HashMap的數據結構是什麼,怎麼實現O(1)的復雜度。
- HashTable、HashMap和ConcurrentHashMap的數據結構實現。
- ConcurrentHashMap的get,put和size方法的加鎖的步驟和方法。
項目
- 全國高考錄取系統的架構圖,你開發的模塊要點。
- 如果程序有性能上的問題,調優的思路是什麼。
- Java資源占用比較多,使用什麼工具去查看資源占用情況。
算法
總結
- 原來看過的書,例如設計模式、Java並發編程沒有時常復習,現在一時想不起來。
- 學習的課程,分布式數據庫、大數據平台技術還是有些用處,需要整理和復習。
- Java的基礎知識還是牢固,需要經常總結復習。
- 在項目上的問題,需要更深一步思考。
面試後,設計了一個自己的技術學習路線,主要從三個層次:
- Java基礎知識:設計模式,Java 容器,Java 異常,Java 並發等。學習完成後,完成一個小型項目的練習與開發。
- Java進階:Jvm 相關知識,Java 網絡編程,Java RPC,Java 網絡架構,CDN,Spring,Memcache等系統的架構了解。
- 大數據架構:分布式數據庫,分布式集群管理,大數據處理平台。
這次面試後,對自己觸動很大。就想在大三去找的騰訊實習面試一樣,打擊後,毅然決然的選擇了保研道路,並取得了很好的結果。但這次,已經是退無可退,迫切需要自己在技術方面做全面的提升。