[暑期实习] 微信技术架构 后端三面面经

时长约40~50min
根据本机架构做矩阵乘法分块优化,没撕出来,20多min
1. 聊高性能计算与云计算课程内容。
2. 二维数组按行读快还是按列读快,为啥按行读快。
3. 如何优化矩阵乘法。
4. 读写数据的时候,cpu、cache、内存有什么交互。
5. cpu不会把刚写到cache的数据立刻写回到内存,那么对于多核cpu,一个刚写完一个变量,另一个要取变量,而这个变量的最新版本在前者的cache,内存里还没有,那怎么获取最新数据(保持一致性)。
答案是在cpu之间有总线,后者可以走总线直接访问到前者的cache。
全部评论
关于问题5 可能出现了一些问题 这是我问GPT后得到的答案: 在多处理器系统中(如对称多处理系统 SMP 或分布式内存架构),处理器之间不能直接访问彼此的缓存,主要是因为以下几个原因: 缓存一致性: 每个处理器都有自己的缓存,这些缓存中存储的数据可能是不一致的。为了确保数据的一致性,需要有缓存一致性协议来管理多个处理器之间的数据更新。 如果允许一个处理器直接访问另一个处理器的缓存,那么可能会引入数据一致性问题,因为每个处理器可能看到的是不同的数据版本。 性能问题: 直接访问其他处理器的缓存通常比访问本地内存更慢。这是因为缓存访问依赖于高速缓存命中率,而直接跨处理器访问会增加延迟。 为了提高性能,系统设计时会尽量让每个处理器访问自己的缓存和本地内存。 架构限制: 多处理器系统的内存架构通常是基于节点的,每个节点包含一个或多个处理器以及本地内存。不同节点之间的通信通过互联网络进行,而不是直接访问对方的缓存。 可扩展性: 在大规模并行处理系统中,如果允许直接访问其他处理器的缓存,那么随着处理器数量的增加,缓存访问的复杂性和开销也会急剧增加,这会严重限制系统的可扩展性。 为了协调多处理器系统中的数据访问,并解决上述问题,现代多处理器系统使用了多种缓存一致性协议,例如 MESI (Modified, Exclusive, Shared, Invalid) 协议或其他变种。这些协议确保了所有处理器看到的内存是一致的,并且能够有效地管理缓存数据的状态。 也可以看一下这篇文章 https://cloud.tencent.com/developer/ask/sof/112244443
2 回复 分享
发布于 07-29 19:55 广东

相关推荐

11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
10-28 15:45
门头沟学院 C++
西南山:海康威视之前不是大规模裁员吗
点赞 评论 收藏
分享
2 12 评论
分享
牛客网
牛客企业服务