寫於2017-10-18,博文從我的網站遷移到掘金。面試
自我介紹redis
項目中最自豪的部分
算法
也沒什麼太自豪的,就是在移動端開發的時候不存在cookie和session,而後用redis存了一下驗證碼感受還不錯。編程
講一講ArrayList和LinkedList
ArrayList底層實現是數組,而且每次擴容擴容1.5倍,經常使用在查詢較多的場景中。而LinkedList底層實現是鏈表經常使用在增刪比較多的場景api
你說你對鎖有了解,說一說你最熟悉的兩個鎖
當時太緊張就隨口說了兩個,樂觀鎖,悲觀鎖。樂觀鎖:每次執行事務的時候都是先執行在檢查是否有其餘是否在執行。而悲觀鎖如行鎖,表鎖,都是先鎖定再執行事務。一般在併發量比較大的狀況下用悲觀鎖,併發量小的狀況下用樂觀鎖數組
說一下synchronied和ReentrantLock的區別
synchronied是JVM級別的,而ReentrantLock是api級別的,JVM會對synchronied作出相應的優化,鎖消除:當JVM斷定該資源不會被其餘線程爭奪的時候就會消除該鎖,還有鎖自旋,自適應鎖(面試官速度很快,還沒等我來得及解釋ReentrantLock就跳下一個問題了,也許是這個超底層的回答比較滿意吧)緩存
講一下ThreadLoacal吧
ThreadLocal底層實現是一個Map結構的表,key是Thread.currentThread(),而Value則是咱們想要保存的對象安全
它(ThreadLocal)有什麼用,能夠舉一個例子嗎?
能夠在每一個線程都擁有一個各自的副本,封裝起來不被影響,做用的話,能夠作一個相似賣票的系統,每一個售票廳(線程)只能出售100張票,不能多不能少服務器
用過exchange()嗎
很差意思,只敲過一次例子,不太瞭解cookie
說一說JVM內存模型吧
我:棧區:每次方法的執行都會有一次棧幀的生成,而且其中有局部變量表。堆區:每次new出來的對象都保存在這兒。本地方法棧:經過C/C++調用系統接口的一些方法,方法區:類的信息 靜態變量都在這兒,還有程序計數器
說一說AOP吧
AOP就是面向切面編程,並解釋了下列術語,joinpoint,pointcut,aspect,advice,並說了一下實現的原理,若實現了接口就是JDK動態代理不然就用CGLIB
瞭解asm嗎?
我反應了半天才想起這是一個jar包,不過從沒了解過就說不知道了
String str1=new String("abc"),String str2=new String("abc"); str1==str2返回什麼 當時太緊張,注意力一直放在abc字符串上了忽略了這是new了一個對象,一直回答true,反問我好久我仍是沒反應過來,有點沒發揮好
知道如何讓線程同步嗎?
wait,notify,notifyAll,await,signal,siganlAll,countdownLatch,cyclicbarrer
說一說countdownlatch,cyclicbarrer
均可以等幾個線程就緒後再執行後續操做,區別就是cyclicbarrer是能夠複用的,而countdownlatch不能夠
舉個例子?
能夠假設如下場景,等9個跑步選手(線程)同時在起跑線就緒了再開始起跑
能夠實習多久
你的職業規劃
你有什麼想問個人嗎?