一道騷面試題目

rlk8888發表於2022-03-13

前幾天有一個小夥伴和笨叔抱怨,最近去某個網際網路大廠面試,遇到一道騷題目,題目是這樣的:

在arm64 SMP系統裡,執行如下程式碼片段,a和b的初始值都為0.

CPU0先執行了a=1和b=1,然後CPU1執行while的判斷語句,最後執行assert()語句,請問,有沒有可能assert會失敗?如何fix?



這位小夥伴和麵試官說,有可能是CPU0執行了亂序,比如CPU亂序或者編譯器亂序導致的。面試官說,這道題目的執行次序是這樣的,CPU0先執行了a=1和b=1,然後CPU1才執行while迴圈的,你在想想assert會不會失敗?




這位小夥伴被搞暈了:還有這麼騷的面試題目,暈了~~


笨叔覺得這個題目有蹊蹺,必須從體系結構的快取一致性協議和記憶體屏障結合的地方來入手,中西醫結合。一條簡單load和store指令在SMP中並不簡單,需要結合MESI協議來分析的。


笨叔把這個題目的講解,放到了第三季旗艦篇視訊課程裡:arm64體系結構與程式設計。



同時,卷2也會講解這個題目。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005277/viewspace-2869915/,如需轉載,請註明出處,否則將追究法律責任。

相關文章