(一) Java 編程方面html
一、 如何DUMP內存出來看看內存溢出呢java
DUMP分爲兩種:web
(a)內存dump是指經過jmap -dump <pid>輸出的文件,面試
(b而線程dump是指經過jstack <pid>輸出的信息。redis
兩個dump能夠單獨使用,也能夠在特定場合下結合使用。算法
參考:Jvm dump介紹與使用(內存與線程)sql
二、如今個人端口8080被佔用了,如何找出這個進程來用哪一個命令; 數據庫
參考:如何在Windows下查看JAVA端口占用狀況(阿里面試)編程
三、查看進程的CPU使用率:後端
> jstat -gc 7964 5000
表明: 每隔5秒鐘查看進程7964的內存使用狀況;
(二) 基礎知識方面
一、 JDK1.7 月JDK1.8的區別和聯繫:
參考:Jdk1.7 與 jdk1.8的區別,最新的特徵有哪些(美團,360,京東面試題目)
二、Java 基礎知識,Java堆內存結構, 新生代,老年代如何定義,劃分,CMS,G1的算法是怎樣的,性能瓶頸,調優。垃圾回收算法。
類加載技術,當類加載的時候,我想改一下值用Java探針技術,class類在加載的時候 Java探針技術,能夠在加載class的時候改變 對象的值;
參考:G1 垃圾收集器入門
關於Java探針的能夠參考:Java探針-Java Agent技術-阿里面試題
三、NIO 和IO 的含義,以及他們的三個區別
我覺得NIO指的是 Non Block 可是面試官指的是New IO 和IO的區別,我傻眼了。
(a)這是No-Block IO 和IO 的區別和聯繫
(b)這是Java1.4以後出的New IO 與IO的區別和聯繫:
四、HashMap的Hashcode和equal 的區別
參考:Java == ,equals 和 hashcode 的區別和聯繫(阿里面試)
五、ThreadLocal 類掌握狀況。存儲在那裏?當數值更新後,如何處理,讓全局都更新呢
參考:ThreadLocal 定義,以及是否可能引發的內存泄露(用線程池有可能泄露)
八、讀寫鎖,多個讀鎖互不影響,寫寫互斥,寫鎖優先於讀鎖:
讀寫鎖特色:
a)多個讀者能夠同時進行讀
b)寫者必須互斥(只容許一個寫者寫,也不能讀者寫者同時進行)
c)寫者優先於讀者(一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者)
參考:Java 線程鎖機制 -Synchronized Lock 互斥鎖 讀寫鎖
(三) 數據結構方面
一、 Synochronized 和 Voliate的區別, 涉及到的CAS處理
參考:JAVA多線程之volatile 與 synchronized 的比較-阿里面試題
二、concurrentHashMap 在1.7與1.8底下的區別,
JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+紅黑樹,
參考:ConcurrentHashMap原理分析(1.7與1.8)
三、阿里的第二面是去阿里本部面試的環節對數據結構要求很高,
我曾問過阿里面試人員須要瞭解哪些數據結構知識才能面試經過,
阿里面試官答道:只要把HashMap,HashTable,HashSet,CurrentHashMap的原理搞清楚了,數據結構面試必定沒問題。因此,弟兄們,想進阿里
必定要把這幾個數據結構搞清楚。
參考:Hashtable數據存儲結構-遍歷規則,Hash類型的複雜度爲啥都是O(1)
HashMap,HashSet,Hashtable 的複雜度是O(1),
TreeMap,TreeSet內部排序了使用了紅黑樹,所以時間複雜度是O(log(n))
參考:HashMap, HashTable,HashSet,TreeMap 的時間複雜度
紅黑樹,由於只搜索一邊,所以複雜度連O(n)都到不了,只要log(n) 就夠了。
時間複雜度;如何計算的,好好看看
HashMap,HashTable ,CurrentHashMap的區別
HashTable不容許有空值,HashMap 的key和value容許有空值,所以不能用HashMap的get()方法判斷是否有指定的值,應該用containsKey();
參考:hashmap,hashTable concurrentHashMap 是否爲線程安全,區別,如何實現的
四、TreeMap 內部如何實現排序的,好比如今已經有一個treeMap對象了,不少數據,如今我要添加一個數據map.put(a,b),TreeMap是如何快速尋找到 a對象的位置的?
(四) 多線程方面
一、ReentrantLock 可重入鎖,指的是什麼可重入(舉個例子,這個必定要重視,兩個阿里的面試官都問到了)。如何理解,公平鎖,非公平鎖。
可重入指的是:線程第一次進入加鎖了以後,之後就不須要獲取鎖了,:
公平鎖參考:分析ReentrantLock的實現原理
可重入鎖,synchroized 和 ReentrantLock都是可重入鎖,就是AQS的state設置爲1,2.。之類的,只要不是state=0,(0表明了釋放鎖)其餘的鎖都一直等待,
要否則就成了死鎖了,這裏有個很形象的說明,
請參考:輕鬆學習java可重入鎖(ReentrantLock)的實現原理
參考: java併發鎖ReentrantLock源碼分析一 可重入支持中斷鎖的實現原理
用Synchronized實現ReentrantLock:
參考:使用synchronized實現一個Lock-美團面試題目
二、如何實現多線程,Java線程池,若是使用 newFixedPool(20)若是 目前有30個進程過來,他是如何排隊實現一個個執行的。哪來的隊列;
三、Sleep 和Wait的區別 ,他們的CPU有沒有釋放內存
參考:sleep、yield、wait、join的區別(阿里面試)
四、start,run的區別;
參考:多線程-Thread的run()與start()的區別
(五) Spring方面
一、Spring Boot 是否用過,
Spring Cloud 多看看,瞭解太少,不光是能夠轉變成 RPC,框架,還能夠總體提升延遲多少秒,尋找最近的路由規則,
二、Spring 加載流程,Spring的框架知識包括IOC,AOP ,事務處理
(六) 部署 網絡架構搭建方面
一、Docker:是一個容器;
二、RPC有沒有用過相應的框架,好比google的JRPC,Docker不是RPC,它只是個容器,(這個問題,360,美團,阿里,京東都問過);
(a)RPC用什麼協議通信的
三、分佈式部署,分佈式事務。是否理解,是否用過,3次阿里的面試均提到這個問題,必定要了解;
四、大型web服務器架構如何設計
(a) 好比數據庫設計,讀寫分離==》一個Master主數據庫負責讀寫,多個Slave從數據庫讀,使用BinLog實時同步從數據庫,不能亂了
五、Flame, ETL (數據倉庫技術) 好好看看 這個,技術
ETL技術參考:ETL工具之Kettle的簡單使用一(不一樣數據庫之間的數據抽取-轉換-加載)
參考:ETL技術( Extract-Transform-Load) 數據倉庫技術-好比kettle
六、zookeeper是如何註冊服務,並負載均衡的
參考:zookeeper如何實現負載均衡的?(具體鏈接哪個zookeeper服務器的選擇?)阿里面試
七、Tomcat,Jboss的類加載順序
(七) 數據庫方面
(1)數據庫隔離級別與髒讀,可重複讀。幻讀的區別
總結: 5個隔離級別 與髒讀,不可重複讀,幻讀的關係:
ISOLATION_DEFAULT | 使用後端數據庫默認的隔離級別 |
ISOLATION_READ_UNCOMMITTED | 最低的隔離級別,容許讀取還沒有提交的數據變動,可能會致使髒讀、幻讀或不可重複讀 |
ISOLATION_READ_COMMITTED | 容許讀取併發事務已經提交的數據,能夠阻止髒讀,可是幻讀或不可重複讀仍有可能發生 Oracle和SQL Server 默認 都是 READ_COMMITTED |
ISOLATION_REPEATABLE_READ | 對同一字段的屢次讀取結果都是一致的,除非數據是被自己事務本身所修改,能夠阻止髒讀和不可重複讀,但幻讀仍有可能發生 Mysql 默認就是REPEATABLE READ |
ISOLATION_SERIALIZABLE | 最高的隔離級別,徹底服從ACID的隔離級別,確保阻止髒讀、不可重複讀以及幻讀,也是最慢的事務隔離級別,由於它一般是經過徹底鎖定事務相關的數據庫表來實現的 |
(2)若是必需要保證一致的話,不能進行讀寫分離了,能夠進行業務拆分,把這部分業務單獨拿出來 能夠採用多庫不區分讀寫以及memcache緩存技術來實現。
三、redis memechen 的區別和聯繫。
(八) 協議通信方面
(1) TCP,UDP的區別,3次握手 4次揮手的流程
參考:TCP協議詳解7層和4層解析(美團面試,阿里面試) 尤爲是三次握手,四次揮手 具體發送的報文和狀態都要掌握
9、Maven方面
如何處理包名衝突,好比A引用了log1.5,B 引用了log1.6,
maven的引用遵循:最短路徑和最早引用規則,通常是找到低版本的那個,而後exclusions一下,否則無法用了,循環引用。
不明白的能夠看看這個:
參考:Maven 3-Maven依賴版本衝突的分析及解決小結 (阿里,美團,京東面試)
編程題目;
如今有一張表有不少數據,可是列只有兩列,姓名和身份證號,如今想用身份證號的出生年月進行排序,目前給出的CPU內存很小,如何作到最快排序。
參考:面試- 阿里-. 大數據題目- 給定a、b兩個文件,各存放50億個url,每一個url各佔64字節,內存限制是4G,讓你找出a、b文件共同的url?
(5)現有兩張表 A,B 字段 只有兩列,都是 姓名 和身份證號,如何快速的找出相同的記錄;
10、搜索引擎框架:
solr 與 lucene;
參考:solr學習