Java研發方向如何準備BAT技術面試

Java研發方向如何準備BAT技術面試

對於在校的大多數學生來說,可能不知道如何正確衡量自己掌握的技術,更不知道BAT這樣的公司會要求自己必須具備什麼樣的技術能力。對於Java研發方向的技術面試,這裡總結了一些你必須要掌握的技術知識點,考察的內容會比這裡總結的多,所以如果想要有一個很不錯的offer,下面的知識點需要都具備。

Java基礎:

1. 面向對象和麵向過程的區別2. Java的四個基本特性(抽象、封裝、繼承,多態)3. Overload和Override的區別4. 構造器Constructor是否可被override5. 訪問控制符public,protected,private,以及默認的區別6. 是否可以繼承String類7. String和StringBuffer、StringBuilder的區別8. hashCode和equals方法的關係9. 抽象類和接口的區別10. 自動裝箱與拆箱11. 什麼是泛型、為什麼要使用以及泛型擦除12. Java中的集合類及關係圖13. HashMap實現原理(看源代碼)14. HashTable實現原理(看源代碼)15. HashMap和HashTable區別16. HashTable如何實現線程安全(看源代碼)17. ArrayList和vector區別(看源代碼)18. ArrayList和LinkedList區別及使用場景19. Collection和Collections的區別20. Concurrenthashmap實現原理(看源代碼)21. Error、Exception區別22. Unchecked Exception和Checked Exception,各列舉幾個23. Java中如何實現代理機制(JDK、CGLIB)24. 多線程的實現方式25. 線程的狀態轉換26. 如何停止一個線程27. 什麼是線程安全28. 如何保證線程安全29. Synchronized如何使用30. synchronized和Lock的區別31. 多線程如何進行信息交互32. sleep和wait的區別(考察的方向是是否會釋放鎖)33. 多線程與死鎖34. 如何才能產生死鎖35. 什麼叫守護線程,用什麼方法實現守護線程36. Java線程池技術及原理37. java併發包concurrent及常用的類38. volatile關鍵字39. Java中的NIO,BIO,AIO分別是什麼40. IO和NIO區別41. 序列化與反序列化42. 常見的序列化協議有哪些43. 內存溢出和內存洩漏的區別44. Java內存模型及各個區域的OOM,如何重現OOM45. 出現OOM如何解決46. 用什麼工具可以查出內存洩漏47. Java內存管理及回收算法48. Java類加載器及如何加載類(雙親委派)49. xml解析方式50. Statement和PreparedStatement之間的區別

JavaEE:

1. servlet生命週期及各個方法2. servlet中如何自定義filter3. JSP原理4. JSP和Servlet的區別5. JSP的動態include和靜態include6. Struts中請求處理過程7. MVC概念8.Spring mvc與Struts區別9. Hibernate/Ibatis兩者的區別10. Hibernate一級和二級緩存11. Hibernate實現集群部署12. Hibernate如何實現聲明式事務13. 簡述Hibernate常見優化策略14. Spring bean的加載過程(推薦看Spring的源碼)15. Spring如何實現AOP和IOC16. Spring bean注入方式17. Spring的事務管理(推薦看Spring的源碼)18. Spring事務的傳播特性19. springmvc原理20. springmvc用過哪些註解21. Restful有幾種請求22. Restful好處23. Tomcat,Apache,JBoss的區別24. memcached和redis的區別25. 有沒有遇到中文亂碼問題,如何解決的26. 如何理解分佈式鎖27. 你知道的開源協議有哪些28. json和xml區別

設計模式:

1. 設計模式的六大原則2. 常用的設計模式3. 用一個設計模式寫一段代碼或畫出一個設計模式的UML4. 如何理解MVC5. 高內聚,低耦合方面的理解

算法:

1. 深度優先、廣度優先算法2. 排序算法及對應的時間複雜度和空間複雜度3. 寫一個排序算法4. 查找算法5. B+樹和二叉樹查找時間複雜度6. KMP算法、hash算法7. 常用的hash算法有哪些8. 如何判斷一個單鏈表是否有環?9. 給你一萬個數,如何找出裡面所有重複的數?用所有你能想到的方法,時間複雜度和空間複雜度分別是多少?10. 給你一個數組,如何裡面找到和為K的兩個數?11. 100000個數找出最小或最大的10個?12. 一堆數字裡面繼續去重,要怎麼處理?

數據結構:

1. 隊列、棧、鏈表、樹、堆、圖2. 編碼實現隊列、棧

Linux:

1. linux常用命令2. 如何查看內存使用情況3. Linux下如何進行進程調度

操作系統:

1. 操作系統什麼情況下會死鎖2. 產生死鎖的必要條件3. 死鎖預防

數據庫:

1. 範式2. 數據庫事務隔離級別3. 數據庫連接池的原理4. 樂觀鎖和悲觀鎖5. 如何實現不同數據庫的數據查詢分頁6. SQL注入的原理,如何預防7. 數據庫索引的實現(B+樹介紹、和B樹、R樹區別)8. SQL性能優化9. 數據庫索引的優缺點以及什麼時候數據庫索引失效10.Redis的存儲結構

網絡:

1. OSI七層模型以及TCP/IP四層模型2. HTTP和HTTPS區別3. HTTP報文內容4. get提交和post提交的區別5. get提交是否有字節限制,如果有是在哪限制的6. TCP的三次握手和四次揮手7. session和cookie的區別8. HTTP請求中Session實現原理9. redirect與forward區別10.DNS11. TCP和UDP區別

安全:

1. 如果客戶端不斷的發送請求連接會怎樣2. DDos攻擊3. DDos預防4. 那怎麼知道連接是惡意的呢?可能是正常連接

其它:

1. 說一個你參與的項目、其中作為什麼角色2. 遇到最困的問題是什麼,怎麼解決的3. 你認為自己有那些方面不足4. 平常如何學習的5. 如何評價自己

智力題:

1. 給你50個紅球和50個黑球,有兩個一模一樣的桶,往桶裡放球,讓朋友去隨機抽,採用什麼策略可以讓朋友抽到紅球的概率更高?2. 從100個硬幣中找出最輕的那個假幣?

總結:

以上這些考察的知識點,在強大的互聯網上都可以搜索到答案,有些答案可能不是很全,所以需要自己去總結,但是對於一些需要知道原理的知識點,還是推薦看源代碼或者對於的書,然後總結得到自己的東西。

Java基礎的知識點推薦《Java編程思想》,JVM的推薦《深入理解Java虛擬機》,Spring原理的推薦《Spring源碼深度解析》,對於網站架構的推薦《大型網站技術架構核心原理與案例分析》。

寫在最後

get最新最全的IT技能,免費領取各種編程資料(Java、python、前端、大數據、區塊鏈....)


分享到:


相關文章: