EMC2012笔试体会

这篇博客回顾了EMC2012笔试的内容,涉及语言知识如引用、接口和虚拟函数,逻辑思维题,数据库事务的ACID属性,以及内核、文件系统和锁的相关问题。还探讨了虚拟机内存管理和存储优化策略,并讨论了文件系统中的dup和dup2函数,以及在N个Object分布于M个disk上的系统设计挑战和改进方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、不定项选择题(主要分析一下考察重点)

PART1:

//语言知识

1、引用不用指向临时变量原因

2、类型安全检查的好处

3、interface derivation/implementation derivation区别

4、virtual可重写问题

5、top/pop分开实现用意

6、char a[]="abcedfghi"; char* pa = a;哪个可以编译通过

A、a = pa++  B、pa[-1]=33 C、a[5]=23 D、pa=&(a[8]) E、pa[9]=a[7]

7、全局、局部、指针等,变量存储位置

//逻辑思维

8、猜该补全的图

9、给一列数找规律,给出另一列数

//数据库

10、数据库事务的ACID性,auomic, consistency, isolation, durability

11、数据库中"5/null"意思

12、SQL语句用B+树如何实现检索

13、事务deadlocks

//内核、文件系统、锁、组成原理

14、spinlocks/nutexlocks区别

15、提高cache hit方法

16、kernel可以访问的资源

17、file的metadata有哪些

 

PART2:

18、总资源16CPU(2GHZ), 10GB memory, 300G disk, VMM消耗1G memory, 10G disk, 每个VM消耗1G(CPU), 512 MB, 20 GB disk,问可支持多少VM同时运行?

A、32 B、20 C、16 D、15 E、14

19、storage thin provisioning, 写时分配空间用途

20、Hack, struct中如何用成员的地址找到结构首地址。需要对C的地址计算很了解, 详见参考代码

21、Hack, 字符串溢出行为。考察程序栈变量分配方式、小尾端存储, 详见参考代码

 

二、主观题

22、文件系统中dup(int fd)与dup2(int fd1, int fd2)区别

23、系统设计,N个Object存在M个disk上

(1)如何通过Object(id)找到disk

(2)如何disk增加,需要检查到哪些disk坏掉,(1)方法好处坏处

(3)在(2)中的坏处如何改进

 

//参考代码

//20题,hack struct
#include <stdio.h>

#define abc(s,m) (size_t)&(((s*)0)->m)
#define bcd(ptr, type, member) ({const typeof(((type*)0)->member)* __mptr=(ptr);\
(type*)((char*)__mptr-abc(type,member));})

struct test{
	int a;
	char b;
	long t;
};
int main()
{
	struct test *p;
	struct test m;
	m.a = -1;
	m.t = 37;
	p = bcd(&(m.t), struct test, t);
	printf("%d\n", p->a);
	return 0;
}


 

//21题, hack overflow
#include <stdio.h>
#include <string.h>

union AAA
{
	unsigned int a;
	char b;
};
bool isLittleEnd()
{
	AAA i;
	i.a = 0x1;
	return i.b==0x1;
}
int main(int argc, char* argv[])
{
	int x=345;
	char buf[4];
	//debug
	printf("&x:%x\t&buf:%x\n", &x, buf);
	printf("sizeof(int):%d\n", sizeof(int));
	printf("isLittleEnd:%d\n", isLittleEnd());

	sprintf(buf,"%s", argv[1]);
	buf[4]='\0';
	buf[3]='k';
	//may be 26112 and abck
	printf("x=%d, buf=%s\n", x, buf);
	
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值