過渡內容

B+樹索引和哈希索引都有什麼優缺點:http://www.javashuo.com/article/p-ewgykcmq-cb.html   http://www.javashuo.com/article/p-bwixyvrq-gc.htmlhtml

B樹和B+樹的區別:http://www.javashuo.com/article/p-dnkgqbpl-ev.html    https://blog.csdn.net/login_sonata/article/details/75268075java

 

聚簇索引和非聚簇索引的區別   https://wangxinchun.iteye.com/blog/2373650

HashMap裏面實現一個靜態內部類Entry,其重要的屬性有 key , value, next,從屬性key,value咱們就能很明顯的看出來Entry就是HashMap鍵值對實現的一個基礎bean,咱們上面說到HashMap的基礎就是一個線性數組。把HashMap的put源碼,get源碼理一遍linux

Exception與error的差異   Exception的分類   NullpointerException屬於什麼.運行時異常與通常異常的區別  .try-catch-finally中return  https://www.jianshu.com/p/e8bbee3c1c4a   https://blog.csdn.net/huhui_cs/article/details/38817791  https://blog.csdn.net/u012112647/article/details/51798897   https://blog.csdn.net/ns_code/article/details/17485221web

IO流分類:IO流中用到了不少設計模式:https://my.oschina.net/gao0516/blog/136103面試

問了一個數據量過大,會致使JVM堆棧過深,怎麼辦:http://www.javashuo.com/article/p-stucavxq-ee.htmlredis


Java的虛擬機的面試內容主要包括三部分:GC、類加載機制,以及內存。

  一個GC部分簡單的連環炮。
面試官能夠先問你何時一個對象會被GC?
  接着繼續問你爲何要在這種時候對象纔會被GC?
  接着繼續問你GC策略都有哪些分類?
  你若是說出來了,繼續問你這些策略分別都有什麼優劣勢?都適用於什麼場景?
  你繼續說出來了之後,給你舉個實際的場景,讓你選擇一個GC策略?
  你若是選出來了,繼續問你,爲何要選擇這個策略?

下面是關於類加載機制的簡單連環炮。
首先確定是先問你Java的類加載器都有哪些?
  回答了這些之後,可能會問你每一個類加載器都加載哪些類?
  說完之後,可能會問你這些類加載之間的父子關係是怎樣的?
  你在回答的時候可能會提到雙親委派模型,那麼能夠繼續問你什麼是雙親委派模型?
  你解釋完了之後,可能會繼續問你,爲何Java的類加載器要使用雙親委派模型?
  你回答完之後,可能會繼續問你如何自定義本身的類加載器,本身的類加載器和Java自帶的類加載器關係如何處理?

再來一個關於內存的連環炮。
首先確定就是問你JVM內存分爲哪幾部分,這些部分分別都存儲哪些數據?
  而後繼續問你一個對象從建立到銷燬都是怎麼在這些部分裏存活和轉移的?
  接着可能會問你,內存的哪些部分會參與GC的回收?
  完事之後,可能還會問你Java的內存模型是怎麼設計的?
  你回答了之後,還會繼續問你爲何要這麼設計?
  問完之後,還可能會讓你結合內存模型的設計談談volatile關鍵字的做用?
  你在談的時候,確定會提到可見性,那麼接着可見性這三個字,還能夠繼續問你併發的內容。

爲何要設置兩個Survivor區
設置兩個Survivor區最大的好處就是解決了碎片化,下面咱們來分析一下。數據庫

爲何一個Survivor區不行?第一部分中,咱們知道了必須設置Survivor區。假設如今只有一個survivor區,咱們來模擬一下流程:
剛剛新建的對象在Eden中,一旦Eden滿了,觸發一次Minor GC,Eden中的存活對象就會被移動到Survivor區。這樣繼續循環下去,下一次Eden滿了的時候,問題來了,此時進行Minor GC,Eden和Survivor各有一些存活對象,若是此時把Eden區的存活對象硬放到Survivor區,很明顯這兩部分對象所佔有的內存是不連續的,也就致使了內存碎片化。設計模式

 
 
jstack簡單使用,定位死循環、線程阻塞、死鎖等問題:http://www.javashuo.com/article/p-ofxdupcw-eo.html
 CMS收集器和G1收集器優缺點  http://www.javashuo.com/article/p-whgycjfl-et.html
 
hashmap 計算下標值的,時間複雜度是多少,最壞的時間複雜度是多少  在擴容的時候時間複雜度是O(n)的,你有什麼方式去優化這個時間複雜度嗎
CMS從新標記時標記什麼,爲何這麼標記,標記待回收垃圾和標記保留對象的區別是什麼,哪一個更好一些
concurrenthashmap怎麼實現的,get數據的時候須要加鎖嗎。:https://juejin.im/entry/5b98b89bf265da0abd35034c
可重入鎖的原理
設計模式幾個原則:https://www.jianshu.com/p/6ef653f2892a
 

hashset實現的原理:https://wiki.jikexueyuan.com/project/java-collection/hashset.htmlapi

讀寫鎖 https://blog.csdn.net/Li_Ning_/article/details/52294343數組

看端口 檢測在線線程

https://michaelyang1988-hotmail-com.iteye.com/blog/1874671

 給你一個User,包含id,name,parentId。而後給你一個List<User>,要求將它轉換成一棵樹的結構。只有一個跟節點,parentId=-1  https://blog.csdn.net/xinzi11243094/article/details/80890222
進程通訊:
編寫兩個線程,一個線程打印1~25,另外一個線程打印字母A~Z,打印順序爲12A34B56C……5152Z,要求使用線程間的通訊。  https://blog.csdn.net/u011514810/article/details/77131296
 
登陸註冊模塊:
Redis存儲驗證碼,存儲登陸憑證用戶信息。
 
服務器接收到app發送的用戶名和密碼後,驗證用戶名和密碼是否正確。若是驗證正確,生成一個隨機的不重複的token字符串,在redis中維護一個映視表,創建token字符串和用戶信息的對應關係表,服務器把token字符串返回給app,app把這個token字符串保存起來,做爲登陸的驗證, 當須要驗證用戶身份的操做時,必需要把token字符串傳給服務器驗證身份,當服務器接收到這個api請求,知道要驗證用戶身份的,因而,就把參數中token的值"daf32da456hfdh"取出來,在(1)中創建的token字符串和用戶信息的對應關係表查找,若是發現沒這個token值的,則返回驗證失敗的信息。若是發現有這個token值,則獲取這個用戶的信息,進行相關的更新操做。 當用戶退出登陸時,須要經過調用api,讓服務器把這個用戶對於的token字符串刪除.
 
 
數據庫索引:

索引的分類

  • 彙集索引
  • 非彙集索引
  • 哈希索引
  • B+-樹索引(二分查找)
 

數據庫分庫分表,垂直切分和水平切分 https://www.i3geek.com/archives/1108

 

9. 一張表有不少字段, 熱門的就那幾個字段, 如何設計, 若是熱門和不熱門字段都須要, 如何設計

 

10. 索引是幹什麼的, 商城訂單有一個state列,只有少數幾種狀態,適合當索引嗎

 

java線程安全;http://www.javashuo.com/article/p-uygzhmju-a.html

 

 Redis keys   

KEYS pattern

查找全部符合給定模式 pattern 的 key 。

 keys的模糊匹配功能很方便也很強大,可是開發中使用keys的模糊匹配卻發現redis的CPU使用率極高。那怎麼解決這種相似的keys模糊匹配問題呢?其中常見的方法就是設置一個set,將須要使用的keys存儲在set中。
利用Redis在緩存中實時統計文章閱讀熱度的topk:利用zset,https://blog.csdn.net/wangh92/article/details/80052607   https://my.oschina.net/jockchou/blog/478780
 
 
 

內存碎片:http://www.javashuo.com/article/p-usbpqcuo-mw.html    https://blog.csdn.net/bit_x/article/details/5655278

【同一進程間的線程共享的資源有】

a. 堆  因爲堆是在進程空間中開闢出來的,因此它是理所固然地被共享的;所以new出來的都是共享的(16位平臺上分全局堆和局部堆,局部堆是獨享的)

b. 全局變量 它是與具體某一函數無關的,因此也與特定線程無關;所以也是共享的

c. 靜態變量 雖然對於局部變量來講,它在代碼中是「放」在某一函數中的,可是其存放位置和全局變量同樣,存於堆中開闢的.bss和.data段,是共享的

d. 文件等公用資源  這個是共享的,使用這些公共資源的線程必須同步。Win32 提供了幾種同步資源的方式,包括信號、臨界區、事件和互斥體。

【獨享的資源有】

a. 棧 棧是獨享的

b. 寄存器  這個可能會誤解,由於電腦的寄存器是物理的,每一個線程去取值難道不同嗎?其實線程裏存放的是副本,包括程序計數器PC

 關係型與非關係型數據庫的優缺點 http://www.javashuo.com/article/p-wfaklldr-kc.html

 

給定一個int數組A,數組中元素互不重複,給定一個數x,求全部求和能獲得x的數字組合,組合中的元素來自A,可重複使用。

做者:菜鳥也須要offer 連接:https://www.nowcoder.com/discuss/206411
來源:牛客網 public ArrayList<ArrayList<Integer> res = new ArrayList<>(); public  ArrayList<ArrayList<Integer>> sum(int[] A,int x) { Arrays.sort(A); if(A==null||A.lenght==0) return res; ArrayList<Integer> list = new ArrayList<>(); bk(A,X,0,list); return res; } public void bk(int[] A,int X,int k, ArrayList<Integer> list) { if(X=0) { res.add(list); return; } if(X<0) { return; } for(int i=k;i<A.lenght;i++) { list.add(A[i]); bk(A,X-A[i],i,list); list.remove(list.size()-1); } }

 

最少交換次數來組合全部的 1:https://blog.csdn.net/hy971216/article/details/99294989

如何統計controller層全部方法的調用時間:Spring AOP 實現監控方法執行的時間(統計service中方法執行的時間)

linux查找文件命令:find

 

內存屏障,happen-before  https://blog.csdn.net/kuangzhanshatian/article/details/81738599

wait方法底層原理:https://www.jianshu.com/p/f4454164c017

 

內部類能夠引用他包含類的成員嗎:一個內部類對象能夠訪問建立它的外部類對象的內容,內部類若是不是static的,那麼它能夠訪問建立它的外部類對象的全部屬性內部類若是是sattic的,即爲nested class,那麼它只能夠訪問建立它的外部類對象的全部static屬性通常普通類只有public或package的訪問修飾,而內部類能夠實現static,protected,private等訪問修飾。當從外部類繼承的時候,內部類是不會被覆蓋的,它們是徹底獨立的實體,每一個都在本身的命名空間內,若是從內部類中明確地繼承,就能夠覆蓋原來內部類的方法。

 

java多線程龜兔賽跑:https://blog.csdn.net/renl123470/article/details/52344422

 動態代理,但是在印象中代理模式一直都是控制訪問什麼的,怎麼又動態增長行爲了,動態增長行爲不是裝飾器模式嗎?實際上,在裝飾器模式和代理模式之間仍是有不少差異的。裝飾器模式關注於在一個對象上動態的添加方法,然而代理模式關注於控制對對象的訪問。換句話 說,用代理模式,代理類(proxy class)能夠對它的客戶隱藏一個對象的具體信息。所以,當使用代理模式的時候,咱們經常在一個代理類中建立一個對象的實例。而且,當咱們使用裝飾器模 式的時候,咱們一般的作法是將原始對象做爲一個參數傳給裝飾者的構造器。

相關文章
相關標籤/搜索