ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一道骚面试题目

一道骚面试题目

原创 Linux操作系统 作者:rlk8888 时间:2022-03-13 00:41:50 0 删除 编辑

前几天有一个小伙伴和笨叔抱怨,最近去某个互联网大厂面试,遇到一道骚题目,题目是这样的:

在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博客 ” ,链接:https://blog.itpub.net/70005277/viewspace-2869915/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
奔跑吧Linux社区,为广大小伙伴布道Linux开源。

注册时间:2021-08-13

  • 博文量
    60
  • 访问量
    39464