? ? ? 最近BAT等各大互聯網巨頭們的校招陸陸續續都準備開始了,可能對于在校的大多數學生來說,不知道如何正確衡量自己掌握的技術,更不知道BAT這樣的公司會要求自己必須具備什么樣的技術能力。對于Java研發方向的技術面試,這里總結了一些你必須要掌握的技術知識點,考察的內容會比這里總結的多,所以如果想要有一個很不錯的offer,下面的知識點需要都具備。社招考察的內容會在此基礎上增加項目經驗、技術實戰經驗、熱門技術的使用及理解。更多精彩內容請關注我的微信公眾號:JavaQ。
Java基礎:
面向對象和面向過程的區別
Java的四個基本特性(抽象、封裝、繼承,多態)
Overload和Override的區別
構造器Constructor是否可被override
訪問控制符public,protected,private,以及默認的區別
是否可以繼承String類
String和StringBuffer、StringBuilder的區別
hashCode和equals方法的關系
抽象類和接口的區別
自動裝箱與拆箱
什么是泛型、為什么要使用以及泛型擦除
Java中的集合類及關系圖
HashMap實現原理(看源代碼)
HashTable實現原理(看源代碼)
HashMap和HashTable區別
HashTable如何實現線程安全(看源代碼)
ArrayList和vector區別(看源代碼)
ArrayList和LinkedList區別及使用場景
Collection和Collections的區別
Concurrenthashmap實現原理(看源代碼)
Error、Exception區別
Unchecked Exception和Checked Exception,各列舉幾個
Java中如何實現代理機制(JDK、CGLIB)
多線程的實現方式
線程的狀態轉換
如何停止一個線程
什么是線程安全
如何保證線程安全
Synchronized如何使用
synchronized和Lock的區別
多線程如何進行信息交互
sleep和wait的區別(考察的方向是是否會釋放鎖)
多線程與死鎖
如何才能產生死鎖
什么叫守護線程,用什么方法實現守護線程
Java線程池技術及原理
java并發包concurrent及常用的類
volatile關鍵字
Java中的NIO,BIO,AIO分別是什么
IO和NIO區別
序列化與反序列化
常見的序列化協議有哪些
內存溢出和內存泄漏的區別
Java內存模型及各個區域的OOM,如何重現OOM
出現OOM如何解決
用什么工具可以查出內存泄漏
Java內存管理及回收算法
Java類加載器及如何加載類(雙親委派)
xml解析方式
Statement和PreparedStatement之間的區別
JavaEE:
servlet生命周期及各個方法
servlet中如何自定義filter
JSP原理
JSP和Servlet的區別
JSP的動態include和靜態include
Struts中請求處理過程
MVC概念
Spring mvc與Struts區別
Hibernate/Ibatis兩者的區別
Hibernate一級和二級緩存
Hibernate實現集群部署
Hibernate如何實現聲明式事務
簡述Hibernate常見優化策略
Spring bean的加載過程(推薦看Spring的源碼)
Spring如何實現AOP和IOC
Spring bean注入方式
Spring的事務管理(推薦看Spring的源碼)
Spring事務的傳播特性
springmvc原理
springmvc用過哪些注解
Restful有幾種請求
Restful好處
Tomcat,Apache,JBoss的區別
memcached和redis的區別
有沒有遇到中文亂碼問題,如何解決的
如何理解分布式鎖
你知道的開源協議有哪些
json和xml區別
設計模式:
設計模式的六大原則
常用的設計模式
用一個設計模式寫一段代碼或畫出一個設計模式的UML
如何理解MVC
高內聚,低耦合方面的理解
算法:
深度優先、廣度優先算法
排序算法及對應的時間復雜度和空間復雜度
寫一個排序算法
查找算法
B+樹和二叉樹查找時間復雜度
KMP算法、hash算法
常用的hash算法有哪些
如何判斷一個單鏈表是否有環?
給你一萬個數,如何找出里面所有重復的數?用所有你能想到的方法,時間復雜度和空間復雜度分別是多少?
給你一個數組,如何里面找到和為K的兩個數?
100000個數找出最小或最大的10個?
一堆數字里面繼續去重,要怎么處理?
數據結構:
隊列、棧、鏈表、樹、堆、圖
編碼實現隊列、棧
Linux:
linux常用命令
如何查看內存使用情況
Linux下如何進行進程調度
操作系統:
操作系統什么情況下會死鎖
產生死鎖的必要條件
死鎖預防
數據庫:
范式
數據庫事務隔離級別
數據庫連接池的原理
樂觀鎖和悲觀鎖
如何實現不同數據庫的數據查詢分頁
SQL注入的原理,如何預防
數據庫索引的實現(B+樹介紹、和B樹、R樹區別)
SQL性能優化
數據庫索引的優缺點以及什么時候數據庫索引失效
Redis的存儲結構
網絡:
OSI七層模型以及TCP/IP四層模型
HTTP和HTTPS區別
HTTP報文內容
get提交和post提交的區別
get提交是否有字節限制,如果有是在哪限制的
TCP的三次握手和四次揮手
session和cookie的區別
HTTP請求中Session實現原理
redirect與forward區別
DNS
TCP和UDP區別
安全:
如果客戶端不斷的發送請求連接會怎樣
DDos攻擊
DDos預防
那怎么知道連接是惡意的呢?可能是正常連接
其它:
說一個你參與的項目、其中作為什么角色
遇到最困的問題是什么,怎么解決的
你認為自己有那些方面不足
平常如何學習的
如何評價自己
智力題:
給你50個紅球和50個黑球,有兩個一模一樣的桶,往桶里放球,讓朋友去隨機抽,采用什么策略可以讓朋友抽到紅球的概率更高?
從100個硬幣中找出最輕的那個假幣?
? ? ?以上這些考察的知識點,在強大的互聯網上都可以搜索到答案,有些答案可能不是很全,所以需要自己去總結,但是對于一些需要知道原理的知識點,還是推薦看源代碼或者對于的書,然后總結得到自己的東西,這樣既學到真東西,還不會很容易忘。Java基礎的知識點推薦《Java編程思想》,JVM的推薦《深入理解Java虛擬機》,Spring原理的推薦《Spring源碼深度解析》,對于網站架構的推薦《大型網站技術架構核心原理與案例分析》。歡迎關注Java技術分享微信公眾號:JavaQ,獲取更多精彩技術分享。