面試內容大綱


面試題目

一、Spring.mvc的優點,原理,流程 
二、Mybatis的原理優點 
三、集合裏面那些對象的原理 
四、擴容原理,特別是map的底層 
五、Hashmap、Hashtable和cocurrentHashMap的區別,要講出它們各自的實現原理才行,好比Hashmap的擴容機制、cocurrentHashMap的段鎖原理、多線程安全性。 
六、幾種造線程池的方法,區別 
七、線程有哪幾種狀態,他們是如何轉換的 
八、Rpc原理,以及大體流程 
九、Nio和netty的區別,爲何netty的性能高,nio,bio,aio的區別 
十、阻塞io,和非阻塞io的區別 
十一、redis的集羣 
十二、各類鎖的區別,原理使用,併發包的熟悉程度 
1三、Redis和數據庫結合的使用場景 
1四、Memached過程和原理 (問的少) 
1五、Redis作隊列的原理 
1六、zk作訂閱的原理,底層,zk的選舉算法,是怎麼處理的 
1七、hash碰撞的解決辦法 
1八、treemap紅黑樹(問的少) 
1九、jvm調優經驗 
20、jvm內存模型,jvm雙親委派,jvm經常使用參數,你平時調優怎麼設置的,舉例子。 
2一、類加載器機制 
2二、數據庫索引 
2三、手寫遞歸,手寫二分查找,手寫生產者,消費者模型 
2四、js閉包(問的少) 
2五、nio是否瞭解 阻塞以後通知機制是怎樣的? 
2六、Java 的序列化作什麼用的 序列化id會出現哪些問題? 
2七、 在Java中Executor和Executors的區別? 
2八、 爲何使用Executor框架比使用應用建立和管理線程好? 
2九、怎麼經過linux命令去分析jvm裏面那個線程阻塞了 
30、Java中用到的線程調度算法是什麼? 
3一、什麼是多線程中的上下文切換? 
3二、classloader結構,是否能夠本身定義一個java.lang.String類,爲何? 雙親代理機制。 
3三、有沒有作過jvm內存調優,如何作的,舉例子,用過哪些工具? 
3四、Java中的volatile關鍵是什麼做用?怎樣使用它?在Java中它跟synchronized方法有什麼不一樣? 
3五、面試官從簡歷裏抽了一個較感興趣的項目,讓把項目簡單介紹了下,針對項目問了幾個技術問題 
3六、 介紹Java中垃圾回收機制,程序員平時須要關注這個嗎?爲何?請舉例說明。 
3七、數據庫隔離級別介紹、舉例說明。 
3八、override和overload的區別。 
3九、求二叉樹的最大距離(即相距最遠的兩個葉子節點),寫代碼。 
40、 兩個棧實現一個隊列,寫代碼。 
4一、 你以爲你的優點是什麼?有什麼技術薄弱點嗎? 
4二、數據庫sql調優,慢sql定位 
4三、索引有哪幾種,區別,使用場景 
4四、mysql引擎,哪幾種,區別使用場景 
4五、linux shell腳本的使用,統計,排序等等 
4六、linux 經常使用命令,例如top命令查看進程的後每一個參數的意義 
4七、樂觀鎖和悲觀鎖 
4八、nginx的配置 
4九、你遇到的OOM問題,怎麼解決的。 
50、你在項目中遇到過那些高併發的問題,怎麼解決的。 
5一、談談常見的負載均衡策略 分別有什麼優缺點,用過哪些 
5二、jdk\bin下的工具你用過哪些java

算法基礎

寫java的基本上都是作應用系統的,用到算法的機會幾乎沒有,因此通常不會考。可是若是工做年限比較長,保不齊面試官懷疑你的編程能力,故意要考考,因此快排、堆排、逆轉鏈表、遍歷二叉樹之類的基礎仍是複習複習吧。 
若是面的是bat核心部門,擔憂遇見裝逼人士的話,也能夠提早複習下《編程之美》之類的。 
算法問題,寫不出代碼,可是若是說出思路會有加分mysql

java基礎

hashmap面試官最喜歡考,必定要搞明白原理。 
treemap知道就能夠,應該沒人閒的蛋疼考紅黑樹。 
threadlocal面試官也喜歡考,要搞明白原理 
反射、動態代理、ioc、aop複習下吧,幾乎必考 
nio、aio幾乎都會問,抽空寫寫例程,知道netty mina 
class loader: 知道雙親委派,若是知道tomcat、jetty class loader異同更佳linux

gc

gc不少面試官都喜歡考 
面試前背熟各類gc算法的區別,理解原理。 
G1不少面試官本身都不明白,沒時間就不用管。nginx

高併發

傳統IT通常接觸不到高併發,不過不要緊按下面說的作,應付面試問題不大 
把java.util.concurrent下面全部的包和類通讀一遍,理解原理、記住核心代碼、寫例程,網上有不少concurrent相關類原理解析的文章,對着文章看源代碼理解起來問題不大。 
有些類代碼很複雜好比aqs,看不明白就算了,也不用太花功夫,記住原理便可,由於大部分面試官也不明白。 
必定要寫例程,例程最好跟你的業務能扯上一點點關係,這樣面試的時候就是你實際項目裏面的代碼了。 
面試官喜歡考的類有:ConcurrentHashMap、讀寫鎖、Condition、線程池、Barrier、CountDownLatch、Callable、BlockingQueue程序員

hdfs和mr

傳統IT通常也接觸不到,若是不想準備就算了,若是想準備的話,就在本身的開發機上撘3個linux虛機, 按照網上的教程本身一步一步撘一個hadoop環境出來,而後找幾個實際業務中生成出來的log,寫幾個mr程序處理一下。 
面試的時候就能夠很謙虛的說,實際項目裏面用過,可是用的很少web

application server

websphere、weblogic、jboss之類的就不用準備了,應該沒人問你這些啦。 
有時間的話,看看tomcat和jetty的源代碼,重點看線程模型和io,這將是一個很好的加分項面試

數據庫

oracle、sybase、db2不會有人關心了,若是以前沒用過mysql的話,找本介紹innodb原理的書好好通讀一遍吧。 
一、理解myisam和innodb的區別 二、理解關係型數據庫索引的原理,理解一些簡單的索引優化的原則。 
面試官很喜歡給出一堆where子句,考索引、複合索引什麼狀況下起做用 
三、致使數據庫索引失效的場景有哪些 
四、not in 與 not exists 有什麼區別? in查詢不對null進行處理 
五、like 是否走索引?什麼狀況下走 什麼狀況下不走redis

緩存

一致性哈希不少面試官喜歡考,提早準備下吧。算法

ssh框架

這些沒搞過就沒搞過吧,這種框架層面的東西,對於一個有經驗的java碼農,學起來也就是分分鐘的事情。 
不過你也能夠說這些我沒用過,可是我知道原理,而後說一堆動態代理、cglib的原理出來,也是加分。sql

以上是一些面試題目,和基礎知識。若是同時在生產環境,有不少排查處理問題的經驗,會比較加分。通常面試沒啥問題,可是仍是會考察寫代碼功底,因此仍是須要準備下

相關文章
相關標籤/搜索