任何人都可以告诉我虚拟内存和交换空间有什么区别?
为什么我们说32位机器的最大虚拟内存访问量仅为4 GB?
存储100万个电话号码的最有效方式是什么?
显然这是Google的面试问题,请提出您的想法.
当我们使用a HashTable来存储数据时,据说搜索需要o(1)时间.我很困惑,任何人都可以解释一下吗?
#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n",h(f(1,2)));
printf("%s\n",g(f(1,2)));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
只需通过查看程序,"可能"期望输出,对于两个printf语句都是相同的.但是在运行程序时,你得到它:
bash$ ./a.out
12
f(1,2)
bash$
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我正在研究ARM处理器,我想知道使用的ROM和RAM是否与我假设的完全不同.例如,对于具有以下内存表的程序:
Program Size:
Code=1264
RO-data=16
RW-data=0
ZI-data=1384
Run Code Online (Sandbox Code Playgroud)
这是如何在ROM和RAM之间分配的?
我们有一个大小为m + n的数组,其中m个元素按排序顺序存在,第二个数组大小为n,同样按排序顺序排列.我们希望它们都被排序并存在于第一个数组中.不应该给出第三个数组.
例:
1, 3, 55, 66, 77, _, _, _
5, 9, 20
Run Code Online (Sandbox Code Playgroud)
答案是:
1, 3, 5, 9, 20, 55, 66, 77
Run Code Online (Sandbox Code Playgroud) A[i][j]给出了一个矩阵.如果我们想添加矩阵的元素,哪种方法更好,为什么?
从我的观点来看,行方式更好,因为在数组表示元素存储在连续的内存位置,因此访问它们花费的时间更少.但是因为在RAM中获取每个位置需要相同的时间,这是否重要?
在下面的代码中
int main()
{
int a = -1;
printf("%d",a>>1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么它给出输出-1.