阿里2015实习生-客户端笔试题目解析
1.在网络传输数据时,经常需要将二进制数据转换为一个可打印字符串,一般用到的可打印字符集合包含64个字符,因此又称为Base64表示法,现有一个char数组长度为12,要将它表示为Base64字符串,请问Base64字符串至少需要几个char;如果char的长度为20,则需要几个char。
解答:
char是一个基本数据类型。它可以表示一个byte大小的数字,即8位,而Base64使用基于6位的编码。所以就是12x 8/6 = 16;而20 x 8/6 = 20 x 4/3 = 24 + 2.666 ,多余的需要用 ====补齐到4位,所以是28。
答案:16,28
应用实例:
1.在HTTP GET/POST中一般都需要对参数进行base64编码
2.支付宝红包口令分享在OSX中的.plist文件中的<data>数据也是Base64编码的
2.某部门年会的时候,有个环节叫做《国王和天使》,每个人将自己的名字写在纸条上并丢入盒子中,等所有人都完成该动作后,每个人再从盒子里拿出一张小纸条,上面的人物就是自己的国王,自己就是ta的天使,如果抽到自己,就再抽一遍,直到抽到别人为止,如果用有向图来表示他们之间的关系,那么以下结论错误的是_?
1. 最后的结果可能是存在多个联通分支
2. 联通分支个数最多不超过人数的二分之一
3. 最后的结果可能是存在多个强联通分支
4. 可以用深度优先算法求得联通数
5. 可以用双向链表存储其结构
6. 遍历的复杂度是O(N)
解答:
这个题目有三个BUG,当是人数三个人(或者奇数)时,其中两个人互相抽取的话,总有一
个人抽不到,这个人就活该单身吗?还有个问题就是,在数学中一般翻译为“连通”而不是“联通"; 最后一个问题就是,连通数这个概念我没有在离散的书上到,谷歌上也很少搜到。所以我认为这是一个不严谨不负责任的题目。
接下来是我的分析,我们先假设,当出现四个人的时候(偶数特例),两两成环的话,答案123都是对的。
接着答案五也是对的,这个结构明显就是链表。
第六的复杂度等于 O(线 + 边),肯定在2N左右,所以也是对的。
最后我们排除出来的是4。对于4的理解,我认为它只能求出连通通路的个数,而不是连通数。
所以,答案是4。
是不是看晕了?看来需要自学一遍离散了 ---> 点我
3.假设支付宝红包口令支持1到6位的数字组合,即'0','1','003'和‘999999’都是合法的红包口令,
那么总共可以有多少个合法的红包口令?
解答:高中概率题,注意'1','000001'与'001'是不一样的就可以理解了。10 + 100 + 1000 + 10000 + 100000 + 1000000 = 1111110
4.假设某棵二叉查树的所有键均为1到10的整数,现在我们要查下面_是不可能是键的检查序列。
1. 10,9,8,7,6,5
2. 2,8,6,3,7,4,5
3. 1,2,9,3,8,7,4,6,5
4. 2,3,10,4,8,5
5. 4,9,8,7,5
6. 以上均正确
解答:
一个个按照BST画呗,然后出有分叉的,第二个是错的。
5.能整除1400的数目是__?
解答:
笔试的时候我直接跳了,毕竟2分钟算这个划不来。
后来问了学长,有了一个新的方法。
首先 1400 = (2x2x2) x (5x5x7)
然后我们计算 2x2x2 ,有 2 4 8 三个
计算 5x5x7 , 有 5 7 25 35 175 共5个
这两个相乘,有 15 个
最后就是 15 + 3 + 5 = 23 个。
(我看到百度知道上有人在考试时间去问题目,非常鄙视这种行为)
6.设二叉树节点的线序遍历,中序遍历与后序遍历,所有叶子节点的先后顺序__
解答:
三者是相同的,遍历顺序不影响叶子节点
PreOrder Travesal
7.一个具有513个节点的二叉树,有_种可能的层高。
解答:
513 = 511 + 2
如果是完全树的话,就是
2^count - 1= 511 => count = 9 ,完全树是9层,然后加上一个小尾巴,就是10层。
接着,我们考虑最差的情况,就是树退化为链表,这时 count = 513;
所以[10,513],就是513-10 + 1 = 504;
8.给定一个整数sum,从有N个无序元素的数组中寻元素a,b,c,d,使得a + b + c + d = sum,最快的平均时间复杂度是_?
1. O(N^2)
2. O(log N)
3. O(N)
4. O(N^3)
5. O(N^2logN)
6. O(N^4)
解答:这个问了学长。
寻一个元素至少需要N个时间;
寻两个元素的话,俩俩相加,消耗N-1时间,然后去遍历。总时间约为2N
寻三个元素的话......总时间为3N
反正最后就是4N,也就是O(N)
9.如下SQL数据中,_可能返回null值。
1. select count(*) from t1;//返回行的个数
2. select max(col1) from t1;//返回列中的某个最大值
3. select concat('max=' ,maxof(col1)) from t1;//连接字符
解答:
如果concat连接的字符中参数为空的话,则返回为空。
zhidao.baidu/question/166********31857827
10.函数lg(ax^2 - 8x + a - 6)的值域为R,那么实数a的取值范围是_
解答:
ax^2 - 8x + a - 6 > 0