![fe701fd85637dcd3528b0b1027fedba9.gif](https://i-blog.csdnimg.cn/blog_migrate/be04d603c3c68fc8eaefcc6d49ee6df3.gif)
文末领取【阿里巴巴面试题】
答案部分自己解答,部分来自其他论坛大神作答。
1. 已知存在以下表:
S 表保存着学生关系,有两列,其中SNO 为学号,SNAME 为姓名
C 表保存着课程关系,有三列,其中CNO 为课程号,CNAME 为课程名,CTEACHER 为老师
SC表保存着选课关系,有三列,其中SNO为学号,CNO为课程号,SCORE 为成绩
找出没有选“小易”老师课程的所有学生姓名
列出有三门(包括三门)以上课程分数>90的学生姓名及其平均成绩
解答:
select snamefrom swhere sno not in (select snofrom scwhere cno in (select cnofrom cwhere cteacher = "小易"));select sname, avg(score)from swhere sno in (select sno, avg(score)from scwhere score > 90group by snohaving count(*)>=3);
2. 有2堆宝石,A和B一起玩游戏,假设俩人足够聪明,规则是每个人只能从一堆选走1个或2个或3个宝石,最后全部取玩的人获胜,假设2堆宝石的数目为12和13,请问A怎么可以必胜?
让A先取
让B先取
没有策略能够让A必胜
说法都不正确
解答:让A先取。A先拿,拿走13个里的一个,然后接下来,B拿多少,A就拿另一堆的多少。
3. 从数字集合{1,2,3,4,… ,20}中选出4个数字的子集,如果不允许两个相连的数字出现在同一集合中,那么能够形成多少个这种子集?
2380
816
330
1220
解答:2380。插空法,把4个数插到16个数形成的17个空格中。共个。
4. 将4个不一样的球随机放入5个杯子中,则杯子中球的最大个数为3的概率是?
9/16
16/125
16/25
9/25
解答:16/125。由于球各不相同,因此总共可能出现的情况有个,而杯子中球的最大个数为3的情况有个。
5. 下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能。
void perm(int list[], int k, int m){if ( ){copy(list,list+m,ostream_iterator<int>(cout," "));cout<<endl;return;}for (int i=k; i<=m; i++){swap(&list[k],&list[i]);( );swap(&list[k],&list[i]);}}k!=m 和 perm(list,k+1,m)k==m 和 perm(list,k+1,m)k!=m 和 perm(list,k,m)k==m 和 perm(list,k,m)
解答:k==m 和 perm(list,k+1,m)。不知道这是什么语言,暂且搁置。
6. 若有33个长度不等的初始归并段,做7路平衡归并排序,为组织最佳归并树,应增加长度为0的初始归并段的个数是________。
0
2
4
6
解答:4。
k-(m-1)mod(k-1)-1,其中m=3,k=7,。
7. 将一个整数序列整理为升序,两趟处理后序列变为10,12,21,9,7,3,4,25,则采用的排序算法可能是________。
插入排序
选择排序
快速排序
堆排序
解答:插入排序。
插入排序:第n趟前n+1个有序。步骤是将一组无序的数字排列成一排,左端第一个数字为已经完成排序的数字,其他数字为未排序的数字。然后从左到右依次将未排序的数字插入到已排序的数字中。
选择排序:第n趟前n个位置正确。步骤是第一趟处理从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个第二小的元素作为有序序列中的第2个元素并将它定位在第二号存储位置,依此类推。
快速排序:第n趟有n个元素位置正确。步骤是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
堆排序:第n趟前或后n个位置正确。步骤是构造初始堆,从最后一个非叶子结点开始,从左至右,从下至上进行调整。
8. 在数理统计中, 一般通过增加抽样次数取平均来使得预估误差减小, 在机器学习中也有类似的模型处理, 如随机森林, 通过引入随机样本并且增加决策树的数据,对于随机森林主要降低预估的哪个方面值?
预估偏差
预估方差
噪音
全部
解答:预估方差。
增加数据是降低由数据的不稳定性所带来的方差,增加模型复杂度是降低偏差,而噪音是无法避免的。
9. 以下不属于非监督学习的为:
关联规则
Kmeans
Word2vec
Knn
解答:KNN。
关联规则就是支持度和信任度分别满足用户给定阈值的规则。
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。
word2vec也叫word embeddings,中文名“词向量”,作用就是将自然语言中的字词转为计算机可以理解的稠密向量(Dense Vector)。
KNN算法又称k近邻分类(k-nearest neighbor classification)算法。它是根据不同特征值之间的距离来进行分类的一种简单的机器学习方法,它是一种简单但是懒惰的算法。他的训练数据都是有标签的数据,即训练的数据都有自己的类别。
10. 将当前命令sh test.sh任务在后台执行,下列最优雅的的做法是:
sh test.sh &
nohup sh test.sh
nohup sh test.sh &
nohup sh test.sh &&
解答:nohup sh test.sh & nohup (no hang up)命令:
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
例子:nohup sh example.sh &
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。
11. 截取logfile文件中含有suc的行,并且只输出最后一列,下列操作正确的是:
grep -o 'suc' logfile | awk '{print $0}'
grep 'suc' logfile | awk '{print $0}'
grep 'suc' logfile | awk '{print $NF}'
grep -o 'suc' logfile | awk '{print $NF}'
解答:grep 'suc' logfile | awk '{print $NF}'
-o 只输出文件中匹配到的部分。
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。
awk处理过程: 依次对每一行进行处理,然后输出。
print 是awk打印指定内容的主要命令,$NF表示最后一个域。
12. 哪个不是DDL(数据库定义语言)语句?
ALTER
CREATE
RENAME
GRANT
解答:GRANT。
13. 对于SQL语句select * from t where a=100 and b=200,哪个索引可以使用到?
索引idx_b(b)
索引idx_b_a(b,a)
索引idx_a_b(a,b)
都可以
解答:都可以。
14. 若要在员工信息表EMP中增加一列WANGYI_NO(网易id),可用( )。
ADD TABLE EMP(WANGYI_NO CHAR(10))
ADD TABLE EMP ALTER(WANGYI_NO CHAR(10))
ALTER TABLE EMP ADD(WANGYI_NO CHAR(10))
ALTER TABLE EMP (ADD WANGYI_NO CHAR(10))
解答:ALTER TABLE EMP ADD(WANGYI_NO CHAR(10))
15. 在机器学习任务中经常假设矩阵为n×n的对称矩阵A, 则以下说法正确的是
对称矩阵为满秩矩阵
对称矩阵的列向量之间正交
对应于A的不同特征值的特征向量之间正交
对应于A的相同特征值得特征向量之间正交
解答:对应于A的不同特征值的特征向量之间正交。
对称矩阵不一定满秩;不同特征值之间的特征向量一定正交;而同一特征值的特征向量需要借助公式得正交向量
16. 以下关于python数据结构说法正确的是
python中list可以动态的更新, 但是不容许嵌套
python中tuple可以动态更新, 但是不容许嵌套
python中dict保存键值对, 并且键值对是有序的
python中list的元素可以是tuple
解答:python中list的元素可以是tuple。
list可以动态更新,也可以进行嵌套;tuple是不能够进行更新的;python3.6后的版本,dict中的键值对是有序的,之前版本无序。
17. 一个快递公司对同一年龄段的员工,进行汽车,三轮车,二轮车平均送件量的比较,结果给出sig.=0.034,说明
三类交通工具送件量有差别的可能性是0.034
三类交通工具送件量没有差别的可能性是0.034
交通工具对送件量没影响。
按照0.05显著性水平,拒绝H0,说明三类交通工具送件量有显著差异。
解答:按照0.05显著性水平,拒绝H0,说明三类交通工具送件量有显著差异。p值表示接受原假设最小的显著性水平,p值越小,拒绝原假设的理由越充分。
18. 小明在一次班干部二人竞选中,支持率为百分之五十五,而置信水平0.95以上的置信区间为百分之五十到百分之六十,请问小明未当选的可能性有可能是
40%
50%
5%
3%
解答:3%。
小明的支持率在区间[50%, 60%]的可能性为95%,因此支持率小于50%的概率应小于5%。
19. 以下关于最小二乘法正确的是
最小二乘估计是线性有偏估计中方差最小的
最小二乘估计是线性无偏估计中方差最小的
最小二乘估计是线性有偏估计中方差最大的
最小二乘估计是线性无偏估计中方差最大的
解答:最小二乘估计是线性无偏估计中方差最小的。
在线性回归模型中,如果误差满足零均值、同方差且互不相关,则回归系数的最佳线性无偏估计(BLUE, Best Linear unbiased estimator)就是普通最小二乘估计。
在回归分析中,最小二乘得到无偏估计。
20. 小易有一些彩色的砖块。每种颜色由一个大写字母表示。各个颜色砖块看起来都完全一样。现在有一个给定的字符串s,s中每个字符代表小易的某个砖块的颜色。小易想把他所有的砖块排成一行。如果最多存在一对不同颜色的相邻砖块,那么这行砖块就很漂亮的。请你帮助小易计算有多少种方式将他所有砖块排成漂亮的一行。(如果两种方式所对应的砖块颜色序列是相同的,那么认为这两种方式是一样的。)
例如: s = "ABAB",那么小易有六种排列的结果:
"AABB","ABAB","ABBA","BAAB","BABA","BBAA"
其中只有"AABB"和"BBAA"满足最多只有一对不同颜色的相邻砖块。
输入描述: 输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s中的每一个字符都为一个大写字母(A到Z)。
输出描述: 输出一个整数,表示小易可以有多少种方式。
输入例子1: ABAB
输出例子1: 2
解答:
import sysstring=list(sys.stdin.readline().strip())if len(set(string))==2:print(2)if len(set(string))==1:print(1)if len(set(string))>2:print(0)
len(set(string))可以获得唯一数字的数量。
21. 小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。
输入描述: 输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割
输出描述: 输出一个整数, 表示小易最多能独立生活多少天。
输入例子1: 3 5 100 10
输出例子1: 11
解答:
def live_alone(x, f, d, p):if f >= d/x:print (int(d/x))else:print (int((d+f*p)//(x+p)))x,f,d,p = input().split()live_alone(float(x), float(f), float(d), float(p))
22. 设{xn}服从独立同分布, E[xn] = 0, Var[xn]=1, 则当n趋向于无穷大时,下式值为:
无穷大
0
1
2
解答:1。
E(X^2)=E^2(X)+Var(X)=1;
E(Xi, Xi+1)=0;
上下取期望有
原式=(1+0+1+0+...+1+0)/n=1
23. 通常可以通过关联规则挖掘来发现啤酒和尿布的关系, 那么如果对于一条规则A →B, 如果同时购买A和B的顾客比例是4/7, 而购买A的顾客当中也购买了B的顾客比例是1/2, 而购买B的顾客当中也购买了A的顾客比例是1/3,则以下对于规则A →B的支持度(support)和置信度(confidence)分别是多少?
4/7,1/3
3/7,1/2
4/7,1/2
4/7,2/3
解答:4/7,1/2。
支持度是指某个商品组合出现的次数与总次数之间的比例,即P(AB);规则A →B的置信度指的就是当你购买了商品 A,会有多大的概率购买商品 P(B|A)。
拓展: 而提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)=P(B|A)/P(B)。
End.
作者:KKKiara
来源:CSDN
本文为转载分享,如侵权请联系后台删除
长按下方海报领取【阿里巴巴面试题】
![f80dcbdfe75b481356462d1da08d3f20.png](https://i-blog.csdnimg.cn/blog_migrate/554a5f8eb69a89dd700a8309358b1f07.png)
· 爱数据每周免费直播 ·
直播主题:面试官眼中的理想候选人
直播亮点:
以“谈恋爱”的视角解读面试技巧
如何成为面试官众多简历中“对的人”
数据分析师技术考核的4个要点是什么
综合素质怎么提升?面试疑难问题答疑
直播时间:5月10日 下午13:00 准时直播分享
![30843a9a1fa26c07e701cd394772cf2c.gif](https://i-blog.csdnimg.cn/blog_migrate/5cc1def299c9678ac8c1d14c0a7f590e.gif)