微软2014开发题目

正确率12/25

1.Windows 下进程和线程的描述,哪些是对的:

正确答案 :C

您的答案 :C

窗体顶端

A操作系统的一个程序必须有一个进程,但是不必须有一个线程

B进程有自己的栈空间,而线程只共享父进程的栈空间

C线程必从属于一个进程

D线程可以更改从属的进程

本题注意:1进程必须有一个线程,在现代操作系统中,调度的主要单位已经是线程而非进程。

2进程有自己的栈空间,要是和父进程共享则会出现覆盖之类的。

4进程不能更改从属的进程。

 

 

 

 

2.Which of the following can be referred to as attack method(s)? Select all that apply

正确答案 :ABCD

您的答案 :C

AVulnerability scan

BSQL Injection

CDrive-by downloading

DBrute force

窗体底端

本题首先理清题意下面哪些是攻击方法:

A. Vulnerability scan,缺陷/弱点 扫描肯定是攻击方法啦比如说端口扫描之类,网安课上有讲过。

B.SQL Injection    SQL注入攻击例如:某个网站的登录验证的SQL查询代码为:

 

strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');" 

恶意填入

 

userName = "1' OR '1'='1";

 

passWord = "1' OR '1'='1";

时,将导致原本的SQL字符串被填为

 

strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"

也就是实际上运行的SQL命令会变成下面这样的

 

strSQL = "SELECT * FROM users;"

因此达到无账号密码,亦可登录网站。所以SQL注入攻击被俗称为黑客的填空游

C.下载造成的攻击~

D暴力破解

 

 

 

3.When a dll is loaded into memory, which part(s) can be shared between processes?

正确答案 :AC

您的答案 :BC

窗体顶端

Acode segment

Bstatic variable global variable

Cexternal difinitions and references for linking

DBSS segment

 

本题注意是问dll,动态链接库dll的共享部分包括代码段和外部定义的引用

 

4.Asume you have an object to describe customer data:{ ID7 digit numericFamily NamestringAccount Balancecurrency} If you have 500,000 Chinese customers records represented by instances of this object type , what set of data structures is best to get fast retrieval of customers (1) get IDs from Name and (2) get Name from ID?

A (1)Tree with Hash(100 bucket) at leaves(2) Tree with linked list at leaves.

B(1) Tree with linked list at leaves(2) Array.

C (1)Tree with linked list at leaves(2) Hash(10,000 buckets)

D (1)Sort linked list(2) Array.

Name -> ID 就是 string -> int,字符串最好用 Hash Tree 来索引,不过由于 Name 不是唯一的,一个 Name 可能对应多个 ID,要用 Linked List 做对应过来的结构。所以可以是 Hash + Linked List Tree + Linked List。(Tree 可以用 Trie,复杂度是 O(length(name)),其实 Hash 会更好,理论上复杂度是 O(1))。
ID -> Name 就是 int(7 digit) -> string7 位数也就是 1000 w,可以开得下(人家机子好),所以就可以随机查了。

5.Which of the following method(s) CANNOT be used for Text-encryption:

A.MD5

B.RSA

C.RC4

D.DES

选择A,解析:MD5是不可逆加密,不可以用来加密文本,DESRC4是对称加密,RSA是不对称加密,都可以用于文本加密。

6.To speed up data access , we build cache system. In one system , The L1 cache access time is 5 ns , the L2 cache access time is 50 ns and the memory access time is 400 ns. The L1 cache miss rate is 50% , the L2 cache miss rate is 10%. The average data access time of this system is:

5

30

45

50

55

解析注意访问缓存和访问内存同时进行。

7.下面哪些调用转换支持可变长度参数

正确答案: A   你的答案: 空 (错误)

cdecl

stdcall

pascal

fastcal

解析:

cdecl C 语言的调用方式,函数参数从右到左求值,然后入栈,参数由调用方负责清理,传多少参数其实都无所谓的,于是就支持所谓的可变长度的参数;stdcall C++ 的调用方式,参数从右到左求值,入栈,由被调用方处理参数,所以参数个数类型都必须匹配;pascal 是对 PASCAL 函数的调用方式,参数自左向右求值,其他类似于 stdcall;而 fastcall 的情况忽略。

8.下面程序的执行结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

class A{

    public:

        long a;

};

class B : public A {

    public:

        long b;

};

void seta(A* data, int idx) {

    data[idx].a = 2;

}

int main(int argc, char *argv[]) {

    B data[4];

    for(int i=0; i<4; ++i){

        data[i].a = 1;

        data[i].b = 1;

        seta(data, i);

    }

    for(int i=0; i<4; ++i){

         std::cout << data[i].a << data[i].b;

    }

return 0;

}

正确答案: E   你的答案: D (错误)

11111111

12121212

11112222

21212121

22221111

解析:道题应该注意 指针类型加减 时步长的问题。

A 大小为 4

B 大小为 8

那么:

void seta(A* data, int idx) {

    data[idx].a = 2;

}

由于传入的实参为B类型,大小为8,而形参为A类型,大小为4

data[idx] data + idx 处的元素,这时指针 data1 的长度不是一个B长度,而是一个A长度,或者说是1/2B长度。这时该函数中 data[0~3] 指向的是原 data[0].a,data[0].b,data[1].a,data[1].b, 

由于隐式类型转换的缘故,data[0].a, data[0].b,data[1].a,data[1].b 处的值全部由于 data[idx].a = 2; 操作变为 2

这道题如果改为void seta(B* data, int idx),那么形参中data指针加1步长为8,结果就是21212121。但是由于步长为4,所以结果就是 22221111

9.1000 个瓶子中有一瓶毒药,一只老鼠吃到毒药一周之内会死,如果要在一周之内检测出有毒药的一瓶,问至少需要几只老鼠?

正确答案: B   你的答案: D (错误)

8

10

32

999

解析:1000个瓶子编号1-1000, 每个编号会有一个10位的二进制数字。 10只老鼠,依次喝掉所有二进制第一位是1的瓶子,第二位是1的瓶子。。。第十位是1的瓶子。 一周之后,死掉的老鼠说明毒药瓶子编号在对应二进制位置是1,否则是0。可以组合出毒药的编号。

9.下面说法哪些正确:

正确答案: A B C   你的答案: B C D (错误)

const int a; // a 是常数

int const a; // a 是常数

int const *a; // a 是常量指针

const int *a; // a 是指针常量

int const *a; // a 是指针常量

解析:ABconst int a; int const a; 这两个写法是等同的,表示a是一个int常量。

CDEconst int *a; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。也可以写成int const* a;含义相同。

const只对它左边的东西起作用   唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用。 


发布了47 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/nanchengyu/article/details/52874386