螞蟻金服面試

一面

hashmap的實(shí)現(xiàn)原理尿贫,多線程并發(fā)操作hashmap會(huì)有什么問題?
原理簡述:使用數(shù)組加鏈表的數(shù)據(jù)結(jié)構(gòu),根據(jù)給出的key -hash到數(shù)組的一個(gè)下標(biāo)踏揣,如果當(dāng)前下標(biāo)有值建立一個(gè)鏈表 指向next庆亡, 注意的是新插入的值會(huì)在頭鏈表上, 這樣的設(shè)計(jì)思路是 新數(shù)據(jù)默認(rèn)更熱
發(fā)產(chǎn)生的問題:多線程put后可能導(dǎo)致get死循環(huán)

多線程put的時(shí)候可能導(dǎo)致元素丟失
主要問題出在addEntry方法的new Entry (hash, key, value, e)捞稿,如果兩個(gè)線程都同時(shí)取得了e,則他們下一個(gè)元素都是e又谋,然后賦值給table元素的時(shí)候有一個(gè)成功有一個(gè)丟失。
put非null元素后get出來的卻是null

泛型的反射擦除

  • 泛型只在編譯期有效娱局,在運(yùn)行期會(huì)被擦除掉彰亥, 所以通過反射的反射往一個(gè)要求泛型的集合添加對象,逃過了編譯器的檢查衰齐,
    是可以正常在運(yùn)行期使用的

樂觀鎖了解哪些

1任斋、CAS(Compare And Swap) JAVA中實(shí)現(xiàn)了
AtomicBoolean、AtomicLong耻涛、AtomicReference, 缺點(diǎn)是
-在并發(fā)沖突概率大的高競爭環(huán)境下仁卷,如果CAS一直失敗,會(huì)一直重試犬第,CPU開銷較大锦积。針對這個(gè)問題的一個(gè)思路是引入退出機(jī)制,如重試次數(shù)超過一定閾值后失敗退出歉嗓。當(dāng)然丰介,更重要的是避免在高競爭環(huán)境下使用樂觀鎖。
2、版本號(hào)機(jī)制 如數(shù)據(jù)庫加加入時(shí)間戳

嚴(yán)格來講CAS不是一種鎖 是一種概念上的鎖

B+樹和紅黑樹時(shí)間復(fù)雜度

二叉樹的遍歷
前序遍歷:根左右
中序遍歷:左根右
后續(xù)遍歷:左右根
算法-java

 public  void  theFirstTraversal(Node  node){
       printNode(node);
       if(node.getLeftNode()!=null){
           theFirstTraversal(node.getLeftNode());
       }
       if(node.getRightNode()!=null){
           theFirstTraversal(node.getRightNode());
       }
    }
    
    public  void  thePostOrderTraversal(Node  node){
        if(node.getLeftNode()!=null){
            thePostOrderTraversal(node.getLeftNode());
        }
        if(node.getRightNode()!=null){
            thePostOrderTraversal(node.getRightNode());
        }
        printNode(node);
    }
    public  void  theInOrderTraversal(Node  node){
        if(node.getLeftNode()!=null){
            theInOrderTraversal(node.getLeftNode());
        }
        printNode(node);

        if(node.getRightNode()!=null){
            theInOrderTraversal(node.getRightNode());
        }
    }

快排的時(shí)間復(fù)雜度哮幢,冒泡時(shí)間復(fù)雜度带膀,快排是否穩(wěn)定,快排的過程

講一下spring的啟動(dòng)流程
spring啟動(dòng)有幾種方法橙垢,通過web.xml的監(jiān)聽器垛叨,或者ClassPathXmlApplicationContext,
FileSystemXmlApplicationContext柜某,它啟動(dòng)的核心目標(biāo)是構(gòu)建spring容器嗽元,構(gòu)建容器需要做以下幾個(gè)工作 ,實(shí)例化對象喂击,
加載配置剂癌,裝配bean對象,
首先根據(jù)路徑加載配置文件翰绊,也叫元數(shù)據(jù) 和pojo對象, 根據(jù)對應(yīng)的模板表情進(jìn)行初始化操作佩谷,通過元數(shù)據(jù)和反射的方式生成對象放入容器中,load的配置也進(jìn)行初始化监嗜,后面會(huì)有bean的裝配工作和回調(diào)工作谐檀,
比如實(shí)現(xiàn)了InitializingBean 會(huì)在容器所有需要設(shè)置屬性的bean設(shè)置完以后調(diào)用afterPropertiesSet
this.postProcessBeanFactory(beanFactory);
this.invokeBeanFactoryPostProcessors(beanFactory);
this.registerBeanPostProcessors(beanFactory);
this.initMessageSource();
this.initApplicationEventMulticaster();
this.onRefresh();
this.registerListeners();
this.finishBeanFactoryInitialization(beanFactory);
this.finishRefresh();

AOP是怎么實(shí)現(xiàn)的?兩種動(dòng)態(tài)代理的應(yīng)用場景裁奇?

通過動(dòng)態(tài)生成字節(jié)碼稚补,增強(qiáng)代碼業(yè)務(wù)功能,
JDK動(dòng)態(tài)代理框喳, 需要代理的類必須要實(shí)現(xiàn)接口
cglib 無需實(shí)現(xiàn)接口 速度快
javaassist 也無需實(shí)現(xiàn)接口

Java中的新生代和老年代的垃圾回收算法课幕,對應(yīng)的垃圾收集器
https://www.cnblogs.com/wrencai/p/5668621.html VC

談?wù)?synchronized、ReenTrantLock五垮、volatile 三者的區(qū)別
synchronized 互斥鎖乍惊,
即操作互斥,并發(fā)線程過來放仗,串行獲得鎖润绎,串行執(zhí)行代碼。就像一個(gè)房間一把鑰匙诞挨,一個(gè)人進(jìn)去后莉撇,下一個(gè)人得等第一個(gè)人出來得到鑰匙才能進(jìn)入。如果代碼寫的不好(A)惶傻,可能出現(xiàn)死鎖9骼伞(A得到鎖,B等待A釋放鎖银室,A不釋放涂佃,B死鎖).

ReenTrantLock 重入鎖
在JDK優(yōu)化之后 synchronized 和reentrantLCOK 鎖的性能其實(shí)差不多
唯一的區(qū)別是

  1.  ReenTrantLock可以指定是公平鎖還是非公平鎖励翼。而synchronized只能是非公平鎖。所謂的公平鎖就是先等待的線程先獲得鎖辜荠。
    
  2.  ReenTrantLock提供了一個(gè)Condition(條件)類汽抚,用來實(shí)現(xiàn)分組喚醒需要喚醒的線程們,而不是像synchronized要么隨機(jī)喚醒一個(gè)線程要么喚醒全部線程伯病。
    
  3.  ReenTrantLock提供了一種能夠中斷等待鎖的線程的機(jī)制造烁,通過lock.lockInterruptibly()來實(shí)現(xiàn)這個(gè)機(jī)制。
    

如果需要使用reentrantlock的這三種獨(dú)立功能可以使用這個(gè)鎖 并且ReenTrantLock的力度更細(xì)

volatile 是一個(gè)關(guān)鍵字 對虛擬機(jī)聲明標(biāo)識(shí)有該關(guān)鍵字的遍歷 不允許重排序和修改馬上刷新內(nèi)存~

示例代碼:

二面

[Linux]命令 統(tǒng)計(jì)午笛,排序惭蟋,前幾問題等
wc、sort季研、uniq這三個(gè)命令都是用于排序。
wc命令很簡單誉察,在linux中用來統(tǒng)計(jì)文件中的字節(jié)數(shù)与涡、字?jǐn)?shù)、行數(shù)持偏,并且將結(jié)果返回
格式:wc [-clmwL] file
-c:統(tǒng)計(jì)字節(jié)數(shù)
-l:統(tǒng)計(jì)行數(shù)
-m:統(tǒng)計(jì)字符數(shù)
-w:統(tǒng)計(jì)字?jǐn)?shù)驼卖,一個(gè)字被定義為由空白、跳格或換行字符分隔的字符串
-L:打印最長行的長度
https://blog.csdn.net/feng973/article/details/73849586

full gc的發(fā)生有哪幾種情況鸿秆?

觸發(fā)MinorGC(Young GC)

虛擬機(jī)在進(jìn)行minorGC之前會(huì)判斷老年代最大的可用連續(xù)空間是否大于新生代的所有對象總空間
1酌畜、如果大于的話,直接執(zhí)行minorGC
2卿叽、如果小于桥胞,判斷是否開啟HandlerPromotionFailure,沒有開啟直接FullGC
3考婴、如果開啟了HanlerPromotionFailure, JVM會(huì)判斷老年代的最大連續(xù)內(nèi)存空間是否大于歷次晉升的大小贩虾,如果小于直接執(zhí)行FullGC
4、如果大于的話沥阱,執(zhí)行minorGC

觸發(fā)FullGC

  • 老年代空間不足 如果創(chuàng)建一個(gè)大對象缎罢,Eden區(qū)域當(dāng)中放不下這個(gè)大對象,會(huì)直接保存在老年代當(dāng)中考杉,如果老年代空間也不足策精,就會(huì)觸發(fā)Full GC。為了避免這種情況崇棠,最好就是不要?jiǎng)?chuàng)建太大的對象咽袜。
  • 持久代空間不足
    如果有持久代空間的話,系統(tǒng)當(dāng)中需要加載的類枕稀,調(diào)用的方法很多酬蹋,同時(shí)持久代當(dāng)中沒有足夠的空間及老,就出觸發(fā)一次Full GC
  • YGC出現(xiàn)promotion failure
    promotion failure發(fā)生在Young GC, 如果Survivor區(qū)當(dāng)中存活對象的年齡達(dá)到了設(shè)定值,會(huì)就將Survivor區(qū)當(dāng)中的對象拷貝到老年代范抓,如果老年代的空間不足骄恶,就會(huì)發(fā)生promotion failure, 接下去就會(huì)發(fā)生Full GC.
  • 統(tǒng)計(jì)YGC發(fā)生時(shí)晉升到老年代的平均總大小大于老年代的空閑空間
    在發(fā)生YGC是會(huì)判斷匕垫,是否安全僧鲁,這里的安全指的是,當(dāng)前老年代空間可以容納YGC晉升的對象的平均大小象泵,如果不安全寞秃,就不會(huì)執(zhí)行YGC,轉(zhuǎn)而執(zhí)行Full GC。
  • 顯示調(diào)用System.gc

Netty內(nèi)部結(jié)構(gòu)

mysql有幾種引擎偶惠,區(qū)別春寿?

1.常用的3種
2.InnoDB Myisam Memory
3.InnoDB跟Myisam的默認(rèn)索引是B+tree,Memory的默認(rèn)索引是hash

區(qū)別:
1.InnoDB支持事務(wù)忽孽,支持外鍵绑改,支持行鎖,寫入數(shù)據(jù)時(shí)操作快兄一,MySQL5.6版本以上才支持全文索引
2.Myisam不支持事務(wù)厘线。不支持外鍵,支持表鎖出革,支持全文索引造壮,讀取數(shù)據(jù)快
3.Memory所有的數(shù)據(jù)都保留在內(nèi)存中,不需要進(jìn)行磁盤的IO所以讀取的速度很快, 、
但是一旦關(guān)機(jī)的話表的結(jié)構(gòu)會(huì)保留但是數(shù)據(jù)就會(huì)丟失,表支持Hash索引骂束,因此查找速度很快
innodb中聚集索引耳璧,非聚集索引

MySQL、Redis展箱、MongoDB各自的應(yīng)用場景

分布式下redis如何保證線程安全

Redis的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)楞抡,以及持久化區(qū)別

https://www.cnblogs.com/neooelric/p/9621736.html
Redis 提供了多種不同級(jí)別的持久化方式:
RDB 持久化可以在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)集的時(shí)間點(diǎn)快照(point-in-time snapshot)。
AOF 持久化記錄服務(wù)器執(zhí)行的所有寫操作命令析藕,并在服務(wù)器啟動(dòng)時(shí)召廷,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集。AOF 文件中的命令全部以 Redis 協(xié)議的格式來保存账胧,新命令會(huì)被追加到文件的末尾竞慢。Redis 還可以在后臺(tái)對 AOF 文件進(jìn)行重寫(rewrite),使得 AOF 文件的體積不會(huì)超出保存數(shù)據(jù)集狀態(tài)所需的實(shí)際大小治泥。
Redis 還可以同時(shí)使用 AOF 持久化和 RDB 持久化筹煮。在這種情況下,當(dāng) Redis 重啟時(shí)居夹,它會(huì)優(yōu)先使用 AOF 文件來還原數(shù)據(jù)集败潦,因?yàn)?AOF 文件保存的數(shù)據(jù)集通常比 RDB 文件所保存的數(shù)據(jù)集更完整本冲。
你甚至可以關(guān)閉持久化功能,讓數(shù)據(jù)只在服務(wù)器運(yùn)行時(shí)存在劫扒。
了解 RDB 持久化和 AOF 持久化之間的異同是非常重要的檬洞,以下幾個(gè)小節(jié)將詳細(xì)地介紹這這兩種持久化功能,并對它們的相同和

三面

什么情況索引不會(huì)命中沟饥,會(huì)造成全表掃描

1.應(yīng)盡量避免在 where 子句中對字段進(jìn)行 null 值判斷添怔,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:

  1. 應(yīng)盡量避免在 where 子句中使用!=或<>操作符贤旷,否則將引擎放棄使用索引而進(jìn)行全表掃描广料。
    3.應(yīng)盡量避免在 where 子句中使用 or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描幼驶,如:
    4.in 和 not in 也要慎用艾杏,否則會(huì)導(dǎo)致全表掃描
    5.'%abc%' like全匹配查詢也會(huì)導(dǎo)致
    6.應(yīng)盡量避免在where子句中對字段進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描

JVM性能調(diào)優(yōu)會(huì)涉及哪些參數(shù)?

Restful盅藻、SOAP购桑、RPC、SOA萧求、微服務(wù)之間的區(qū)別

SpringClound與Dubbo的比較其兴,優(yōu)劣勢

kafka和rockMQ區(qū)別
https://www.cnblogs.com/ynyhl/p/11320797.html 詳情
rockMq4個(gè)組成部門
name servers- 一個(gè)輕量級(jí)路由和發(fā)現(xiàn)服務(wù)顶瞒,類似于zookpeer,提供了通信讀寫服務(wù) 支持快速純粹和擴(kuò)張
brokers-是用來存儲(chǔ)消息數(shù)據(jù)夸政,通過topic和queue機(jī)制,同時(shí)支持拉和推模式榴徐,支持故障容忍機(jī)制(數(shù)據(jù)復(fù)制多份)支持萬億級(jí)別的數(shù)據(jù)聚合和有序隊(duì)列守问,同時(shí)支持災(zāi)難恢復(fù),強(qiáng)大的數(shù)據(jù)統(tǒng)計(jì)和警功能這都是傳統(tǒng)的消息隊(duì)列缺少的
producers- 支持分布式部署坑资,producers通過負(fù)載均衡機(jī)制發(fā)送消息給broken耗帕,低延遲
consumers- 支持分布式部署(推和拉兩種拉取數(shù)據(jù)模式),同時(shí)支持集群消費(fèi)和消息廣播功能 -(廣播就是向一個(gè)主題的所有訂閱者發(fā)送同一條消息袱贮。在發(fā)送消息的時(shí)候和普通的消息并與不同之處仿便,只是在消費(fèi)端做一些配置即可)

mysql如何實(shí)現(xiàn)如何實(shí)現(xiàn)分庫分表+動(dòng)態(tài)數(shù)據(jù)源+讀寫分離

什么是緩存雪崩?服務(wù)器雪崩的場景與解決方案

分布式鎖的方案攒巍,redis和zookeeper哪個(gè)好嗽仪,如果是集群部署,高并發(fā)情況下哪個(gè)性能更好柒莉。

請畫一個(gè)大型網(wǎng)站分布式集群部署圖

秒殺系統(tǒng)的架構(gòu)設(shè)計(jì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闻坚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兢孝,更是在濱河造成了極大的恐慌窿凤,老刑警劉巖仅偎,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雳殊,居然都是意外死亡橘沥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門相种,熙熙樓的掌柜王于貴愁眉苦臉地迎上來威恼,“玉大人,你說我怎么就攤上這事寝并◇锎耄” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵衬潦,是天一觀的道長斤蔓。 經(jīng)常有香客問我,道長镀岛,這世上最難降的妖魔是什么弦牡? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮漂羊,結(jié)果婚禮上驾锰,老公的妹妹穿的比我還像新娘。我一直安慰自己走越,他們只是感情好椭豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旨指,像睡著了一般赏酥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆构,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天裸扶,我揣著相機(jī)與錄音,去河邊找鬼搬素。 笑死呵晨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬尺。 我是一名探鬼主播摸屠,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猪杭!你這毒婦竟也來了餐塘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤皂吮,失蹤者是張志新(化名)和其女友劉穎戒傻,沒想到半個(gè)月后税手,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡需纳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年芦倒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片不翩。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兵扬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出口蝠,到底是詐尸還是另有隱情器钟,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布妙蔗,位于F島的核電站傲霸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏眉反。R本人自食惡果不足惜昙啄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寸五。 院中可真熱鬧梳凛,春花似錦、人聲如沸梳杏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秘狞。三九已至叭莫,卻和暖如春蹈集,著一層夾襖步出監(jiān)牢的瞬間烁试,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工拢肆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留减响,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓郭怪,卻偏偏與公主長得像支示,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鄙才,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在一個(gè)方法內(nèi)部定義的變量都存儲(chǔ)在棧中颂鸿,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后,其對應(yīng)的棧就會(huì)被回收攒庵,此時(shí)嘴纺,在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,413評(píng)論 1 14
  • /1/ 清晨败晴,仿佛還在昨夜的夢境中。 昨夜栽渴,夢到了自己晚上走在了周圍都是柳樹的地方尖坤,腳下踩著厚厚的樹葉。 這里...
    秦小荷閱讀 214評(píng)論 0 0
  • H 幼兒園開展親子戶外競賽活動(dòng)闲擦,我以局外人的身份參與其中慢味,班級(jí)組織的、幼兒園組織的墅冷,已參加過大大小小的H幼...
    六月彩虹的說說閱讀 1,071評(píng)論 0 0
  • 他回到家已經(jīng)天要黑了纯路,他的家像是一串葡萄里壞掉的那顆,門口的街上有4-5張桌子寞忿,一個(gè)中年男人正在顛手里的鍋感昼,菜和...
    blinbl閱讀 230評(píng)論 0 0
  • 昨晚上畫的,本是有點(diǎn)困了罐脊,就取名困了也要睜大眼定嗓。
    M有如果閱讀 328評(píng)論 6 17