一、java的基本數據類型與包裝類;java
二、final修飾變量類方法;mysql
三、String爲何是不可變的,以及new String(「abc」)建立了幾個對象;程序員
四、String、StringBuffer、以及StringBuilder的區別;面試
五、static修飾變量,方法,代碼塊;算法
六、重寫跟重載的區別;spring
七、接口跟抽象類;sql
八、反射、繼承、枚舉、異常等知識點;數據庫
九、爲何要重寫hashcode和equals方法,以及hashcode相同equals是否相同;數組
十、JDK 1.7與1.8以前的區別;緩存
十一、i++ 和 ++i;
一、ArrayList的底層實現、擴容過程、add過程、Fail-Fast機制;
二、ArrayList與Linkedlist、Vectot的區別;
三、如何得到一個線程安全的List;
四、CopyOnWriteArrayList是如何實現線程安全的;
五、Linkedlist的底層實現,以及如何使用LinkedList實現一個LRU;
六、TreeSet、HashSet、LinkedHashSet的底層實現以及之間的區別;
七、PriorityQueue、LinkedBlockingQueue、ArrayBlockingQueue的實現以及區別;
八、HashMap的底層實現,擴容過程,達到閾值必定會擴容嗎、put過程、樹化過程,如何肯定負載因子、以及爲何線程不安全和1.8作了哪些優化;
九、HashMap與HashTable的區別,如何得到一個線程安全的Map;
十、ConcurrentHashMap爲何是線程安全的,以及1.8作了哪些優化;
十一、LinkedHashMap的底層實現,以及如何實現LRU;
十二、TreeMap的底層實現;
1三、迭代器的實現;
一、運行時數據區域,以及各個區域中存放什麼,如何進行交互的;
二、一個對象從建立到回收的整個過程(從類加載到GC),能掌握這個基本就沒什麼太大的問題;
三、堆中的對象都存放什麼數據,以及對象頭中的數據(Synchronized鎖升級過程當中常問道);
四、判斷內存區域是否須要回收、垃圾收集算法、垃圾收集器(主要掌握CMS、G1固然越多越好);
五、內存分配策略(如何在Eden和老年代中分配)、回收策略(Minor GC、Full GC);
六、Java內存模型(不是java內存區域),常在線程中問道(volatitle的設計與實現);
七、虛擬機類加載機制,類的生命週期,類加載器(能夠嘗試一下手寫類加載器有被問道過)、雙親委派模型;
八、Jvm調優與故障處理,能夠本身手動實現如下;
一、進程與線程的區別,怎麼根據硬件肯定你最大建立的線程數(線程池須要考慮);
二、線程建立的方法,如何得到一個帶返回值的線程;
三、線程的狀態、線程的屬性;
四、線程間的通訊、sleep、yield、join、wait、notifynotifyAll、信號量、管道,以及sleep與wait的區別;
五、鎖、偏向鎖、輕量級鎖、重量級鎖、樂觀鎖、悲觀鎖、自旋鎖、共享鎖、排他鎖、可重入鎖和非可重入鎖;
六、volatitle的底層實現;
七、synchronized底層實現、鎖升級過程和實例鎖跟類鎖的區別,以及與Lock的區別;
八、CAS、AQS的原理與實現;
九、ReentrantLock、ReentrantReadWriteLock、StampedLock實現原理以及特色;
十、ThreadLocal的特性與底層原理;
十一、線程池建立須要的參數、如何設置參數、線程池的運行過程、高併發下如何十二、使用線程池;
一、innoDB跟myisam的區別;
二、InnoDB的索引實現,惟一索引、覆蓋索引、前綴索引、聯合索引、最左匹配原則;
三、何時須要索引,以及如何選擇索引;
四、MVCC的原理、redo、undo、回滾段;
五、自增鎖、共享鎖、排他鎖、意向鎖、插入意向鎖、記錄鎖、間隙鎖是什麼;
六、事務的四大特性、併發一致性致使的問題、四種隔離級別解決的問題以及如何實現的(加了什麼鎖);
七、第三範式;
八、如何優化mysql;
一、Redis爲何這麼快;
二、Redis數據結構以及底層實現;
三、Redis持久化機制、RDB、AOF以及如何選擇,AOF重寫;
四、Resdis過時鍵刪除策略、內存淘汰策略;
五、Redis事務;
六、Redis高可用、高性能、Redis 主從架構、Redis Sentinel、Redis集羣方案;
七、緩存穿透、緩存擊穿、緩存雪崩緣由以及解決方案;
一、介紹一下IOC和AOP;
二、spring配置bean實例化有哪些方式;
三、Bean注入屬性有哪幾種方式;
四、Spring bean的做用域;
五、Spring Bean的生命週期(建議看完整個IOC的生命週期有能力的看看源碼;
六、Spring框架中的單例bean是線程安全的嗎,以及如何處理;
七、Spring AOP底層實現,以及兩種動態代理的實現(建議本身手動實現兩種代理方式);
八、AOP中的各類名詞概念;
九、循環依賴問題,要說三級緩存;
十、Spring事務的傳播行爲、隔離級別、超市屬性、只讀屬性,回滾規則;
十一、以及Spring中的各類註解;
一、Springboot啓動原理解析;
二、Springboot得生命週期;
三、SpringBoot自動配置模塊;
四、SpringBoot Starters;
五、SpringBootApplication介紹;
一、介紹各個組件的功能;
二、REST API與RPC;
三、Spring Cloud 和dubbo區別;
四、Eureka怎麼實現高可用;
五、什麼是Eureka的自我保護模式
六、Eureka和ZooKeeper均可以提供服務註冊與發現的功能,請說說兩個的區別;
一、服務註冊與發現;
二、SPI;
三、服務暴露過程;
四、服務引用;
五、降級;
六、負載均衡;
一、如何定時得往數據庫中插入500萬條數據以及刪除,保證數據插入正確作到最優解;
二、在高併發下如何設計使用Redis;
三、微服務和分佈式是什麼;
四、BIO和NIO;
五、在高併發場景下如何設計一個接口,保證這個接口高性能高可用;
六、分佈式鎖Redis和zookeep,和分佈式事務。若是沒有了解過度布式事務建議本身用本地消息表得方式實現,簡單至少有個總體得概念。
一、有時間得建議多刷刷算法,沒時間得就看看經常使用算法
二、主要是數據結構,問了時間空間複雜度;
三、問了大頂堆;
四、如何讀取一個很大得文件裏面存入了不少url怎麼找到最經常使用得url;
五、還有常見得url轉換問題;
六、鏈表逆轉,找兩個數組中相同得數等等;
以上面試題和知識點你要是掌握一半了,你就能夠開始向BAT這些大廠投簡歷了,你要是所有掌握了相信你起碼也是一個阿里P7水平了,由於這些題目所有都是今年BAT大廠的面試真題和知識點。若是你對以上知識點並不熟悉的話,你得趕忙加快你學習的步伐了,由於這些全是如今面試的必問方向!
不少人會問,我對以上知識點並不熟悉掌握,可我並不知道從哪開始學,這些知識點又太多太雜了,我該側重學哪些知識點呢?這些問題你不用擔憂,以上面試題和知識點我已經所有幫你整理成一份將近500頁的PDF文件,每一個知識點都有單獨的分區和麪試題整理,部分展現以下:
這份PDF徹底是按照java工程師的方向整理的,好不誇張的說,你啃透了這份PDF,你至少也是一個阿里P7的水平!
不少朋友已經開始問了,這份PDF這麼齊全確定要收費的吧,固然不是!如今1024程序員節日這份超詳細的PDF知識點我免費贈送給你們,只須要關注公衆號前程有光點擊獲取資料便可立刻無償獲取!