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

本文精选了一系列技术面试题目,涵盖数据结构、算法、操作系统、计算机网络等多个领域,每道题目都附有详细的解析,帮助读者深入理解技术要点。

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

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

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

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

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

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

#####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)SATASATASATA 硬盘:SATA(SerialATA)SATA(Serial ATA)SATASerialATA口的硬盘又叫 串口硬盘 ,全称是Serial Advanced Technology AttachmentSerial\ Advanced\ Technology\ AttachmentSerial Advanced Technology Attachment

2)SSDSSDSSD 硬盘:固态硬盘(SolidStateDrives)(Solid State Drives)SolidStateDrives, 适合于个人用户使用。一般它擦写次数普遍为 300030003000 次左右,以常用的 64G64G64G 为例,在 SSDSSDSSD 的平衡写入机理下,可擦写的总数据量为 64GX3000=192000G64G X 3000 = 192000G64GX3000=192000G

3)文件系统:是抽象与操作系统之上的,文件系统一般按照 ClusterClusterCluster 大小,有时候也称为 BlockBlockBlock 大小来读写数据,这个 ClusterClusterCluster 一般最小的 4K4K4K,大的定为 32K、64K32K、64K32K64K 等都可以,主要根据应用的不同。比如 OracleOracleOracle 的应用一般就用 4K4K4K8K8K8KBlockBlockBlock 大小,大文件读写就用 128K128K128K,甚至 256K256K256K 都可以。

#####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. 以上都不对

######解析:
38∗0.01%38∗0.01%+58∗0.015%≈28.6%\frac{\frac{3}{8} * 0.01\%}{\frac{3}{8} * 0.01\% + \frac{5}{8} * 0.015\%} \approx 28.6\%830.01%+850.015%830.01%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

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

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

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

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

preadpreadpread,用于带偏移量的从文件中读取数据。

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

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

######解析:
AAA 为买,BBB 为收藏,
已知 P(A)=5%P(A) = 5\%P(A)=5%P(B)=20%P(B) = 20\%P(B)=20%P(A∣B)=20%P(A | B) = 20\%P(AB)=20%
所以 P(B∣A)=P(AB)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\%P(BA)=P(A)P(AB)=P(A)P(AB)P(B)=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∣⋅cos&lt;A,B&gt;A · B = |A| · |B| · cos&lt;A, B&gt;AB=ABcos<A,B>,内积的正负由 A,BA, BA,B 夹角余弦决定,夹角的取值范围为 [0,Π][0, \Pi][0,Π]
AAA 向量方向为 XXX 轴正方向,BBB 向量为 606060 度,只考虑一二象限时,
对于 CCCAAA 的内积,CCCXXX 轴的夹角为 [0,Π2][0, \frac{\Pi}{2}][0,2Π] 为正,[Π2,Π][\frac{\Pi}{2}, \Pi][2Π,Π] 为负;
对于 CCCBBB 的内积,CCCXXX 轴的夹角为 [0,Π2+Π3][0, \frac{\Pi}{2} + \frac{\Pi}{3}][0,2Π+3Π] 为正,[Π2+Π3,Π][\frac{\Pi}{2} + \frac{\Pi}{3}, \Pi][2Π+3Π,Π] 为负。
因此,同为正的概率 12\frac{1}{2}21,同为负的概率 16\frac{1}{6}61,故,同号的概率为 23\frac{2}{3}32
同理,三四象限和一二象限概率一样,所以整个二维平面同号的概率为 23\frac{2}{3}32

#####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

######解析:
接下来比赛赢的序列中,
乙赢的可能有{乙乙,丙乙乙,乙丙乙,乙丙丙乙,丙乙丙乙,丙丙乙乙} =19+127∗2+181∗3=627= \frac{1}{9} + \frac{1}{27} * 2 + \frac{1}{81} * 3 = \frac{6}{27}=91+2712+8113=276
丙赢的可能有{丙丙丙,乙丙丙丙,丙乙丙丙,丙丙乙丙} =127+181∗3=227= \frac{1}{27} + \frac{1}{81} * 3 = \frac{2}{27}=271+8113=272
那么,甲的概率也就是 1927\frac{19}{27}2719 了。

#####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. 以上都不对

######解析:
BBB 继承自 AAA,先 AAA 构造函数,输出 000,然后 BBB 构造函数,BBBtesttesttest 继承自 AAA,然后找 funcfuncfunc 函数找到 BBB 自己的,所以输出 111,然后 p−&gt;test()p-&gt;test()p>test() 再执行一次,输出 222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值