灵岫科技技术一面\.(过了)

1 自我介绍
2 介绍项目

-性能如何保证?

-性能怎么测出来的?(benchmark怎么设计的)

-有没有用tcmalloc测过?

没有

3 开始聊缓存

-L1、L2、L3高速缓存区别,如何让运转的

主存->L1->L2->L3->寄存器……

-SRAM和DRAM的区别?(主存是DRAM,缓存是SRAM)

不会,计组忘了,简历上也没写,只知道RAM是随机访问存储器

文心一言答案:

SRAM(静态随机访问存储器)和DRAM(动态随机访问存储器)是两种不同类型的随机存取存储器,它们在多个方面存在显著差异。以下是SRAM和DRAM之间的主要区别:

1. 内部结构与工作原理

  • SRAM:使用双稳态触发器(通常是4到6个晶体管)来存储每个比特的信息。这种设计使得SRAM在电源持续供应的情况下,能够保持数据稳定,无需定期刷新电路来维持数据。SRAM的读写速度非常快,通常用于需要高速数据访问的场景,如CPU缓存(L1、L2、L3缓存)。
  • DRAM:通过电容来存储电荷,以此表示比特的1或0状态。由于电容会自然放电,DRAM需要定期刷新(每隔几毫秒)来保持数据的完整性。DRAM的存储单元结构相对简单,每个比特通常只需一个晶体管和一个小电容,这使得DRAM能够在给定的芯片面积上集成更多的存储单元,从而降低成本,提高存储密度。DRAM的读写速度相比SRAM较慢,因为它涉及到电容充电/放电的过程以及刷新操作。

2. 性能与速度

  • SRAM:由于其设计特点,SRAM提供了非常快速的读写访问时间,是高速缓存和寄存器的理想选择。
  • DRAM:虽然DRAM的读写速度也足够快,但相比SRAM而言,其速度较慢。DRAM的存取速度受到电容充放电过程以及刷新操作的影响。

3. 集成度与成本

  • SRAM:由于每个存储单元需要更多的晶体管,SRAM的集成度相对较低,成本较高,且占用更多空间。这使得制造大容量的SRAM变得困难且昂贵。
  • DRAM:DRAM的存储单元结构更为简单,能够在给定的芯片面积上集成更多的存储单元,从而降低成本,提高存储密度。这使得DRAM成为大容量存储解决方案的首选,广泛应用于个人电脑、服务器、移动设备等。

4. 应用场景

  • SRAM:因其高速特性,SRAM常用于缓存、寄存器以及对速度要求极高的局部存储。
  • DRAM:由于其高密度和相对低廉的成本,DRAM是计算机主内存(如DDR SDRAM)的首选。它广泛应用于各种计算机系统中,作为大容量存储解决方案。

5. 刷新机制

  • SRAM:不需要定期刷新电路来维持数据,只要电源持续供应,数据就会保持不变。
  • DRAM:需要定期刷新来保持数据的完整性。刷新操作可以通过多种方式实现,包括集中刷新、分散刷新和异步刷新等。这些刷新机制确保了DRAM在长时间运行过程中能够保持数据的稳定性和可靠性。

综上所述,SRAM和DRAM在内部结构、工作原理、性能与速度、集成度与成本以及应用场景等方面存在显著差异。在实际应用中,应根据具体需求和场景选择合适的内存技术。

4 文件系统

-用过什么文件系统?

不知道,没学具体系统,讲了一下大概文件系统的大概的结构

(分为一个个block group,下划分为superblock、GDT、……)

-有无superblock除了看魔数,还能如何判断?

(这谁知道?)文心一言答案:

1. 使用系统工具

dumpe2fs
这是Linux下用于显示ext2/ext3/ext4文件系统信息的工具。通过运行dumpe2fs /dev/sdXN(其中/dev/sdXN是你的分区设备名),可以列出该分区的Superblock内容,包括inode和block的计数、状态、大小等详细信息。如果命令成功执行并显示了相关信息,那么可以确认Superblock是存在的并且是可读的。这种方法直接、高效,是验证Superblock的首选方式。

fsck(文件系统检查):
当文件系统出现问题时,如Superblock损坏,可以使用fsck命令尝试修复。虽然fsck的主要目的是修复文件系统错误,但在修复过程中,它会检查并尝试恢复Superblock。如果fsck能够找到有效的Superblock备份,并用它恢复主Superblock,那么这也间接验证了Superblock的存在和可恢复性。

2. 手动检查磁盘扇区

对于更底层的操作,可以使用如ddhexdump等工具来手动读取和检查磁盘的特定扇区。由于Superblock通常位于文件系统的开始部分(如第一个或第二个block),你可以通过复制这些扇区到一个文件中,并使用十六进制编辑器(如xxd)打开来查看其内容。虽然这种方法需要一定的专业知识和对文件系统结构的了解,但它提供了直接查看磁盘数据的能力,有助于在特殊情况下诊断问题。

3. 查找Superblock的备份

在ext2/ext3/ext4文件系统中,Superblock有多个备份存储在文件系统的不同位置。这些备份通常位于block group的开头部分。通过dumpe2fs命令的输出或查阅文件系统文档,可以找到这些备份的位置。如果发现主Superblock损坏,可以尝试使用备份的Superblock来恢复文件系统。这种方法提供了一种在主Superblock损坏时的恢复手段,同时也验证了Superblock备份的存在和有效性。

4. 检查文件系统的挂载状态

虽然这不是直接判断Superblock的方法,但文件系统的挂载状态可以间接反映Superblock的健康状况。如果文件系统无法挂载,很可能是因为Superblock损坏或不存在。此时,可以尝试使用fsck命令来修复文件系统,并查看是否能成功挂载。如果fsck能够修复文件系统并使其成功挂载,那么可以认为Superblock是存在的或已被成功恢复。

5. 查看系统日志

系统日志中可能会包含有关文件系统错误和修复尝试的信息。如果Superblock损坏,系统可能会在日志中记录相关错误和尝试修复的过程。通过查看这些日志,可以获取有关Superblock状态的额外信息。虽然这种方法不是直接判断Superblock的方法,但它提供了一种从系统层面了解文件系统健康状况的途径。

综上所述,除了查看魔数外,还有多种方法可以判断Superblock的存在和有效性。这些方法涵盖了从系统工具的使用到手动检查磁盘扇区的不同层面,适用于不同的场景和需求。

-VFS是什么?

虚拟文件系统,但是当时一紧张忘了/.

5 声明和定义的区别?

 声明是一种承诺,不开空间;定义是开空间

声明进符号表但不是有效地址,定义是有效地址。最后链接会合并符号表,只有声明没有定义的变量会报链接错误

(引出编译链接的过程)

-是否了解编译链接过程?网上看的博客还是自己有实践过?

Linux命令行gcc -E -S -c……

6 什么时候开始学C++的?为什么?
7 函数栈帧如何建立?参数?返回值?

由返回值引出传值返回,传引用返回,右值引用(引到C++11)

8 左值和右值的区别

能否被取地址

-右值分为哪些?

内置类型的右值和自定义类型的将亡值

9 智能指针

-什么是RAII思想?

-shared_ptr原理?用过没有?

10 进程间通信的方式?

-问我用没用过域间套接字

没有,肯定是网络套接字用的多

11 poll和epoll的区别?
12 是否了解分布式?(公司业务是这个)

不了解,没学而且没找到八股


没了 ,硬挑计组问,难绷

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值