整理了几道阿里巴巴真题,来试试自己水平有多厉害吧,每题还有答案和详细解答哦。
01
有个特殊的餐厅,对客人的要求是如果要离开餐厅一定要看下餐厅内有没有比你迟进来的人,一定要所有比你迟进来的人离开后你才能离开,有一天甲,乙,丙,丁四个客人先后进入了这家餐厅,那么他们离开的顺序不可能是:
A:丙,乙,甲,丁
B:甲,乙,丙,丁
C:乙,甲,丙,丁
D:乙,丙,甲,丁
E:丁,丙,甲,乙
F:丁,丙,乙,甲
本题考查的是元素入栈出栈的顺序问题。但要小心一个思维误区:并不是要等到甲、乙、丙、丁全部按序进入餐厅后才开始有人离开。答案:E。
02
在关系型数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:
A:其中一个DELETE操作,一个是SELECT操作
B:其中两个都是UPDATE
C:其中一个是SELECT,一个是UPDATE
D:其中一个是DELETE,另一个是UPDATE
E:两个都是DELETE
当要删除的记录在数据库中不存在的时候,是不会报错的。答案:E。
03
设一组初始关键字为( 12,15,1,18,2,35,30,11 ),则以 12 为基准记录的一趟快速排序结束后的结果为:
A:11,1,2,12,35,18,30,15
B:11,2,1,12,15,18,35,30
C:1,2,11,12,15,18,35,30
D:11,2,1,12,18,35,30,15
E:1,2,11,12,15,18,30,35
快速排序里的挖坑填补法:以12为标准值,从右开始找比12小的值,首先是11,把11放在12的位置,把12放在11的位置,再从左找比12大的值15,把15放在12的新位置(原11的位置)之后变成 11,12,1,18,2,35,30,15。 在新的一轮开始,从右开始找比12小的数是2,把2放在12的位置,12放在2的位置,在从左找比12大的数18,把18放在12的新位置上(原2的位置)变成11,2,1,12,18,35,30,15。答案:D。
04
以下程序的运行结果是?
public class TestThread{
public static void main(String args[]){
Runnable runner = new Runnable(){
@Override
public void run(){
System.out.print('foo');
}
};
Thread t = new Thread(runner);
t.run();
System.out.print("bar");
}
A:foobar
B:barfoo
C:foobar或者barfoo都有可能
D:Bar
E:Foo
F:程序无法正常运行
这道题是考线程的调用情况,线程的启动方式只能通过start这种方式启动才能真正的实现多线程的效果,如果是手动调用run方法和普通方法调用没有区别,所以这个还是按照顺序执行首先执行run方法之后,执行输出语句所以最终得到结果foobar。答案:A。
05
一个二叉树有100个子节点数为2的节点,100个子节点数为1的节点,那么子节点数为0的节点(叶节点)的个数为:
A:101
B:100
C:200
D:300
E:99
F:1
度数(边数) =
所有节点数-1,这里度数=2*100+100=300,节点数=100+100+叶子节点数。所以叶子节点数=度数+1-非叶子节点数=101。答案:A。
06
现有1G数据需要排序,计算资源只有1G内存可用,下列排序方法中最可能出现性能问题的是____。
A:堆排序
B:插入排序
C:归并排序
D:快速排序
E:选择排序
F:冒泡排序
答案:C
07
某开发团队有6位开发同学,需参加5个项目, 每个项目都有人做 ,每位同学需要恰好参加1个项目,那么