一道面试题目
Posted 奔跑吧Linux社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道面试题目相关的知识,希望对你有一定的参考价值。
前几天有一个小伙伴和笨叔抱怨,最近去某个互联网大厂面试,遇到一道骚题目,题目是这样的:
在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
以上是关于一道面试题目的主要内容,如果未能解决你的问题,请参考以下文章