这是一个C++面试测试题而不是作业.
#include <iostream>
using namespace std;
enum months_t { january, february, march, april, may, june, july, august, september,
october, november, december} y2k;
int main ()
{
cout << "sizeof months_t is " << sizeof(months_t) << endl;
cout << "sizeof y2k is " << sizeof(y2k) << endl;
enum months_t1 { january, february, march, april, may, june, july, august,
september, october, november, december} y2k1;
cout << "sizeof months_t1 is " << sizeof(months_t1) << endl;
cout << "sizeof y2k1 is " << sizeof(y2k1) …Run Code Online (Sandbox Code Playgroud) 这是一个面试问题.
是否可以在Linux/UNIX上的多处理案例中使用互斥?
我的想法:不,不同的进程有独立的内存空间.
mutex仅用于多线程.
信号量用于多处理以进行同步.
对 ?
欢迎任何评论.
谢谢
multithreading synchronization mutex semaphore multiprocessing
我想知道Erlang中垃圾收集和内存管理的技术细节.
但是,我在Erlang.org及其文档中找不到它.
网上的一些文章只是一般性的谈话而没有触及细节,例如使用什么垃圾收集算法,什么是性能开销,内存分配也像C中的堆?
谁能推荐更好的文档来学习?
谢谢
这是一个在线C++测试问题,已经完成.
#include<iostream>
using namespace std;
class A
{
};
class B
{
int i;
};
class C
{
void foo();
};
class D
{
virtual void foo();
};
class E
{
int i ;
virtual void foo();
};
class F
{
int i;
void foo();
};
class G
{
void foo();
int i;
void foo1();
};
class H
{
int i ;
virtual void foo();
virtual void foo1();
};
int main()
{
cout <<"sizeof(class A) : " << sizeof(A) << …Run Code Online (Sandbox Code Playgroud) 给定一个int数组,每个int在数组中恰好出现TWICE.找到并返回int,使得这对int在此数组中具有彼此之间的最大距离.
例如 [2, 1, 1, 3, 2, 3]
2: d = 5-1 = 4;
1: d = 3-2 = 1;
3: d = 6-4 = 2;
return 2
Run Code Online (Sandbox Code Playgroud)
我的想法:
使用hashmap,key是a[i],value是索引.扫描a[],将每个数字放入哈希值.如果数字被命中两次,请使用其索引减去旧数字索引,并使用结果更新哈希中的元素值.
之后,扫描哈希并返回具有最大元素(距离)的密钥.在时间和空间上都是O(n).
如何在O(n)时间和O(1)空间中进行?
这是一个面试问题,面试已经完成.
给定一副长方形卡片,将它们随机放在一张矩形桌子上,这张桌子的大小远大于卡片大小的总和.有些卡片可能会随机重叠.设计一种算法,可以计算所有卡覆盖的表面积,并分析算法的时间复杂度.所有卡的每个顶点的所有坐标都是已知的.卡可以任何模式重叠.
我的想法:
按垂直坐标降序对卡片进行排序.
到达卡片的边缘或顶点后,从上到下垂直扫描卡片,继续扫描另一条扫描线,直至到达另一条边缘,然后找到位于两条线条之间的区域.最后,对位于两条线之间的所有区域求和并得到结果.
但是,如果区域不规则,如何计算位于两条线之间的区域是一个问题.
任何帮助表示赞赏.谢谢 !
这是一个面试问题,面试已经完成.
什么东西可以使C++比C慢?
面试官问得很深,每当我说些什么时总是问"别的什么?".
我的想法:
C中没有的C++功能可能会有一些成本.
例如,如果我们使用赋值来在构造函数内初始化类的成员而不是初始化列表,则可以在构造函数的主体之前调用成员的默认构造函数,然后通过赋值消除该值.
需要通过搜索虚函数指针来调用虚函数.这是一个开销.
有更好的想法吗?
任何帮助将不胜感激.
谢谢 !!!
我有许多网页访问日志文件,其中每次访问都与用户ID和时间戳相关联.我需要确定最受欢迎(即最常访问)的三页序列.日志文件太大,无法立即保存在主内存中.
示例日志文件:
User ID Page ID
A 1
A 2
A 3
B 2
B 3
C 1
B 4
A 4
Run Code Online (Sandbox Code Playgroud)
相应的结果:
答:1-2-3,2-3-4
B:2-3-4
2-3-4是最受欢迎的三页序列
我的想法是使用两个哈希表.用户ID的第一个哈希并存储其序列; 第二个散列三页序列并存储每个序列出现的次数.这需要O(n)空间和O(n)时间.
但是,由于我必须使用两个哈希表,因此内存不能同时保存所有内容,而且我必须使用磁盘.经常访问磁盘效率不高.
我怎么能做得更好?
这是一个面试问题.
给定一个整数数组,找到数组中出现偶数频率的单个整数值.所有整数都是正数.所有其他数字出现奇数频率.数组中的最大数字可以是INT_MAX.
例如,[2,8,6,2]应返回2.
如果你能找到更好的解决方案,如O(1)空间和O(n)时间,可以修改原始数组.
我知道如何通过hashtable(遍历和计数freq)来解决它.它是O(n)时间和空间.
是否可以通过O(1)空间或更好的时间来解决它?
给定一系列数据(可能有重复数据),固定大小的移动窗口,从数据序列的开始每次迭代移动窗口,以便(1)从窗口中移除最旧的数据元素并且新的数据元素被推入窗口(2)在每次移动时找到窗口内数据的中值.
以下帖子没有帮助.
我的想法:
使用2堆来保持中位数.在窗口旁边,在第一次迭代中对窗口中的数据进行排序,最小堆保存较大的部分,最大堆保存较小的部分.如果窗口具有奇数个数据,则最大堆返回中值,否则两个堆的顶部元素的算术平均值是中值.
将新数据推入窗口时,从其中一个堆中删除最旧的数据,并将新数据与max和min堆的顶部进行比较,以便确定要将数据放入哪个堆.然后,找到中间值就像在第一次迭代中一样.
但是,如何在堆中查找数据元素是一个问题.堆是二叉树而不是二叉搜索树.
是否有可能用O(n)或O(n*lg m)求解它,其中m是窗口大小和空间:O(1)?
任何帮助都非常感谢.
谢谢