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

? ? ? 最近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,獲取更多精彩技術分享。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容