又一份阿里笔试题

接踵而至的笔试啊。。。各种忙碌啊。。。

1,  假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

A.h(k)= K/N  B.h(k)=1  C.h(k) = k mod N

D.h(k) = (K + random(N) ) mod N   ,random(N)返回一个0到N的整数

2,下面的排序算法中,初始化数据集的排练顺序对算法的性能无影响的是()

A,堆排序  B,插入排序  C,冒泡排序  D,快速排序

3,下面说法错误的是()

A,CISC计算机比RISC计算机指令多

B,在指令格式中,采用扩展操作码设计方案的目的是为了保持指令字节长度而增加寻址空间

C,增加流水线段数据理论行可以提高CPU频率

D,冯诺依曼机体系结构的主要特征是存储程序的工作方式。

4,不属于冯诺依曼机提议结构必要组成部分的是()

A,CPU  B,Cache  C,RAM  D,ROM

5,一个栈的入栈序列为 A B C D E 则不可能的输出是()

A,DECBA  B,DCEBA  C,ECDBA   D,ABCDE

6,你认为可以完成编写一个C语言编译器的程序设计语言是()

A,汇编语言  B,C语言  C,VB语言  D,以上皆可

7,关于C++/JAVA类中的static成员和对象成员的说法正确的是()

A, static成员变量在对象构造时生成

B, static成员函数在对象成员韩式中无法调用

C, 虚成员函数不能是static成员函数

D, Static成员函数不能访问static成员变量

9,某进程在运行过程中需要等待从磁盘读入数据,此时该进程的状态将()

A,从运行变为阻塞  B,从运行变为就绪  C,从就绪变为运行  D,从阻塞变为就绪

10,下面算法的时间复杂度是()

Int f (unsigned int n){

If( n == 0 || n == 1){

Return 1;

}else return n*f(n-1);

}

A,O(1)  B,O(n)  C,O(n^2)  D,O(n!)

11,n从1开始,每个操作可以选择对n加1,或者对n加倍,如果想获得整数2013,只需要()个操作

A,18  B,24  C,21  D不可能

12,对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组的大小为()  A,n  B,n+1  C,n-1  D,n+边数

13,考虑一个特殊的hash函数h,能将任一字符串hash成一个整数k,其概率P(k) = 2 ^(-k),k=1,2,3….对一个未知大小的字符串集合S中的每一个元素取hash值所组成的集合为h(S)。若h(S)中最大的元素maxh(S) = 10,那么S的大小的期望是()

A,5  B,10  C,512  D,1024

14,如下函数,在32bit 系统foo(2^31-3) 的值是()

Int foo(int x){

Return x&-x;

}

A,0  B,1  C,3  D,4

15,对于顺序存储的线性数组,访问结点和增加,删除结点的时间复杂度()

A,O(n),O(n)  B,O(n),O(1)  C,O(1),O(n)   D,O(1),O(1)

16,在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是()

Struct A{

Int a;

Short b;

Int c;

Char d;

};

Struct B{

Int a;

Short b;

Char d;

Int c;

};

A,16,16  B13,12  C,16,12  D,11,16

17,袋中有红球,黄球,白球个1个,每次任取一个又放回,如此连续抽取3次,则下列时间中概率是8/9的是()

A, 颜色全相同  B,颜色不全相同  C,颜色全不同  D,颜色无红色

18,一个洗牌程序的功能是将n张牌的顺序打乱。一下关于洗牌程序的功能定义说法最恰当的是()

A, 每张牌出现在n个位置上的概率相等

B, 每张牌出现在n个位置上的概率独立

C, 任何连续位置上的两张牌的内容独立

D, N张牌的任何两个不同的排列出现的概率相等

19,用两种颜色去染排成一个圈的6个旗子,如果通过旋转得到则只算一种,问一共有多少种染色模式。 A,10  B,14  C,15  D,16

20,递归式的先序遍历一个n节点,深度为d的二叉树,需要找空间的大小为()

A,O(n)  B,O(d)  C,O(logn)  D,O(nlogn)

二,不定项选择

21,两个线程运行在双核机器上,每个线程主程序如下,线程1,x=1;r1=y;线程2:y=1;r2=x。x和y是两个全局变量,初始化为0,一下哪一个是r1和r2的可能值()

A,r1=1,r2=1  B,r1=1,r2=0  C,r1=0,r2=0  D,r1=0,r2=1

22,关于linux系统的负载(LOAD),以下表述正确的是()

A, 通过就绪和运行的进程数来反映

B, 可以通过TOP命令查看

C, 可以通过uptime查看

D, Load:2.5 1.3 1.1 表示系统的负载压力在逐渐减小

23,关于排序算法的一下说法,错误的是()

A, 快速排序的平均时间复杂度为O(nlogn),最快时间复杂度为O(n^2)

B, 堆排序的平均时间复杂度为O(nlogn),最快时间复杂度为O(nlogn)

C, 冒泡排序的平均时间复杂度为O(n^2),最快时间复杂度为O(n^2)

D, 归并排序的平均时间复杂度为O(nlogn),最快时间复杂度为O(n^2)

24,假定函数rand_k 会随机返回一个[1,k]之间的整数(K >= 2),并且每个整数值出现的几率相等。已知目前有rand_7的实现,请问通过调用rand_7和四则运算函数,并适当增加逻辑判断和循环等控制逻辑,下来函数可以实现的有()

A,rand_3  B,rand_21  C,rand_23  D,rand_47

三,填空与问答

26、某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候,1、5、1、3、5、2、4、1、2,出现缓存直接命中的次数是(),最后缓存中即将准备淘汰的数据项是()

答:直接命中的次数是3次,分别是访问1,5,1,3,5,2,4,1,2时。最后缓存中即将准备淘汰的数据项是5

27、有两个较长的单向链表a和b,为了找出节点node满足node in a 并且node in b,请设计空间使用尽量小的算法。(用C/C++/JAVA或伪码表示都可以)

答:node in a 并且node in b,就是求两个链表的公共节点吧

就是先分别遍历一遍链表A和链表B,在遍历时分别记下链表AB的长度,并且在最后看看链表A和链表B的最后一个节点是不是相同,如果相同则有公共节点,如果不同就没有公共节点。

找公共节点就是再利用两个指针,根据遍历时记录的长度,找到第一个公共节点,这个节点后面的就都是公共节点了。

28、当存储数据量超出单节点数据管理能力的时候,可以采取的办法有数据库sharding的解决方案,也就是按照一定的规律把数据分散存储在多个数据管理节点N中(节点编号0.1.2...N-1)。假设存储的数据是a,请完成为数据a计算存储节点的程序。(没学过C语言的同学也可以用伪码完成)

#define N 5

int hash(int element)

{

return element*2654435761;

}

int shardingIndex(int a)

{

int p = hash(a);

//1

return p;

}

空格1处: p %= N;

29、宿舍内5个同学一起玩对战游戏,每场比赛有一些人作为红方,另一些人作为蓝方,请问至少需要多少场比赛,才能使任意两个人之间有一场红方对蓝方和一场蓝方对红方的比赛?

答案为4场。

第四部分 JAVA选做题

1、以下每个线程输出的结果是什么?(不用关注输出的顺序,只需写出输出的结果集即可)

2、一个有10亿条记录的文本文件,已按照关键字排好序存储,请设计算法,可以快速的从文件中查找关键字的记录。

时间: 2024-10-01 03:37:59

又一份阿里笔试题的相关文章

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

阿里笔试题记录(Android客户端部分)

阿里笔试题记录(Android客户端部分) 选择题 结果应该是选择 80,8 思路: - 指针的值都是一个个地址,而地址是用无符号整型值来表示的,也就是unsigned int.因此一个指针类型变量的大小就是unsigned int类型的大小. - 64位系统,一个地址占用的二进制位数为64(8字节),32位系统,地址的二进制位数32(4字节).参考64位操作系统的指针不都是64位吗 32位cpu和64位cpu,这个位数指的是数据字长,而不是地址字长.两者没有必然的数值上的联系.处理器字长是指处

阿里笔试题-派生类构造函数 创建顺序

派生类 与基类的关系: (1)创建构造函数的顺序 :基类构造函数(注意此处基类的成员不能初始化) ==>派生类成员初始化 ==>派生类构造函数 (2)派生类的构造函数 中 基类的构造函数默认在第一条,如果不写super(),则默认在第一条,注意位置不能颠倒 (3)派生类可以继承全部的基类的构造函数 阿里笔试题 举个栗子: 1 package com.test; 2 3 public class DispatchTest { 4 5 public static void main(String[

阿里笔试题之Android网络优化

记得这是阿里校招笔试的一道问答题 答案是小伙伴们之后一起拼出来的,不乏有些飘忽的东西,需要的朋友可以做个参考(具体细节可以自行百度),欢迎提出更好的建议! 在客户端方面: 1.减少网络请求的数量,能够合并的网络请求尽量合并,尽量在一次查询中完成多个零散数据的查询 2.为网络数据做本地缓存处理 3.设置超时时间,数据压缩传送,比如从服务器端获取列表数据,如果可以最好是能将服务器端的流压缩一下,接收压缩流,这样速度会快点,而且省流量. 3.多线程处理,不要死等网络操作的结果,把耗时工作及计算放在子线

一天积累一点儿之阿里笔试题

励志把阿里的题库弄出来!当然,主要目的还是想知道自己还有哪些知识点的欠缺和不足 1. (1)这个element的onclick事件,this当然指的是这个element了 (2)window (3)window  这两种方式都没有把element传给doSomething,所以this默认指向window 2. 1 Array.prototype.sorting = function(fn){ 2 var t; 3 if(!fn){ 4 fn = function(a,b){ 5 return

惨挂阿里笔试题

昨天阿里笔试,惨挂到一算法题,现分享此题,集网友智慧,看如何解答此题. 请大神们不吝赐教哦! 版权声明:本文为博主原创文章,未经博主允许不得转载.

阿里笔试题——算阶乘的末尾有几个零

用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. 答案选14 #include<iostream> using namespace std; #define LINT int LINT count_number(LINT n) { LINT a=n; LINT re=0; while(1) { if(a==0) break; LINT b=a; a--; while((b!=0)&&(b%3==0)) { re++; b=b

阿里笔试题:求两个子序列的最大连续子序列

原题例如以下: 给定一个query和一个text,均由小写字母组成.要求在text中找出以相同的顺序连续出如今query中的最长连续字母序列的长度.比如.query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出如今query中的字母序列,因此.返回结果应该为其长度3.请注意程序效率. 解题方法一: 和字符串匹配一样(http://blog.csdn.net/sinat_24520925/articl

接下班概率问题——阿里笔试题

牛客某程序猿小杨每天接老婆下班回家.小杨在6点准时下班从公司开车出发,由于路上可能存在的堵车情况,小杨到老婆公司门口的时间点均匀的分布在6点20到6点30之间.老婆根据小杨的下班时间做了估计,到公司门口的时间点均匀的分布在6点25到6点30之间,如果小杨比老婆晚到公司门口将会挨骂,那么小杨被骂的概率是____. 1/4 1/3 1/2 2/3 3/4 以上都不对 这个题目是概率分布问题,解决方法有两种. 解法1: 可以进行分析,比如小杨在6点20到6点25之间到的概率为0.5,那么老婆这个时候肯