您的位置:首页 > 其它

阿里客户端在线笔试

2015-04-02 20:56 176 查看
2015.4.2

刚刚进行了阿里的在线笔试,虽然是客户端的岗位,但是前面的题好像都没有和“我以为和客户端相关”的题,各种“当时我就懵逼了”。果然是阿里。

这样子也知道了自己的差距,我觉得考PAT靠谱多了,求今年9月份能去考PAT,fighting。(只能这样安慰自己了)

选择题:

1.《国王和天使》的游戏,每个人把自己的名字写在纸条上并且丢入盒子中,等所有人完成后,每个人再从盒子里抽一张小纸条,上面的人物就是自己的国王,自己就是ta的天使。

如果抽到自己就重抽,直到抽到别人为止。然后大家为小纸条上的伙伴准备一份礼物,如果用有向图表示他们之间的关系,那么下面结论错误的是:

a 最后的结果可能存在多个联通分支

b 连通分支个数最多不超过人数的1/2

c 最后的结果可能存在多个强联通分支

d 可以使用深度优先算法求得联通数

e 可以用双向链表存储其结构

f 遍历的复杂度是O(n)

不会。

3.设x,y,t均为int型变量,则执行语句:t=3;x=y=2;t = x++||++y;后,t和y的值分别为多少。

这道题是运行出来的,答案是3,3。因为用的是java,差点忘记java里面的或是|而不是||了,还紧张了一下为毛会语法错误,好low。

分析一下思路:x++是先用再加,++y是先加再用。所以执行顺序应该是:

y=y+1;

t=x||y;

x=x+1;

所以,x=3;y=3;t=3;

4.在一个6*6的棋盘里放置四个互不攻击的车的方案数:

这道题题目都看不懂,百度了一下发现是一道经典题的样子。不过都是用c++写的,一下子无法消化,就随便选了一个。(而且很想问一句是国际象棋还是中国象棋)

查到的资料:http://www.cppblog.com/lzh/default.html?page=2 但是他是放象而非车。

5.在飞镖运动中,假设普通人投中中心的概率是10%,那么我们假设普通人投10次命中1次的概率a,投一万次命中等于一千次的概率为b,投一万次命中小于等于一千次的概率为c,

那么a,b,c的大小关系是?

好像选的是a>c>b,但是就随意算了一下,感觉不是很对。

6.数字(100!)后面有几个0?

百度发现大家都说是24。分析:很多人把数字分为十组,还要考虑特殊相乘,但其实归根结底就是5*2。因为2的个数比5多很多,所以其实考虑5的个数就可以了。(100!)中有24个质因数5,有更多的质因数2,所以24个0。

7.有50个蓝球,50个红球,给小明两个袋子,每个袋子能放任意个球(0-100),现由小明将这100个球,以一定方法放球,由一个不明真相的路人随机选取一个袋子并且摸一个球,那么为了使得路人摸出红球的概率最高,小明分配这100个球的最佳方案是?

a 一个袋子放50个红球,另一个放50个蓝球

b 一个袋子放20个红球,另一个放30个红球和50个蓝球

c 一个袋子放25个红球和25个蓝球,另一个也一样

d 一个袋子不放任何球,另一个袋子放100个球

e 一个袋子放75个球(任意颜色都可以),另一个袋子放剩下的25个

f 以上都不是最优解

百度发现大家说是e,但是对e选项有点不解,颜色任意是指75个球中,红球和蓝球的比例随意咯?

8.设一组初始记录关键字序列为(4176325)则根据这些记录关键字构造的二叉排序树的平均查找长度约为

a 1.7

b 1.8

c 1.9

d 2.0

e 2.1

f 2.2

首先是二叉排序树的概念:又称二叉搜索树,二叉查找树。如果是中序遍历,不可能降序的。如果是后序遍历,前面一定先增后降。所以是前序遍历,二叉树可以画出来。

然后是平均查找长度:

9.以下关于STL的描述中,哪个是错的?

a STL容器是线程不安全的

b 当容量不够时,vector内部内存扩展方式时翻倍

c std::string中可以存储多个‘\n’字符

d std::bitset不是一个容器

e std::stack是用deque实现的

f std::sort可能是不稳定排序

直接跳过了~

10.假如你要查找的是一个大型文件,不是查找相等的,而是找出最接近于一个给定key的1000条记录,最接近的意义是,对于某个指定的距离函数d,这1000条记录的d(ki,k)值为最小,对于这样一个顺序查找,以下数据结构最为合适的是?

a 双端队列

b 二叉堆

c 二叉查找树

d 平衡树

e B树

f 以上都不合适

也是直接跳过~

11.假设支付宝红包口令支持1到6位的数字组合,即'0','1','003',和'999999'都是合法的口令,那么总共可以有多少个合法的口令?

a 999999

b 1000000

c 1010100

d 1010101

e 1111110

f 1111111

感觉用最笨的方法算了一遍。开始还纠结了一阵0和00算不算一个,后来看到003,觉得3和003应该不是同一个,所以:

10+10^2+10^3+···+10^6=答案e

12.设定数列{an}的前n项和为sn,已知an+sn=10-7/2^n,那么通项公式是:

难得碰到看得懂的题~不过感觉算起来很花时间

13.下列的SELECT语句查询返回的结果是

SELECT pay_month,seller_id,pay_amount
FROM(select to_char(pay_date,'yyyymm')as pay_month,seller_id,
sum(pay_account)as pay_amount,
row_number() over(partition by to_char(pay_date,'yyyymm')order by sum(pay_amount) desc) as m from orders group by to_char(pay_date,'yyyymm'),seller_id)t
WHERE m<=10
ORDER BY pay_month,pay_amount DESC;


没看懂,是c++语言么,感觉学java的好吃亏。

14.在64位系统下,分别定义如下变量,char *p[10];char (*p1)[10];请问sizeof(p)和sizeof(p1)的值分别为?

a 4,40

b 80,8

c 10,10

d 8,80

e 40,4

f 4,4

直接跳过~

15.对于192.168.0.0到192.168.0.255这个网络来说,说法正确的是

a 网段内可用来作为主机IP的范围是:192.168.0.0到192.168.0.255

b Network IP是192.168.0.255

c Broadcast IP是192.168.0.0

d 网段内的主机可通过网卡对网卡传递数据

e 192.168.0.1和192.168.0.2的主机需要使用Router来传递数据包

f 是class B等级

直接跳过~(我是一直在jump么呵呵哒)

16.在网络传输时,需要将二进制数据转换为一个可打印字符,一般用到的可打印字符集合包含64个字符,因此又称为Base64表示法,现有一个char数组长度为12,要将他表示位Base64字符串,请问Base64字符串最少需要____个char,如果char数组长度为20,则需要____个char。

a 9 15

b 9 16

c 16 24

d 16 28

e 18 30

f 18 32

17.给定一个整数sum,从有N个无序元素的数组中寻找元素a,b,c,d,使得a+b+c+d=sum,那么最快平均时间复杂度是___
a O(N^2)

b O(log N)

c O(N)

d O(N^3)

e O(N^2logN)

f O(N^4)

复杂度什么的,最讨厌算了~

咿呀,怎么少了三个题。

附加题

1.由于APP启动环节的感受对用户体验影响较大,我们需要在APP优化中侧重优化启动体验,请列举一些导致APP启动慢感受的典型问题或负面模式(anti-pattern),及相应的优化策略(例如:集中的文件内容清理操作,可通过[先标记,需读取时再更新]的方式优化)

2.卡顿(特指不流畅的动画)是APP开发中最为常见的性能问题表现,请结合你熟悉的移动操作系统(android,ios或者window phone),解释下app中发生卡顿的原理,并分别针对[界面切换卡顿]和[屏幕滑动卡顿]提出典型的优化思路。

3.客户端开发不同于服务端开发的一个典型背景是,我们的程序会运行在大量不同的设备上,带给我们很多底层环境上的约束。例如android的生态中典型的碎片化问题,有的团队为此只适配主流机型,有的约束开发可用的app,有的干脆只为iso平台开发,请在平衡用户体验和研发成本之上,站在app设计和研发的角度,提出你的对策。

还是坐等大神总结过再来写吧。心已碎梦已破hiahiahia。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: