Java面試總結(2017.10)
Java面試總結(2017.10)
把最近一個月的面試經歷總結一下吧。期間有面試大數據和java,以下主要針對java大概總結一下。
一、某滴(套路:項目、數據結構、算法、數據庫、多線程)
1.手寫鏈表反轉、二分查找(有序循環數組 4 5 1 2 3)
2.mysql索引,哪些地方影響性能?
3.jdk1.8 hashmap 的變化? 數組+樹,數組加表 空間復雜度
4.hashmap的結構優化?
5.concurrenthashmap機制?
6.hbase,為什麽要有列族?
7.rabbitmq、redis相關?
8.公司項目架構(我把自己負責的模塊講了)
9.spark rdd?
10.內存模型,內存管理,GC?
11.js創建對象的方式(用的不多)
12.數據庫引擎,索引,哪些地方涉及到io,怎麽優化?
13.設計清理機制,redis設置過期的值,如何清理?
14.redis存儲類型?
15.springmvc的執行過程,mybatis二級緩存,緩存機制?
16.zookeeper選舉機制?
17.spring core有哪些組件?
18.數據庫隔離機制 臟讀 幻讀?
19.鎖機制?
20.synchronized(排序)與lock(不排序,吞吐量大)的區別?
21.volatile 可見性?
22.多線程實現方法,構造方法參數
二、某東(套路:項目、架構圖、高並發、JVM、數據庫)
1.自我介紹
2.畫出最熟悉項目的架構圖 講一下流程
3.根據流程問細節實現
4.並發安全實現的幾種方式 你在工作中的實現場景
5.java的同步機制
6.synchronized
7.Object方法中的方法
8.ThreadLocal機制
9.一個類裏static方法和普通方法都用synchronized修飾會發生什麽
10.並發下hashmap死鎖問題如何解決
11.Hashtable替換HashMap
12.Collections.synchronizedMap將HashMap包裝起來
13.ConcurrentHashMap替換HashMap
14.jvm內存模型 jvm如何處理String str = new String(“abc”)
15.gc的機制和算法 (何時觸發full gc等)
16.一談最近看過的技術書籍
17.服務器/數據庫高並發/高可用解決方案
18.講一下一次典型寫操作的流程 創建幾個類 如何提升mysql 寫操作的最大並發量
19.查詢的優化
20.如何保證高訪問量下讀寫數據的一致
21.創建表時要註意的事項 什麽時候需要冗余設計
22.哪些字段要建索引 同一張表建多個索引的優缺點
23.你研究過最難的算法是哪個
24.Nginx裏正則的使用
25.Springmvc裏面都有什麽註解 spring aop底層用什麽實現
26.動態代理,反射
27.http狀態碼302 代表什麽
28.cookie請求頭包含哪些內容
29.不用session如何保存用戶數據
30.單例為什麽需要雙重檢查
31.js對象的種類 js如何實現map結構
總結:連續3輪面試 無筆試 對於有工作經驗的會問細節 具體到代碼實現
三、某米(套路:多線程、數據結構、算法、數據庫、linux)
1.柵欄(cyclic),閉鎖\遞減鎖(countdownlatch)
2.多線程,5種狀態,多線程方法參數(核心線程池數量、最大數量、超時時間、時間單位、拒絕服務器助手(handler,隊列))
3.hashmap源碼,參數
4.空間復雜度、時間復雜度
5.兩個線程,分別輸出1,2。如何實現1,2,1,2,1,2,.....交換輸出
6.二分查詢,返回下標,
7.快速排序
8.數據庫,索引,
9.flume 與 storm的區別
10.redis如何存set\list等值
11.volatile作用
12.悲觀鎖,樂觀鎖什麽情境下用
13.如何實現秒殺
14.三維數組賦值,三層for循環,用一個循環?
15.linux查詢某一個文件的IP
16.查找目錄下的所有文件中是否含有某個字符串
17.linux通過關鍵詞查詢 命令 xiaomi.com
18.輸出日誌的最後5行 tail -f 5 ./log
最後總結:以上列舉三家公司面試情況(兩年工作經驗),面試問題大同小異,換湯不換藥。面試時間一般在2個小時左右,我經歷最長的一次是3個半小時。面試一般是三輪(兩輪技術面,一輪HR面),經歷最多的面試是四輪(三輪技術面,一輪HR面)。大公司更註重基礎,比如:數據結構、算法、索引、JVM、優化等,小公司更偏重應用,比如:Spring、struts2、mybatis、數據庫等的使用。
Java面試總結(2017.10)