仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述一道面试题目相关的知识,希望能为你提供帮助。
前几天有一个小伙伴和笨叔抱怨,最近去某个互联网大厂面试,遇到一道骚题目,题目是这样的:在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
推荐阅读
- #yyds干货盘点#常用的 Linux 系统备份恢复命令
- 进程调度案例分析(为何不能调度())
- Shell 编程时常用的系统文件
- SiP和SoC之间有哪些区别()
- 同时和分层访问存储组织之间的区别
- SQL中简单视图和复杂视图之间的区别
- Servlet和JSP之间有什么区别()
- Java中Scanner和BufferReader类之间的区别
- Docker命令RUN、CMD和ENTRYPOINT之间的区别