阿里巴巴2016校园招聘 研发工程师(四)详解

版权声明:听说这里让写版权声明~~~ https://blog.csdn.net/f_zyj/article/details/79223059

##单选题
#####1、一个长度为99的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点____。

A. 99
B. 100
C. 101
D. 49
E. 50
F. 51

######解析:
设需要 x x 步,则由题可得, x   %   99 = 3 x   %   99 x\ \%\ 99 = 3 * x\ \%\ 99 ,接着最简单的做法就是代入了。

#####2、以下函数中,和其他函数不属于一类的是____。

A. read
B. pread
C. write
D. pwrite
E. fseek
F. lseek

######解析:
这里面只有 f s e e k fseek 是库函数,而其他的都是系统级调用。

#####3、有一个类B继承自类A,他们数据成员如下:

class A {
...
private:
     int a;
};
class B  : public A {
...
private:
     int a;
public:
     const int b;
     A &c;
     static const char* d;
     B* e;
}

#####则构造函数中,成员变量一定要通过初始化列表来初始化的是____。

A. a b c
B. b c e
C. b c d e
D. c e
E. b d
F. b c

######解析:
构造函数初始化时必须采用初始化列表一共有三种情况,
1)需要初始化带有引用的类对象(继承时调用基类构造函数);
2)需要初始化 const 修饰的类成员 ;
3)需要初始化引用成员数据。

另外,static 修饰的变量在类外初始化。

#####4、如下描述中,错误的是____。

A. SATA硬盘因为有机械部件,随机读写时会发生磁头的物理运动。主流硬盘的平均寻道时间在几毫秒到几十毫秒
B. SATA硬读写的最小单位是扇区,扇区的大小是512字节或者4k
C. 文件系统读写硬盘的最小单位也是扇区
D. SSD支持随机读写.但是一般读性能要好于写性能
E. SSD的随机读写延时要比SATA低两个数量级
F. SSD根据使用技术的不同,写的寿命是有限的,需要软件进行写优化,确保存储单元的写次数基本同步增长

######解析:
1) S A T A SATA 硬盘: S A T A S e r i a l A T A SATA(Serial ATA) 口的硬盘又叫 串口硬盘 ,全称是 S e r i a l   A d v a n c e d   T e c h n o l o g y   A t t a c h m e n t Serial\ Advanced\ Technology\ Attachment

2) S S D SSD 硬盘:固态硬盘 S o l i d S t a t e D r i v e s (Solid State Drives) , 适合于个人用户使用。一般它擦写次数普遍为 3000 3000 次左右,以常用的 64 G 64G 为例,在 S S D SSD 的平衡写入机理下,可擦写的总数据量为 64 G X 3000 = 192000 G 64G X 3000 = 192000G

3)文件系统:是抽象与操作系统之上的,文件系统一般按照 C l u s t e r Cluster 大小,有时候也称为 B l o c k Block 大小来读写数据,这个 C l u s t e r Cluster 一般最小的 4 K 4K ,大的定为 32 K 64 K 32K、64K 等都可以,主要根据应用的不同。比如 O r a c l e Oracle 的应用一般就用 4 K 4K 8 K 8K B l o c k Block 大小,大文件读写就用 128 K 128K ,甚至 256 K 256K 都可以。

#####5、现在有一个程序由A,B两个同学结对编程完成,在整个程序中的代码比例是3:5,据往常的统计A同学的Bug率为0.01%,B同学的Bug率为0.015%,现在在改程序中发现了一个BUG,那么是由A同学的代码引起的BUG概率是____。

A. 26.2%
B. 27.1%
C. 28.6%
D. 32.5%
E. 37.5%
F. 以上都不对

######解析:
3 8 0.01 % 3 8 0.01 % + 5 8 0.015 % 28.6 % \frac{\frac{3}{8} * 0.01\%}{\frac{3}{8} * 0.01\% + \frac{5}{8} * 0.015\%} \approx 28.6\%

#####6、当前国内A股市场的新股发行采取的是抽签申购的方式。假设最多可以申购某新股X 1万股,以1千股为单位分配一个号码进行抽签,每个号码抽中与否是相互独立的且概率为0.5%,X的发行价是10元,涨至15元和20元的概率均为50%,那么在最大申购的情况下盈利的期望是____。
A. 250
B. 300
C. 325
D. 375
E. 425
F. 500

######解析:
抽中的概率: 10000 1000 0.5 % = 5 % \frac{10000}{1000} * 0.5\% = 5\%
盈利 = ( ( 15 10 ) 50 % + ( 20 10 ) 50 % ) 1000 5 % = 375 = ((15 - 10) * 50\% + (20 - 10) * 50\%) * 1000 * 5\% = 375

#####7、以下函数中,和其他函数不属于一类的是_____。

A. fread
B. gets
C. getchar
D. pread
E. getline
F. scanf

######解析:
除了 D D 以外都是不带偏移量的输入相关函数。

p r e a d pread ,用于带偏移量的从文件中读取数据。

#####8、假设淘宝用户上的用户看到一个商品后购买的概率是5%,收藏的概率是20%,而用户收藏一个商品之后购买的概率是20%,那么已知某用户看到某商品之后完成了购买,那么该用户收藏过该商品的概率是____。

A. 40%
B. 50%
C. 60%
D. 70%
E. 80%
F. 90%

######解析:
A A 为买, B B 为收藏,
已知 P ( A ) = 5 % P(A) = 5\% P ( B ) = 20 % P(B) = 20\% P ( A B ) = 20 % P(A | B) = 20\%
所以 P ( B A ) = P ( A B ) P ( A ) = P ( A B ) P ( B ) P ( A ) = 80 % P(B | A) = \frac{P(AB)}{P(A)} = \frac{P(A|B)P(B)}{P(A)} = 80\%

#####9、四维空间中有两个夹角60度的向量A和B,随机生成一个向量C分别与A和B计算内积,那么两个内积符号相同的概率为____。

A. 1/4
B. 1/3
C. 1/2
D. 2/3
E. 3/4
F. 以上都不对

######解析:
各个维度相互独立,所以其实和二维平面是一样的,完全可以拿二维平面来考虑。

内积 A B = A B c o s < A , B > A · B = |A| · |B| · cos<A, B> ,内积的正负由 A , B A, B 夹角余弦决定,夹角的取值范围为 [ 0 , Π ] [0, \Pi]
A A 向量方向为 X X 轴正方向, B B 向量为 60 60 度,只考虑一二象限时,
对于 C C A A 的内积, C C X X 轴的夹角为 [ 0 , Π 2 ] [0, \frac{\Pi}{2}] 为正, [ Π 2 , Π ] [\frac{\Pi}{2}, \Pi] 为负;
对于 C C B B 的内积, C C X X 轴的夹角为 [ 0 , Π 2 + Π 3 ] [0, \frac{\Pi}{2} + \frac{\Pi}{3}] 为正, [ Π 2 + Π 3 , Π ] [\frac{\Pi}{2} + \frac{\Pi}{3}, \Pi] 为负。
因此,同为正的概率 1 2 \frac{1}{2} ,同为负的概率 1 6 \frac{1}{6} ,故,同号的概率为 2 3 \frac{2}{3}
同理,三四象限和一二象限概率一样,所以整个二维平面同号的概率为 2 3 \frac{2}{3}

#####10、2015年年初,某公司部门举行年会,期间有个游戏,规则是通过猜拳的方法决出每一局的胜负(一人赢其他所有人才算赢得本局,出现平局就继续猜拳),如果谁先赢满7局,则获胜,并赢得全部奖金。现在有3名员工甲、乙、丙参与了这个游戏,游戏进行了一会,分数为甲6,乙5,丙4,但时间已晚,大家要吃饭了。最公平的奖金分配方案是____。

A. 甲得到19/27,乙得到7/27,丙得到1/27
B. 甲得到18/27,乙得到8/27,丙得到1/27
C. 甲得到17/27,乙得到1/3,丙得到1/27
D. 甲得到19/27,乙得到6/27,丙得到2/27
E. 甲得到18/27,乙得到7/27,丙得到2/27
F. 甲得到17/27,乙得到8/27,丙得到2/27

######解析:
接下来比赛赢的序列中,
乙赢的可能有{乙乙,丙乙乙,乙丙乙,乙丙丙乙,丙乙丙乙,丙丙乙乙} = 1 9 + 1 27 2 + 1 81 3 = 6 27 = \frac{1}{9} + \frac{1}{27} * 2 + \frac{1}{81} * 3 = \frac{6}{27}
丙赢的可能有{丙丙丙,乙丙丙丙,丙乙丙丙,丙丙乙丙} = 1 27 + 1 81 3 = 2 27 = \frac{1}{27} + \frac{1}{81} * 3 = \frac{2}{27}
那么,甲的概率也就是 19 27 \frac{19}{27} 了。

#####11、以下程序输出结果是____。

class A
{
    public:
        A():m_iVal(0){test();}
        virtual void func() { std::cout<<m_iVal<<‘ ’;}
        void test(){func();}
    public:
        int m_iVal;
};
class B : public A
{
    public:
        B(){test();}
        virtual void func()
        {
            ++m_iVal;
            std::cout<<m_iVal<<‘ ’;
        }
};
int main(int argc ,char* argv[])
{
    A*p = new B;
    p->test();
    return 0;
}

A. 1 0
B. 0 1
C. 0 1 2
D. 2 1 0
E. 不可预期
F. 以上都不对

######解析:
B B 继承自 A A ,先 A A 构造函数,输出 0 0 ,然后 B B 构造函数, B B t e s t test 继承自 A A ,然后找 f u n c func 函数找到 B B 自己的,所以输出 1 1 ,然后 p &gt; t e s t ( ) p-&gt;test() 再执行一次,输出 2 2

猜你喜欢

转载自blog.csdn.net/f_zyj/article/details/79223059