网易有道2017内推选择题
网易有道2017内推选择题
1.关于数据解析以下说法正确的是: ()
A:XML数据结构有且只有一个根节点,并且不能嵌套
B:JSONObjetWithData:options:error:使用文件流
C:writeJSONObject:toStream:options:error:使用缓冲区数据解析json
D:XML解析分为两种:SAX解析和DOM解析
解析:
A、XML只能有一个根节点,但是可以嵌套
B、JSONObjetWithData:options:error:使用缓冲区数据来解析
C、writeJSONObject:toStream:options:error:使用流来解析
选D
2.大小为MAX的循环队列中,f为当前对头元素位置,r为当前队尾元素位置(最后一个元素的位置),则任意时刻,队列中的元素个数为()
A:r-f
B:(r-f+MAX+1)%MAX
C:r-f+1
D:(r-f+MAX)%MAX
解析:
这一题有点陷阱】我来解释下为什么是B而不是D
教材上说的 (也是大家记住的)求队列公式为: (rear-front+Max)%Max
该公式中的 rear指向队尾元素的下一个位置,而本题中rear指向队尾元素位置
所以答案为B
4.程序员小李通过管道统计prog.c函数中for语句通过的次数,需要使用的指令分别是
A:vi
B:grep
C:wc
D:sort
解析:
grep “for” proc.c | wc -l
注意:
1,grep是Global Regular Expression Print, 使用正则表达式搜索文本 , 并把匹配的行打印出来 .
2,wc, word count, 统计指定文件中的字节数 , 字数 , 行数 , 并将统计结果显示输出 .
3,管道的概念,管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.
5. 请将下列构造函数补充完整,使得程序的运行结果是5
1 #include<iostream> 2 using namespace std; 3 class Sample{ 4 public: 5 Sample(intx){ 6 ________ 7 } 8 ~Sample(){ 9 if(p) deletep; 10 } 11 intshow(){ 12 return*p; 13 } 14 private: 15 int*p; 16 }; 17 int main(){ 18 Sample S(5); 19 cout<<S.show()<<endl; 20 return 0; 21 }
A:*p=x;
B:p=new int(x);
C:*p=new int(x);
D:p=&x;
解析:
A.指针p是空指针,在调用构造函数Sample时,中断,提示0xCCCCCC。
B.是正确的,诀窍,看到delete就想到有new,他们最好成对出现。
C.编译不过,这个表达式,左边的类型是int * ,右边的是int,所以编译不过
D.编译通过,但结果不对,结果是使用过的栈地址,而且不被释放,导致程序终止异常
选B。
6.关于解释系统的叙述中,正确的是()
A:解释程序不是直接执行,而是转换成机器可识别码之后才能执行
B:使用解释系统时会区分编译阶段和运行阶段
C:目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高
D:一般来说,建立在编译基础上的系统在执行速度要优于建立在解释执行基础上的系统
解析:
目标程序是 编译系统生成的,解释系统不生成目标程序。
编译:源代码->目标代码
解释:源代码->中间代码->目标代码
目标代码是机器可直接执行的代码
不管编译还是解释,都需要转为机器识别的才能执行,只不过解释是靠虚拟机或者其他机制。
A:计算机不能直接理解任何除其语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。将其他语言翻译成机器语言的工具,被称为编译器。编译器翻译的方式有两种:一个是编译,一个是解释,相对应的是编译型语言和解释型语言。
B:编译语言程序执行分为编译、执行两个阶段
C:编译语言如JAVA是跨平台语言,编译一次可以在别的系统中不需再次编译直接执行。
D:编译语言首先将源码编译成字节码或者编译成二进制码,C就是把源码编译成二进制码,JAVA编译成字节码。编译语言执行的效率往往比较高。因为它会对编译好的代码直接执行,而编译好的代码已经接近机器语言,无需再去做解释的工作。解释性语言不同,在执行的时候才把源代码调到执行它的地方,比如是引擎或者解释器,调用一句执行一句。
选:AD。
7. 在一个10阶的B-树上,每个树根结点中所含的关键字数目最多允许为( )个,最少允许为( )个。
A:10,5
B:9,4
C:8,3
D:7,6
解析:
B-树,即为B树 。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是, B-tree就是指的B树。
最多M-1 最少M/2-1 向上取整
选:B。
8. 下列程序编译时会出现错误,请根据行号选择错误位置( )
1 #include <iostream> 2 using namespace std; 3 class A{ 4 int a1; 5 protected: 6 int a2; 7 public: 8 int a3; 9 }; 10 class B: public A{ 11 int b1; 12 protected: 13 int b2; 14 public: 15 int b3; 16 }; 17 class C:private B{ 18 int c1; 19 protected: 20 int c2; 21 public: 22 int c3; 23 }; 24 int main(){ 25 B obb; 26 C obc; 27 cout<<obb.a1;//1 28 cout<<obb.a2;//2 29 cout<<obb.a3;//3 30 cout<<obc.b1;//4 31 cout<<obc.b2;//5 32 cout<<obc.b3;//6 33 cout<<obc.c3;//7 34 return 0; 35 }
A:1,2
B:2,5,7
C:3,4,7
D:4,5,6
解析:
继承有三种方式,即公有(public)继承,私有(private)继承,保护(protected)继承。(私有成员(private属性)不能够被继承)
1. 公有继承就是将基类的公有成员变为自己的公有成员,基类的保护成员变为自己的保护成员。
2. 保护继承是将基类的公有成员和保护成员变成自己的保护成员。
3. 私有继承是将基类的公有成员和保护成员变成自己的私有成员。
private,public,protected访问标号的访问范围:
private:只能由(1)该类中的函数(2)其友元函数访问
不能被任何其他访问,该类的对象也不能访问
protected:可以被(1)该类中的函数(2)子类的函数(3)其友元函数访问
但不能被该类的对象访问
public:可以被(1)该类中的函数(2)子类的函数(3)其友元函数访问(4)该类的对象访问。
1 cout<<obb.a1;//1 a1是A私有的 2 3 cout<<obb.a2;//2 a2是A开放给派生类使用的,客户代码不能使用 4 5 cout<<obc.b1;//4 C是私有继承于B,不能使用B的成员 6 7 cout<<obc.b2;//5 同上 8 9 cout<<obc.b3;//6 同上
选:AD。
9. 一磁带机有9道磁道,带长700m,带速2m/s,每个数据块1k字节,块间间隔14mm。如果数据传输率为128000字节/秒,求记录位密度为()字节/m.
A:500000
B:64000
C:1000000
D:12800
解析:
数据传输率(C)= 记录位密度(D) x 线速度(V)
所以D = C/V = 128000/2 = 64000
选:B。
10. 以下几条路由,10.1.193.0/24,10.1.194.0/24,10.1.196.0/24,10.1.198.0/24,如果进行路由汇聚,则能覆盖这几条路由地址的是()
A:10.1.192.0/22
B:10.1.200.0/22
C:10.1.192.0/21
D:10.1.224.0/20
解析:
10.1.193.0的二进制:00001010.00000001.11000 001.00000000
10.1.194.0的二进制:00001010.00000001.11000 010.00000000
10.1.196.0的二进制:00001010.00000001.11000 100.00000000
10.1.198.0的二进制:00001010.00000001.11000 110.00000000
子网掩码为:11111111.11111111.11111 000.00000000 (十进制为255.255.248.0)即可覆盖。
子网掩码是用来划分主机号和网络号,上面的二进制中只有001, 010, 100, 110这三位以后不同。
取前面21位相同为网络号,后面11位为主机号。
故为: 00001010.00000001.11000 000.00000000 (10.1.192.0)
子网掩码为 11111111.11111111.11111 000.00000000 (255.255.248.0, 缩写为21)
选:C。