阿里巴巴2013笔试题 算法/研发岗

1.-7的二进制补码 (D)

(1)-7的原码   1000 0111

(2)符号位不变 1000 0111

(3)数值位取反 1111 1000

(4)加1        1111 1001

注意:

(1)正整数的补码与原码相同

(2)补码转化为原码  

补码的符号位为‘0’,原码就补码

补码的符号位为‘1’,原码就是补码的补码

2.四种介质,带宽最大:(C)

A 同轴电缆 B 双绞线 C 光纤 D 同步线

注:

(1)双绞线也称为双扭线,是最古老但又最常用的传输媒体。把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合起来(这样做是为了减少相邻的导线的电磁干扰)而构成双绞线.

双绞线分为1类到5类,局域网中常用的为3类,4类和5类双绞线。 3类线用于语音传输及最高传输速率为 10Mbps的数据传输;4类线用于语音传输和最高传输速率为 16Mbps的数据传输;5类线用于语音传输和最高传输速率为 100Mbps的数据传输

(2)同轴电缆由内导体铜质芯线,绝缘层,网状编制的外导体屏蔽层及保护塑料外层组成 ,内导体和外导体构成一组线对。由于外导体屏蔽层的作用,同轴电缆具有很好的抗干扰性。

同轴电缆可以将 10Mb/S的基带数字信号传送1千米到 1.2千米,因此被广泛用于局域网中

(3)光纤通信就是利用光导纤维传递光脉冲来进行通信,而光导纤维是光纤通信的媒体。光纤在任何时间都只能单向传输,因此,要实行双向通信,它必须成对出现,一个用于输入,一个用于输出,光纤两端接到光学接口上。

光纤的传输系统比同轴电缆大的多,一般小同轴电缆的最大传输带宽为 20MHz左右,中同轴电缆的最大传输带宽为 60MHz左右。单根光导纤维的数据传输速率能达几Gbps,在不使用中继器的情况下,传输距离能达几十公里。

3. 进程阻塞原因 (A)

A.时间片切换   B.等待I/O  C.进程sleep   D.等待解锁

如果没有时间片轮转,那么进程就没法切换了,一个进程将独享CPU。但是不能称时间片切换导致进程阻塞。

注:

(1)进程,概念主要有两点:

第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。

文本区域存储处理器执行的代码;

数据区域存储变量和进程执行期间使用的动态分配的内存;

堆栈区域存储着活动过程调用的指令和本地变量。

第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

(2)进程的三种基本状态

进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

就绪(Ready)状态  当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

执行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

阻塞(Blocked)状态  正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

进程三种状态间的转换

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。

(1) 就绪→执行   处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

(2) 执行→就绪   处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。

(3) 执行→阻塞   正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

(4) 阻塞→就绪   处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

关于进程的一些介绍 http://oa.gdut.edu.cn/os/multimedia/oscai/chapter2/pages/ch22.htm#页头

4.设只含根节点的二叉树高度为1,现有一颗高度为h(h>1)的二叉树上只有出度为0和出度为2的节点,那么这颗二叉树节点最少为:

A.2^h-1  B.2h-1  C.2h  D.2h+1

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

取H=1 则可以排除C和D

有个讨巧的方法:直接取h=3,画个图看下,显然是5,所以答案为B。

下面来分析下:如果每个节点出度要么为0要么为2,那么也就是要么自己为叶子,要么自己拥有左右儿子。那么什么情况下节点最少呢?直接沿着一条路下去保持出度为2,直到高度达到h,那么此时节点总数:2h-1。

5.给定下面程序,那么执行printf("%d\n",foo(20,13));结果是多少:

int foo(int x,int y)  

{  

if(x <= 0 || y <= 0)return 1;  

return 3*foo(x-6,y/2);  

}  

A.3  B.9   C.27   D.81

解:foo(20,13)->3*foo(14,6)->9*foo(8,3)->27*foo(2,1)->81foo(-4,0)=81

6.对于以下说法错误的是:

A.Dijkstra是求两点间最短路径的,复杂度:O(n^2)。

B.Floyd-Warshall是求所有点对之间最短路径的,复杂度:O(n^3)。

C.求n个数中的中位数复杂度最低为:O(n*logn)。

D.基于比较的排序算法复杂度下界为:O(n*logn)。

注:

(1)Dijkstra

http://jpkc.xaau.edu.cn/sjjg/datastru/zxxx/View/6.5.html

http://jpkc.xaau.edu.cn/sjjg/datastru/zxxx/six%20lesson/642.html

一个按路径长度递增的次序产生最短路径的算法。

该算法的基本思想是:

设置两个顶点的集合S和T=V-S,集合S中存放已找到最短路径的顶点,集合T存放当前还未找到最短路径的顶点。初始状态时,集合S中只包含源点v0,然后不断从集合T中选取到顶点v0路径长度最短的顶点u加入到集合S中,集合S每加入一个新的顶点u,都要修改顶点v0到集合T中剩余顶点的最短路径长度值,集合T中各顶点新的最短路径长度值为原来的最短路径长度值与顶点u的最短路径长度值加上u到该顶点的路径长度值中的较小值。此过程不断重复,直到集合T的顶点全部加入到S中为止。

伪代码:

1  function Dijkstra(G, w, s)

2     for each vertex v in V[G]                        // 初始化

3           d[v] := infinity

4           previous[v] := undefined

5     d[s] := 0

6     S := empty set

7     Q := set of all vertices

8     while Q is not an empty set                      // Dijstra算法主体

9           u := Extract_Min(Q)

10           S := S union {u}

11           for each edge (u,v) outgoing from u

12                  if d[v] > d[u] + w(u,v)             // 拓展边(u,v)

13                        d[v] := d[u] + w(u,v)

14                        previous[v] := u

时间: 2024-11-16 16:21:20

阿里巴巴2013笔试题 算法/研发岗的相关文章

一道阿里巴巴海量数据笔试题

问题描述 在看到的一道笔试题:搜索引擎的日志要记录所有查询串,有一千万条查询,不重复的不超过三百万.要统计最热门的10条查询串.内存<1G.字符串长0-255(1)主要解决思路(2)算法及其复杂度分析 解决方案 解决方案二:我能想到的就是哈希+堆排序了

哪位有阿里巴巴的笔试题啊?

问题描述 如题 解决方案 解决方案二:网上应该比较多吧解决方案三:没有,不好意思解决方案四:想都不敢想

经典算法(9) 从归并排序到数列的逆序数对(微软笔试题)

首先来看看原题 微软2010年笔试题 在一个排列中,如果一对数的前后位置与大小顺序相反 ,即前面的数大于后面的数,那么它们就称为一个逆序数对.一个排列中逆序的总数就称为这个排列的逆序 数.如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数为4,现在给定 一数组,要求统计出该数组的逆序数对个数. 计算数列的逆序数对个数最简单的方便就最从前向后依 次统计每个数字与它后面的数字是否能组成逆序数对.代码如下: #include <stdio.h> int ma

阿里巴巴一道智力题笔试题

问题描述 阿里巴巴一道智力题笔试题 有三张牌A,B,C,其中一张是King.如果你押中了King,那么就获胜,否则就输.现在你选择了押其中的一张牌1,电脑帮你排除了另外两张牌中的一张2,那么你是否重新选择押3,从而更容易获胜? http://www.manong1024.com/q/403 解决方案 google 三扇门问题真怀疑这是不是阿里的题,感觉很低级很low,像庙会灯谜上的题. 解决方案二: 假设挑选A其为king的概率p=1/3剩下的BC中为king的概率p=2/3.假设主持人又给你排

java算法题,公司的笔试题

问题描述 java算法题,公司的笔试题 suppose you have N cakes, N is an interger>0 // at each time, you can either eat 1 cake, or 2 cakes or 3 cakes // PROBLEM: How many ways can you eat all N cakes // for example, N = 4, (1,2,1) and (1,1,2) are considered to be diffe

排序 list-360 笔试题 下列哪个算法是对一个list排序的最快方法()

问题描述 360 笔试题 下列哪个算法是对一个list排序的最快方法() 下列哪个算法是对一个list排序的最快方法() 快速排序 冒泡排序 二分插入排序 线性排序 解决方案 我认为,是冒泡 .... 解决方案二: 二分插入排序法. 楼主可以去看Collections.sort(list);的排序算法,就是用的二分插入排序. 解决方案三: 二分. 不过 这也要看情况的, 数据大小的不同 是不一样的,若list里边只有一个数据呢?两个呢?. 解决方案四: 同时你也可以去看看 STL 里边的 lis

初始化顺序-今年阿里巴巴的一道笔试题

问题描述 今年阿里巴巴的一道笔试题 public class Test1 { public static int k = 0; public static Test1 t1 = new Test1("t1"); public static Test1 t2 = new Test1("t2"); public static int i = print("i"); public static int n = 99; public int j = pr

算法-京东在线笔试题,关于排列组合的问题

问题描述 京东在线笔试题,关于排列组合的问题 考虑数字序列{1,3,4,2,6,7,5,5,8,10,9,10,7,17},任取其中几个数字相加,使得到的和为29, 则不同的组合有几种?(第2,第3,第7,第14个数的组合与第2,第3,第13,第14个数的 组合看起来是一样的,都是3,4,5,17,那么这里只视为一种) 解决方案 修正下,96种http://ideone.com/kNl4Mw using System; using System.Linq; using System.Collec

C++笔试题汇总(45题)

本文转自:<程序员必看c++笔试题汇总>,经过整理正文如下: 本文通过对程序员笔试过程的总结,对程序员c++笔试题进行了汇总.希望能与大家共同分享.下面是一些常见题型: 1.求下面函数的返回值(微软) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999. 答案:8 思路:将x转化为2进制,看含有的1的个数. 2. 什么是"引用"?申明和使用"引