zoukankan      html  css  js  c++  java
  • 阿里巴巴2017秋招研发工程师笔试题详解

    2.在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:

    A.其中一个DELETE操作,一个是SELECT操作
    B.其中两个都是UPDATE
    C.其中一个是SELECT,一个是UPDATE
    D.其中一个SELECT
    E.其中一个是DELETE,另一个是UPDATE
    F.两个都是DELETE

    解析:F

    当要删除的记录在数据库中不存在的时候,是不会报错的。

    3.众所周知我们所处的宇宙的质能公式是E=mc 2 ,其中c是真空中的光速。和我们的宇宙平行的另一个宇宙meta,研究显示他们使用的质能公式是E=(2+ √3) m ,当一个物体的质量很大的时候,对应的能量E非常大,数据也非常的长。但meta宇宙里面的智慧生物非常的懒,他们只愿意把E取整,然后记录对应的能量E的最后一位整数,比如m=0时,他们会记录1,m=1时,他们会记录3,m=2时,他们会记录3.现在请问当m=80时,他们会记录多少?

    A.1
    B.2
    C.3
    D.4
    E.5
    F.6

    题解:C

    这道题的确是有规律,但是133规律的理由实际上是比较复杂的,并不是试出来的,因为存在有分数部分,所以规律在不被证明的情况下是可能打破的,但这种类型题的确是找规律才能解决,这里提供一个解法。

    思考这个式子:(2+ √3) m +(2- √3) m ;你可能考虑到了两点,1是展开后,所有根式项被消去了剩下的是整数,2是(2- √3) m 这个式子永远都是一个小于1的数字。通过这两点,我们可能可以想了,实际(2+ √3) m +(2- √3) m 这个整数减1实际就是(2+ √3) m 的所有整数部分。

    我们可以试一试假设f(m) = (2+ √3) m +(2- √3) m ,那么f(0) = 2,f(1) = 4,f(2) = 14,f(3) = 52,f(4) = 194,f(5) = 724看到这里,可能又有人说我发现这个规律了!末尾数是244的循环。的确这个规律是正确的,但是在没被证明的情况下,万一f(30)出现了小差错呢,都是有可能的,如费马的大素数猜想后来也被欧拉举出反例。

    那现在来证明,根据之前的f(0) ~ f(5) 的结果,我们其实有一个大致的方向了,证明这个数列满足末尾数是244循环出现的!好了其实有这个思路之后,最直接的想法其实是根据通式求出递推式,若递推满足,那么我们猜想成立。我直接是猜测这个式子的满足线性,为什么,因为不满足线性的式子基本不可能出现循环规律(经验告诉我哈)。

    好吧那么我们基本可以猜想这个式子实际是满足这个格式的f(m)=af(m-1)+bf(m-2),满不满足呢?试试,那么得出下列式子:

    7+4√3=(2+√3)a+b

    7-4√3=(2-√3)a+b

    消去得出,a=4,b=-1。哈?好像猜对了。f(m+2)=4f(m+1)-f(m),在满足这种规律的情况下,只计算个位数用T(m)表示,T(0)=2,T(1)=4,T(2)=4,T(3)=4*4-4=2,T(4)=4*2-4=4,T(4)=4*2-4=4,当末尾重复出现244,并且显然在满足这个通式的情况下永远不会跳出这个循环。考虑T(80)=4。那么选4,呸呸呸!别忘了还要减一个(2- √3) m ,这个是一个小于1的数,所以结果肯定是xxxxx3.xxxxxx,个位数部分是3哦

    4.页高速缓存是Linux kerne使用的主要的磁盘缓存技术。它允许系统把存放在磁盘上的一些数据保留在内存中,以便减少对磁盘的访问。进程对页高速缓存区中的数据修改之后,数据页被标记为“脏数据”在下列哪些条件下,脏数据不会被写入磁盘?

    A.页高速缓存空间不足
    B.突然断电
    C.变脏以来,太久没有过更新
    D.通过系统调用(sync(),fsync(),fdataasync())来强行对将对快设备的更新同步到磁盘
    E.内存足够大
    F.磁盘足够大

    题解:B E

    当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。

    9.以下程序的运行结果是?

    A.foobar
    B.barfoo
    C.foobar或者barfoo都有可能
    D.Bar
    E.Foo
    F.程序无法正常运行

    题解:A

    调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。
    1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;
    2.run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码, 这样就没有达到写线程的目的。

    10.输入图片大小为200×200,依次经过一层卷积(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一层卷积(kernel size 3×3,padding 1,stride 1)之后,输出特征图大小为:

    A.95
    B.96
    C.97
    D.98
    E.99
    F.100

    题解:C

    输入图片大小 W×W
    Filter大小 F×F
    步长 S
    padding的像素数 P
    N = (W − F + 2P )/S+1 (这里向下取整才对)

    11.一个二叉树有100个子节点数为2的节点,100个子节点数为1的节点,那么个子节点数为0的节点(叶节点)的个数为:

    A.101
    B.100
    C.200
    D.300
    E.99
    F.1

    题解:A

    首先,假设该二叉树有n个节点,则有n - 1条边,这是因为除了根节点,其余的每个节点都有且只有一个父节点,那么这n个节点恰好为树贡献了n-1 条边。这是从下往上的思考,而从上往下(从树根到叶节点)的思考,容易得到每个节点的度数和 0*n0 + 1*n1 + 2*n2 即为边的个数。
    因此,我们有等式 n-1 = n1 + 2*n2,把n用n0+n1+n2替换,
    得到n0 + n1 + n2 - 1 = n1 + 2*n2,于是有
    n0 = n2 + 1。

    n0=n2+1=100+1=101

    12.某种类型的双核 CPU 的性能提升了 1/3 ,假定该提升是通过对每条指令缩短执行时间实现的,那么它每条指令执行时间缩短了 () 。

    A.1/4
    B.1/8
    C.1/3
    D.1/6
    E.1/5
    F.1/2

    解析:A

    设 原来:1秒执行1条指令 现在:1秒执行4/3条指令
    则 现在执行一条指令花费1秒/(4/3)=3/4秒
    所以 每条指令执行时间缩短了1秒-3/4秒=1/4秒

    13.一个map-reduce任务由m个mapper和r个reducer构成,计算的效率可以认为正比于mr的乘积(数据管道的个数),在限定任务的mr乘积约等于10000的情况下,假定每个mapper和每个reducer的成本分别为1和7,那么最佳的资源分配最接近于以下哪个方案?

    A.mapper100个,reducer100个
    B.Mapper200个,reducer50个
    C.Mapper264个,reducer38个
    D.Mapper316个,reducer32个
    E.Mapper500个,reducer20个
    F.Mapper1000个,reducer10个

    解析:C

    假定每个mapper和每个reducer的成本分别为1和7, 其实就是求最后和最小的方案
    A : 100 + 100*7 = 800
    B: 200 + 50*7 = 550
    C: 264 + 38*7 = 530
    D: 316 + 32*7 = 540
    E: 500 + 20 * 7 = 640
    F 1000 + 10*7 = 1070

    所以C答案组合方式是最小成本组合。
    C: Mapper264个,reducer38个

    15.一个机器人玩抛硬币的游戏,一直不停的抛一枚不均匀的硬币,硬币有A,B两面,A面的概率为3/4,B面的概率为1/4。问第一次出现连续的两个A年的时候,机器人抛硬币的次数的期望是多少?

    A.9/4
    B.11/4
    C.15/4
    D.4
    E.5
    F.28/9

    解析:F

    注意题目要求是求期望。假设期望值为E。

    先看第一次抛硬币:

    如果抛到反面,那么还期望抛E次,因为抛到反面完全没用,总数就期望抛E+1,即: 1/4(E+1)
    如果抛到正面,那么要看下一次。 如果下一次也是正面,那抛硬币就结束了,总数是2,即: 3/4 * 3/4 * 2
    如果下一次是反面,那么相当于重头来过,总数就期望抛E+2,即: 3/4 * 1/4 * (E+2)
    那么有:E = 1/4(E+1)+ 3/4 * 3/4 * 2 + 3/4 * 1/4 * (E+2)
    得出 E = 28/9

    16.小a和小b一起玩一个游戏,两个人一起抛掷一枚硬币,正面为H,反面为T。两个人把抛到的结果写成一个序列。如果出现HHT则小a获胜,游戏结束。如果HTT出现则小b获胜。小a想问一下他获胜的概率是多少?

    A.3/4
    B.1/2
    C.2/3
    D.5/9
    E.1/3
    F.1/4.

    解析:C

    首先,这是一个无限递归的问题,需要求极限:

    1、b赢的线路更清晰一些,所以我们分析b赢的概率。
    2、在一层递归里面,b确定赢的概率是1/4,但是剩下的1/4中,b可能输,也可能赢,赢的概率也是1/4
    3、所以b=1/4+(1/4)^2+(1/4)^3+……=1/3

    相应的a赢的概率就是2/3

    18.以下哪个行为,不会明显加剧客户端运行过程中的卡顿:

    A.在主线程集中处理耗时的操作
    B.在子线程集中处理耗时的操作
    C.在其它进程集中处理耗时的操作
    D.提高后台线程的优先级
    E.降低主线程的优先级
    F.页面存在多个重叠显示的控件

    题解:C

    在其他进程里面处理耗时操作,相当于在另外的虚拟机里面执行操作,因此和当前的虚拟机也就是客户端没有明显的关系,如过不理解可以类比一下AIDL,客户端的一次请求就相当于一次RPC,请求到了服务器之后会在Binder线程池执行操作,而如果后台软件过多,只是因为CPU轮换和内存不足。题目说的是不会明显加剧卡顿,这是会造成卡顿的。

    19.以下程序的输出是:

    A.1,6
    B.2,5
    C.2,4
    D.3,5
    E.4,7
    F.1,1

    题解:D

    首先第一个f函数 是个斐波那契数列 可知 f(7)=21 f(9)=55
    下边count函数 是用来统计n的二进制表示中1个数量。count函数的原理 你可以去查MIT HAKMEM 169算法。

    21 10101 55 110111

    彼时当年少,莫负好时光。
  • 相关阅读:
    广州数控系统数据采集进行中,广数
    heidainhen 海德汉 数据采集
    新代 SYNTEC 数据采集实战
    马扎克MAZAK免授权数据采集
    西门子数控,已授权的机器,可用OPC UA的方式来采集,数据很丰富。
    打破局限,西门子数控免授权数据采集实战
    三合一 DNC系统,(fanuc 三菱 兄弟),(上传,下发,删除)NC程序.
    批量删除多个相同格式内容的Excel表格的列
    批量将多个相同Excel表格内容合并到一个Excel表格的sheet工作簿当中。
    Excel2010表格内容被加密,无法编辑内容。
  • 原文地址:https://www.cnblogs.com/l609929321/p/15123033.html
Copyright © 2011-2022 走看看