这一次阿里的笔试统一采取在线的形式,前面是20道选择题,后面是3道大题,选择题是采取随机的方式,大题研发,测试都是各自固定的
1.选择题部分
树
考的很少,一道中序,前序已知,求对应的后续
题目1:已知一棵二叉树的前序遍历结果是ACDEFHGB,中序遍历结果DECAHFBG,求对应的后序遍历结果(B)
A.HGFEDCBA B.EDCHBGFA C.BGFHEDCA D.EDCBGHFA E.BEGHDFCA F.BGHFEDCA
本题属于基本的二叉树的题目,很简单,送分题
链表
考了好几道题,所以链表复习的时候要着重掌握
题目1:在一个双向链表中,指针p所指向的结点(非尾节点)之后插入指针s指向的结点,其修改指针的操作是(D)
A. p->next=s; s-prev=p; p->next->prev=s; s->next=p->next;
B. p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;
C. p->next->prev=s; s->prev=p; p->next=s; s->next=p->next;
D. s->prev=p; s->next=p->next; p->next->prev=s; p->next=s;
E. s->next=p->next; s->prev=p; p->next=s; p->next->prev=s;
正常的画图来解决,不需要解决尾节点的特殊情况,操作顺序不唯一,有个基本策略
题目2:带头节点的单链表head为空的判断条件是(B)
A. head==null B. head->next==null; C. head->next==head; D. head!=null; E.*head==null; F. *(head->next)==null;
基本题,不多讲
题目3:下列操作,数组比线性表速度更快的是(E)
A. 原地逆序 B.头部插入 C.返回中间节点 D.返回头部节点 E.选择随机结点
个人不清楚C的正确与否
排序查找
题目1:个数为50k的数列,需进行从小到大排序,数列特征基本逆序(多数数字从大到小,个别数字乱序),以下哪种排序算法在事先 不了解数列特征的情况下能大概率最优(不考虑空间限制)(E)
A. 冒泡排序 B. 改进冒泡排序 C. 选择排序 D. 快速排序 E.堆排序 F.插入排序
个数比较多,不考虑常规的排序,快排是均匀分布的比较快,所以选择E
计算机网络
题目1:下列选项中,(A)是一个典型的TCP客户端(主动建立连接,主动关闭连接)
A. SYNC_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT
B. SYNC_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->CLOSE_WAIT
C. SYNC_SENT->SYNC_RCVD->ESTABLISHED->FIN_WAIT1->FIN_WAIT2
D. SYNC_RCVD->ESTABLISHED->CLOSE_WAIT->TIME_WAIT->LAST->ACK
E. SYNC_RCVD->ESTABLISHED->CLOSE_WAIT->TIME_WAIT->FIN_WAIT1
F. SYNC_SEND->ESTABLISHED->FIN_WAIT1->TIME_WAIT->CLOSE_WAIT
参考链接:http://blog.csdn.net/tall913/article/details/7952531
操作系统,系统结果
题目1:若干个等待访问磁盘者依次要访问的磁道为19,43,40,4,79,11,76 当前磁头位于40号柱面,若用最短寻道时间优先调度算法,则访问序列为(B)
A. 19 , 43 , 30 , 4 , 79 , 11 , 76
B. 40 , 43 , 19 , 11 , 4 , 76 , 79
C. 40 , 43 , 76 , 79 , 19 , 11 , 4
D. 40 , 43 , 76 , 79 , 4 , 11 , 19
E. 40 , 43 , 76 , 79 , 11 , 4 , 19
F. 40 , 19 , 11 , 4 , 79 , 76 , 43
基本知识考察,不再赘述
题目2:下列方法中,(D)不可以用来程序调优 ?
A. 改善数据访问方式以提升缓存命中率
B. 使用多线程的方式提高I/O密集型操作的效率
C. 利用数据库连接池替代直接的数据库访问
D. 使用迭代替代递归
E. 合并多个远程调用批量发送
F. 共享冗余数据提高访问效率
采用排除法,其他选项都可以明显提升效率
题目3:有4个进程A、B、C、D,设它们依次进入就绪队列,因相差实际很短可视为同时到达。4个进程按轮转法分别运行11,7,2和4个时间单位,设时间片为1。四个进程的平均周转时间为(B)
A. 15.25 B. 16.25 C. 16.75
D. 17.25 E. 17.75 F. 18.25
进程轮转法的考察,如果是时间最短,或者先来先服务的的计算法又不一样了
题目4:Linux系统某个可执行文件属于root并且有setid, 当一个普通用户mike运行这个程序时,产生的进程的有效用户和实际用户分别是(A)
A. root mike B. root root C. mike root D. mike mike E. deamon mike F. mike deamon
不了解,据说鸟哥私房菜里面有讲
了解常用的默认用户,linux用户的概念
题目5:每台物理计算机可以虚拟出20台虚拟机,假定一台虚拟机发生故障当且仅当它所宿主的物理机发生故障。通过5台物理机虚拟出的100台虚拟机,那么关于这100台虚拟机的故障的说法正确的是(C)
A. 单台虚拟机的故障率高于单台物理机的故障率
B. 这100台虚拟机发生故障是彼此独立的
C. 这100台虚拟机单位时间内出现故障的个数高于100台物理机单位时间内出现故障的个数
D. 无法判断这100台虚拟机和100台物理机哪个更可靠
E. 如果随机选出5台虚拟机组成集群,那么这个集群的可靠性和5台物理机的可靠性相同
F. 可能有一段时间只有1台虚拟机发生故障
本题选择C主要是因为题干的假定,这样就保证了物理机当掉,20台虚拟机当掉
程序问题
题目1:一个函数定义的返回值是float,它不能在return语句中返回的值的类型是(F)?
A. char B. int C. float D.long E. double F.以上皆可以
没有注意这个问题
题目2:int main() {
fork() || fork();
}
共创建几个进程(C)?
A. 1B. 2 C. 3 D. 4E. 5
解析暂时不清楚,我再查查
题目3:程序出错在什么阶段(F)?
int main ( void )
{
http : //www.taobao.com
cout << "welcome to taobao" << endl ;
}
A 预处理阶段出错 B.编译阶段出错
C.汇编阶段出错 D.链接阶段出错
E.运行阶段出错 F.程序运行正常
编程运行正常,费解
题目4:有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值( )?
A. C=(int32)(A+B),D=(int32)(A-B)
B. C=(int32)(A+B),D=(int32)((A-B)>>1)
C. C=(int32)(A+B),D=B
D. C=(int32)(A+B),D=(int32)(A+2*B)
E. C=(int32)(A*B),D=(int32)(A/B)
这道题不懂,搜索一下
题目5:在动态内存分配(C语言的malloc,C++的new),得到的存储区在内存中的(B)
A. 静态区 B.堆(heap) C. 栈(stack) D. 堆栈 E. 内核内存 F. 不确定
堆和栈的区别,基本常识
智力题(概率题,逻辑推理)
这次考试智力题的数目非常多
题目1:一个博物馆以每分钟20人的速度进入,平均每人待20分钟,问博物馆至少需要容纳(D)人
A. 100 B. 200 C. 300 D. 400 E. 500