Java面試題大全

1、心態
   心態很重要!
   心態很重要!
   心態很重要!
   重要的事情說三遍,這一點我以爲是必須放到前面來說。
   找工做以前,有一點你必須清楚,就是找工做是一件看緣分的事情,不是你很牛,你就必定能進你想進的公司,都是有一個機率在那。若是你基礎好,項目經驗足,同時準備充分,那麼你拿到offer的機率就會比較高;相反,若是你準備不充分,基礎也很差,那麼你拿到offer的機率就會比較低,可是你能夠多投幾家公司,這樣拿到offer的概率就要大一點,由於你總有運氣好的時候。因此,不要害怕面試,剛開始失敗了沒什麼的,多投多嘗試,面多了你就天然能成麪霸了。得失心也不要過重,最後每一個人都會有offer的。
   還有就是對待校招的態度,校招的目的並不只僅是爲了找工做,並且也是爲了鍛鍊本身,提高本身;對於每一個大學生來講,真正的校招只有一次,所以必定要珍惜;通過了校招的磨練後,本身的能力將獲得很大的提高;這也是人生一個重要的經歷;java


2、基礎
基礎這東西,各個公司都很看重,尤爲是BAT這種大公司,他們看中人的潛力,他們捨得花精力去培養,因此基礎是重中之重。以前不少人問我,項目經歷少怎麼辦,那就去打牢基礎,當你的基礎好的髮指的時候,你的其餘東西都不重要了。基礎無外乎幾部分:語言(C/C++或java),操做系統,TCP/IP,數據結構與算法,再加上你所熟悉的領域。這裏面其實有不少東西,各大面試寶典都有列舉。在這隻列舉了java後臺工程師所須要的和個人學生面試中所遇到的知識點,儘可能作到全面,若是你掌握瞭如下知識點,去面java後臺工程師應該駕輕就熟。mysql


J2SE基礎
1. 八種基本數據類型的大小,以及他們的封裝類。
2. 若是兩個Integer的值相等,使用==進行判斷的結果是否相等(常量池問題)?
3. 你重寫過hashcode和equals麼,要注意什麼
4. Object有哪些公用方法?
5. Java的四種引用,強弱軟虛,用到的場景。
6. equals與==的區別。
7. try catch finally,try裏有return,finally還執行麼?
8. Excption與Error包結構。OOM你遇到過哪些狀況,SOF你遇到過哪些狀況。
9. Java面向對象的三個特徵與含義。
10. Override和Overload的含義與區別。
11. Interface與abstract類的區別。
12. Static class 與non static class的區別。
13. String、StringBuffer與StringBuilder的區別。
14. ArrayList、LinkedList、Vector的區別。
15. Hashmap的原理
16. Map、Set、List、Queue、Stack的特色與用法。
17. HashMap和HashTable的區別。
18. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼。
19. TreeMap、HashMap、LindedHashMap的區別。
20. Collection包結構,與Collections的區別。
21. Hashmap的大小爲何指定爲2的冪次
22. Arraylist的原理
23. Hashmap中jdk1.8以後作了哪些優化
24. 多線程條件變量爲何要在while體裏
25. Concurrent包裏的其餘東西:ArrayBlockingQueue、CountDownLatch等等。
26. 實現多線程的三種方法:Thread,Runable,Callable.
27. 線程同步的方法:sychronized、lock、reentrantLock等。
28. 寫一個單例模式,如何解決線程安全的問題;
29. 問了爲何用Volatile,synchronize移到方法最外面會怎麼樣?
30. 鎖的等級:方法鎖、對象鎖、類鎖。
31. 寫出生產者消費者模式。
32. Synchronize關鍵字爲何jdk1.5後效率提升了
33. 講一下countDownLatch
34. ThreadLocal的設計理念與做用。
35. ThreadPool用法與優點。
36. wait()和sleep()的區別。
37. 說一個你最熟悉的設計模式
38.講一下你項目中用到了哪些設計模式
39 講一下線程狀態轉移圖
40. Java IO與NIO。
41.Nio的原理
42.Channel和buffer
43.directBuffer和buffer的區別
44.nio和aio的區別
45.I++操做怎麼保證線程安全
46.如何解決併發訪問的錯誤
47.死鎖是什麼呢
48.怎麼解決死鎖
49. 反射的做用於原理。
50. 泛型經常使用特色,List<String>可否轉爲List<Object>。
51. 解析XML的幾種方式的原理與特色:DOM、SAX、PULL。
52. Java與C++對比。
53. Java1.7與1.8新特性。
54. 設計模式:單例、工廠、適配器、責任鏈、觀察者等等。
55.單例模式在你項目裏哪些應用?面試

Java裏有不少很雜的東西,有時候須要你閱讀源碼,大多數可能書裏面講的不是太清楚,須要你在網上尋找答案。
推薦書籍:《java核心技術卷I》《Thinking in java》《java併發編程實戰》《effictive java》《大話設計模式》
 
JVM
1. 內存模型以及分區,須要詳細到每一個區放什麼。
2. 堆裏面的分區:Eden,survival from to,老年代,各自的特色。
3. 對象建立方法,對象的內存分配,對象的訪問定位。
4. GC的兩種斷定方法:引用計數與引用鏈。
5. GC的三種收集方法:標記清除、標記整理、複製算法的原理與特色,分別用在什麼地方,若是讓你優化收集方法,有什麼思路?
6. GC收集器有哪些?CMS收集器與G1收集器的特色。
7. Minor GC與Full GC分別在何時發生?
8. 幾種經常使用的內存調試工具:jmap、jstack、jconsole。
9. 類加載的五個過程:加載、驗證、準備、解析、初始化。
10.雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。
11.分派:靜態分派與動態分派。
10.Java的full gc
11.Full gc會致使什麼問題
12.垃圾回收算法的過程
13.你瞭解的垃圾收集器? Cms收集器的過程
14.怎樣進入老年代?redis

JVM過去過來就問了這麼些問題,沒怎麼變,內存模型和GC算法這塊問得比較多,能夠在網上多找幾篇博客來看看。
推薦書籍:《深刻理解java虛擬機》
 算法


操做系統
1. 進程和線程的區別。
2. 死鎖的必要條件,怎麼處理死鎖。
3. Window內存管理方式:段存儲,頁存儲,段頁存儲。
4. 進程的幾種狀態。
5. IPC幾種通訊方式。
6. 什麼是虛擬內存。
7. 虛擬地址、邏輯地址、線性地址、物理地址的區別。spring

推薦書籍:《深刻理解現代操做系統》
 sql


TCP/IP
1. OSI與TCP/IP各層的結構與功能,都有哪些協議。
2. TCP與UDP的區別。
3. TCP報文結構。
4. TCP的三次握手與四次揮手過程,各個狀態名稱與含義,TIMEWAIT的做用。
5. TCP擁塞控制。
6. TCP滑動窗口與回退N針協議。
7. Http的報文結構。
8. Http的狀態碼含義。
9. Http request的幾種類型。
10. Http1.1和Http1.0的區別
11. Http怎麼處理長鏈接。
12. Cookie與Session的做用於原理。
13. 電腦上訪問一個網頁,整個過程是怎麼樣的:DNS、HTTP、TCP、OSPF、IP、ARP。
14. Ping的整個過程。ICMP報文是什麼。
15. C/S模式下使用socket通訊,幾個關鍵函數。
16. IP地址分類。
17. 路由器與交換機區別。
18. http請求流程
網絡其實大致分爲兩塊,一個TCP協議,一個HTTP協議,只要把這兩塊以及相關協議搞清楚,通常問題不大。
推薦書籍:《TCP/IP協議族》
 數據庫


數據結構與算法
1. 鏈表與數組。
2. 隊列和棧,出棧與入棧。
3. 鏈表的刪除、插入、反向。
4. 字符串操做。
5. Hash表的hash函數,衝突解決方法有哪些。
6. 各類排序:冒泡、選擇、插入、希爾、歸併、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定。
7. 快排的partition函數與歸併的Merge函數。
8. 對冒泡與快排的改進。
9. 二分查找,與變種二分查找。
10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。
11. 二叉樹的前中後續遍歷:遞歸與非遞歸寫法,層序遍歷算法。
12. 圖的BFS與DFS算法,最小生成樹prim算法與最短路徑Dijkstra算法。
13. KMP算法。
14. 排列組合問題。
15. 動態規劃、貪心算法、分治算法。(通常不會問到)
16. 大數據處理:相似10億條數據找出最大的1000個數.........等等
17. 加密解密瞭解麼?幾種算法,講一下你瞭解的
18.寫一個兩個有序鏈表合併成一個有序鏈表
19.堆排序的原理
20.介紹一下紅黑樹
21.對算法有什麼瞭解?答主先回答了動態規劃,解釋了一下dp的思想
22.快排的思想講一下
23.講一下穩定的排序算法和不穩定的排序算法
24.手撕算法:一棵二叉排序樹,給定一個數,找到與給定數差值最小的數
25.場景題:設計一個系統,解決搶購時所須要的大量的短連接的功能,如何保證高併發,如何設計短連接
26.手撕算法:兩個排序的數組A和B分別含有m和n個數,找到兩個排序數組的中位數,答主用的二分,時間複雜度爲O(log (m+n))。結果面試官不滿意,
讓用歸併的思想作,時間複雜度其實更高了
27.手撕算法:假設你是一個專業的竊賊,準備沿着一條街打劫房屋。每一個房子都存放着特定金額的錢。你面臨的惟一約束條件是:相鄰的房子裝着相互
聯繫的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。給定一個非負整數列表,表示每一個房子中存放的錢, 算一算,若是今晚去
打劫,你最多能夠獲得多少錢 在不觸動報警裝置的狀況下。
28.算法題:給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。
29.手撕算法:最小公倍數和最大公約數
30.手撕算法:反轉單鏈表
31.手撕算法:實現相似微博子結構的數據結構,輸入一系列父子關係,輸出一個相似微博評論的父子結構圖
32.手撕一個單例模式
33.智力題:時針分針何時重合編程

算法的話實際上是個重點,由於最後都是要你寫代碼,因此算法仍是須要花很多時間準備,這裏有太多算法題,寫不全,個人建議是沒事多在OJ上刷刷題(牛客網、leetcode等),劍指offer上的算法要能理解並本身寫出來,編程之美也推薦看一看。
推薦書籍:《大話數據結構》《劍指offer》《編程之美》《編程珠璣》
 
javaEE:設計模式

1.servlet工做流程,如何解決配置文件過於繁瑣的問題
2.JSP和Servlet有什麼區別?爲何要搞出兩個來。
3.forward 和 redirect區別
4.servlet的幾個方法 doget dopost區別
5.在多個服務器之間session是怎麼共享的。
6.servlet工做流程,如何解決配置文件過於繁瑣的問題
7.session的機制;session和cookie區別
8.servlet和filter的區別。filter你在哪些地方用到過。
9.怎麼解決session一致性緩存的問題


框架:

1.Hibernate的延遲加載是怎麼實現的
2.Hibernate持久化的狀態。
3.Hibernate的生成策略
4.Hibernate的batch有數量限制麼
5.hiberate與mybatis區別
6.Mybatis高級映射
7.Spring IOC和AOP的理解,它們的原理是什麼,若是讓你本身搞個IOC,AOP的話,怎麼搞。
8.Struts2和SpringMVC的區別。
9.spring實現事務的方式有哪些。
10.spring中$與#。
11.spring的事務有幾種方式?談談spring事務的隔離級別和傳播行爲。
12.spring中用到了哪些設計模式,線程池;
13.Spring中autowire和resourse關鍵字的區別
14.講講你對spring的理解,不要把ioc和aop背給我聽
15.介紹spring中的熟悉的註解
16.讓你實現autowire註解的功能你會如何實現
17.Spring的aop怎麼實現
18.Spring的aop有哪些實現方式

19.動態代理的實現方式和區別

框架裏有不少很雜的東西,有時候須要你閱讀源碼,大多數可能書裏面講的不是太清楚,須要你在網上尋找答案,也同時須要看一下官方的文檔

 

數據庫
1.講一下數據的acid
2.什麼是一致性
3.什麼是隔離性
4.Mysql的隔離級別
5.每一個隔離級別是如何解決
6.數據庫的索引原理
7.非聚簇索引和聚簇索引
8.索引的使用注意事項
9.項目用到什麼數據庫?隔離級別?每一個隔離級別各作了什麼
10.數據庫的索引?mysql不一樣引擎索引的區別
11.數據庫的索引原理
12.索引使用的注意事項
13.Mysql的數據庫引擎,區別特色
14.一千萬用戶併發搶購,怎麼設計
15.何時用讀鎖
16.何時用寫鎖
17.Cas的原理,使用場景
18.數據庫的瓶頸
19.緩存還沒更新到主存,服務器掛了怎麼辦
20.數據庫掛了怎麼辦
21.鎖的實現原理
22.怎麼解決緩存和主存的一致性問題
23.數據庫掛了怎麼怎麼辦
24.怎麼保證一致性
25.分佈式事務知道麼
26.介紹分佈式事務
27.爲何負載均衡
28.怎麼實現負載均衡
29.數據庫掛了怎麼辦?除了熱備份還有什麼方法
30.數據庫的索引
31.數據庫的隔離級別
32.Mysql的容災備份
33.Redis和memcache 的區別
34.爲何選擇redis
35.mysql數據庫的引擎和區別
36.看你最近博客寫的是redis,介紹redis和mysql的區別
37.Redis的應用場景
38.設計題,一個圖書館管理系統,數據庫怎麼設計,需求本身定
39.Redis的特色
40.分佈式事務瞭解麼
41.Mongodb和關係型數據庫之間的區別,還了解其餘的非關係型數據庫沒
42.Redis如何解決key衝突
43.有深刻了解過redis嗎?
44.Redis的優點和特色
45.Redis和mysql的區別
46.Redis的持久化有哪些方式,具體原理
47.若是成功的用戶有10萬,redis存不下怎麼處理
48.瞭解redis源碼麼
49.瞭解redis集羣麼
50.Redis的持久化?有哪些方式,原理是什麼?
51.Mysql對聯合索引有優化麼?會自動調整順序麼?哪一個版本開始優化?
52.Redis的應用
53.Redis的持久化的方式和原理


新技術
1.若是你夠牛,mq,dubbo,zookeeper都會問到
2.對高負載有了解麼
3.對高併發有了解麼?
4.消息隊列了解麼
5.分佈式瞭解麼
6.本身寫一個tomcat服務器,你會怎麼寫
7.分佈式服務器會出現哪些問題    
8.反爬蟲的機制,有哪些方式


場景
1.場景題:設計一個下單系統,下單成功後能夠給用戶發優惠券
2.接上面場景題:服務器掛了,優惠券還沒發怎麼辦
3.場景題:千萬用戶搶購,如何處理高併發,而且有一個連接,指向前一天搶購成功的用戶,如何設計這個系統和數據庫
4.若是後臺處理搶購請求的服務器,每次最多承受200的負載,系統該怎麼設計


hr
你的職業規劃
有哪些offer
爲何還來咱們這
自我介紹


3、 項目
關於項目,這部分每一個人的所作的項目不一樣,因此不能具體的講。項目再也不與好與很差,在於你會不會包裝,有時候一個很low的項目也能包裝成比較高大上的項目,多用一些專業名詞,突出關鍵字,能使面試官能比較容易抓住重點。在聊項目的過程當中,其實你的整個介紹應該是有一個大致的邏輯,這個時候是在考驗你的表達與敘述能力,因此好好準備很重要。、


面試官喜歡問的問題無非就幾個點:
1. XXX(某個比較重要的點)是怎麼實現的?
2. 你在項目中遇到的最大的困難是什麼,怎麼解決的?
3. 項目某個部分考慮的不夠全面,若是XXXX,你怎麼優化?
4. XXX(一個新功能)須要實現,你有什麼思路?
5. XXX項目的亮點有哪些?
6. 若是數據量很大,併發數不少怎麼處理?
7. 項目介紹,最複雜的表
8. 項目介紹
9. 項目架構
10.項目難點
11.項目裏一個完整請求的流程
12.項目的優化

其實你應該可以預料到面試官要問的地方,請提早準備好,若是被問到沒有準備到的地方,也沒關係張,必定要說出本身的想法,對不對都不是關鍵,主
要是有本身的想法,另外,你應該對你的項目總體框架和你作的部分足夠熟悉。


4、 其餘
你應該問的問題
面試裏,最後面完以後通常面試官都會問你,你有沒有什麼要問他的。其實這個問題是有考究的,問好了實際上是有加分的,通常不要問薪資,主要應該是:關於公司的、技術和自身成長的。

 

如下是我常問的幾個問題,若是須要能夠參考:1. 貴公司一貫以XXX著稱,能不能說明一下公司這方面的特色?2. 貴公司XXX業務發展很好,這是公司發展的重點麼?3. 對技術和業務怎麼看?4. 貴公司通常的團隊是多大,幾我的負責一個產品或者業務?5. 貴公司的開發中是否會使用到一些最新技術?6. 對新人有沒有什麼培訓,會不會安排導師?7. 對Full Stack怎麼看?8. 你以爲我有哪些須要提升的地方? 知識面除了基礎外,你還應該對其餘領域的知識有多少有所涉獵。對於你所熟悉的領域,你須要多瞭解一點新技術與科技前沿,你才能和麪試官談笑風生。軟實力什麼是軟實力,就是你的人際交往、靈活應變能力,在面試過程當中,良好的禮節、流暢的表達、積極的交流其實都是很是重要的。不少公司可能不光看你的技術水平怎麼樣,而更看重的是你這我的怎麼樣的。因此在面試過程當中,請保持誠信、積極、樂觀、幽默,這樣更容易獲得公司青睞。不少時候咱們都會遇到一個狀況,就是面試官的問題我不會,這時候大多數狀況下不要立刻說我不會,要懂得牽引,例如面試官問我C++的多態原理,我不懂,但我知道java的,哪我能夠向面試官解釋說我知道java的,相似的這種能夠往相關的地方遷移(可是須要注意的是必定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要儘量的展現本身,表現出你的主動性,向面試官推銷本身。還有就是遇到智力題的時候,不要什麼都不說,面試官其實不是在看你的答案,而是在看你的邏輯思惟,你只要說出你本身的看法,有必定的思考過程就行。 

相關文章
相關標籤/搜索