1. 程式人生 > >Java面試題大全

Java面試題大全

新技術 override 水平 空間 比較 改進 win ots springmvc

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


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


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.怎樣進入老年代?

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


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

推薦書籍:《深入理解現代操作系統》


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
為什麽還來我們這
自我介紹


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


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

其實你應該能夠預料到面試官要問的地方,請提前準備好,如果被問到沒有準備到的地方,也不要緊張,一定要說出自己的想法,對不對都不是關鍵,主
要是有自己的想法,另外,你應該對你的項目整體框架和你做的部分足夠熟悉。


四、 其他
你應該問的問題
面試裏,最後面完之後一般面試官都會問你,你有沒有什麽要問他的。其實這個問題是有考究的,問好了其實是有加分的,一般不要問薪資,主要應該是:關於公司的、技術和自身成長的。

以下是我常問的幾個問題,如果需要可以參考:
1. 貴公司一向以XXX著稱,能不能說明一下公司這方面的特點?
2. 貴公司XXX業務發展很好,這是公司發展的重點麽?
3. 對技術和業務怎麽看?
4. 貴公司一般的團隊是多大,幾個人負責一個產品或者業務?
5. 貴公司的開發中是否會使用到一些最新技術?
6. 對新人有沒有什麽培訓,會不會安排導師?
7. 對Full Stack怎麽看?
8. 你覺得我有哪些需要提高的地方?

知識面
除了基礎外,你還應該對其他領域的知識有多少有所涉獵。對於你所熟悉的領域,你需要多了解一點新技術與科技前沿,你才能和面試官談笑風生。
軟實力
什麽是軟實力,就是你的人際交往、靈活應變能力,在面試過程中,良好的禮節、流暢的表達、積極的交流其實都是非常重要的。很多公司可能不光看你的技術水平怎麽樣,而更看重的是你這個人怎麽樣的。所以在面試過程中,請保持誠信、積極、樂觀、幽默,這樣更容易得到公司青睞。很多時候我們都會遇到一個情況,就是面試官的問題我不會,這時候大多數情況下不要馬上說我不會,要懂得牽引,例如面試官問我C++的多態原理,我不懂,但我知道java的,哪我可以向面試官解釋說我知道java的,類似的這種可以往相關的地方遷移(但是需要註意的是一定不要不懂裝懂,被拆穿了是很尷尬的),意思就是你要盡可能的展示自己,表現出你的主動性,向面試官推銷自己。還有就是遇到智力題的時候,不要什麽都不說,面試官其實不是在看你的答案,而是在看你的邏輯思維,你只要說出你自己的見解,有一定的思考過程就行。

五、面試技巧
1.技術面試時,會的問題以回答,不會的問題怎麽回答;
2.HR面時,註意自己的禮貌;
3.聽懂面試官的問題
---------------------
作者:戚愛斌
來源:CSDN
原文:https://blog.csdn.net/qqyb2000/article/details/78474771
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

Java面試題大全