一道面试题目

仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述一道面试题目相关的知识,希望能为你提供帮助。
前几天有一个小伙伴和笨叔抱怨,最近去某个互联网大厂面试,遇到一道骚题目,题目是这样的:在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也会讲解这个题目,卷2大约在2022年3月前后出版。



发布于 2022-02-09 20:39


    推荐阅读