阿里巴巴测试开发面经

4月份左右我就跑去阿里校园招聘官网投了实习简历,本以为简历都没过,所以一直没面试,最后6月才面试。投的岗位是测试开发实习生,从官网上看,似乎只有两轮面试,很不幸,在终面没有发挥好,含恨错失offer。
一面:
一面是电脑端的远程面试,是一个笑起来很可爱的小姐姐,一看到小姐姐笑我就放松了不少,啊哈哈。
首先是自我介绍吧,然后介绍自己的项目。我提到我最近过了数据库三级,然后问了我两个数据库查询的题目:
1.某个表格中有10条一模一样的数据,现在要删掉其中的9条: delete * from table_name limit 9
2.某个表格存着 s_name subject score 三个字段,比如某一行是  张三  数学  76,现在要选取出所有科目成绩都大于80分的学生名字
 select s_name from table_name where s_name not in (select s_name from table_name where score <80)
这个相对比较简单吧。然后问了我在项目中使用数据库的思路,我就简单的讲了一下在设计表格时候的想法。
然后写了个算法题,写出一个函数,输入是两个数组,输出是将两个数组中所有元素排序以后用一个数组输出。
用python写的代码,还是比较简单的,我就不粘贴出来了,思路就是用一个新的数组把所有元素丢进去再冒泡排序,最后输出。
然后问了我一些对测试开发的理解,这个我其实理解的也不深刻,下面是我自己说的:测试开发比测试要高级一点,不仅仅要测试,还要有能力自己写一些自动测试的脚本,然后顺带提了一下自己会写脚本,平时在网上接单帮别人做一些脚本,比如淘宝的自动抢购等等。然后测试就是根据测试用例对软件进行测试,测试软件在各种情况下是否能有效的完成测试内容,如果发现错误,要联系开发人员提交bug。
二面:
二面居然就写着是终面,这次是一个看起来是一位大神级别的面试官,心中一沉。
一开始依然是自我介绍,然后介绍自己的某个项目。然后讲到了在项目中用到了一个叫聚类的方法,然后讲了一下自己用到的方法和探索最好办法的过程。
闲聊了一会就开始编程题了,这次题目有点小难:给一个英文文本“i have a dream i am a human you can have dream too.”再给一个文本“i you am ”,要求计算出第一个文本中包含第二个文本每个单词的最短文本,比如例子中最短文本就是“i am a human you”。
我首先想我可以提取需要搜索的每个单词在一文本中的index,然后根据操作index可以找到最短的那一串。但是面试官说你这个恐怕有点麻烦,然后提示我用最笨的办法,就是不断扫描整个文本,每次扫描减少一个单词,比如第一次扫描从“i have a...“开始,第二次从"have a .."开始,然后要我用代码实现出来。当时由于自己没有思路需要被面试官提示觉得有点不好意思,然后面试官看着我写代码也比较紧张,大概估计一下写出来要半个小时,也不好意思叫面试官一直等,于是就说写出来要一定时间。但是我估计这句话在面试官听来就等于“我不会”,这就导致了最后被挂吧。。。。面试完之后我自己回去研究了一个小时,用index的方法实现了这个计算,用到了最优路径规划的思想,代码粘贴到最后了,我就不具体解释代码了,有兴趣的小伙伴可以跑一下试试。
编程题之后问了我多线程的概念,以及线程之间通讯的手段,然后提到了线程锁,问了我关于死锁的概念。死锁我只在学数据库里学过,所以一脸懵逼,这估计也扣了分。。。
总结:
虽然最后悲剧了,但是也认识到了自己的不足,以后要更加强化自己的理论知识,为秋招做准备呀,秋招再战阿里!
#!/usr/bin/python
#encoding:utf-8
def lengthCa(arr):
    start = arr[0]
    end= arr[0]
    for i in arr:
        if i >start:
            start=i
        if i < end :
            end = i 
    return start-end 
#输入的第一个文本
text = 'ILM runs a batch processing environment capable of modeling, rendering and compositing tens of thousands of motion picture frames per day. Thousands of machines running Linux, IRIX, Compaq Tru64, OS X, Solaris, and Windows join together to provide a production pipeline used by ~800 users daily. Speed of development is key, and Python was a faster way to code (and re-code) the programs that control this production pipeline.'
#输入的第二个文本
keywords='a of'
newtext=text.split(' ')
newkeys = keywords.split(' ')
textLen = len(newtext)
array=[]
#把index计算出来,用做最优路径规划使用
for i in newkeys:
    dan=[]
    for j in range(textLen):
        if i == newtext[j]:
            dan.append(j)
    array.append(dan)
print(array)
#最优规划开始
caculateArray=[]
for n in array[0]:
    temp=[]
    temp.append(n)
    caculateArray.append(n)
flag = 0
for n in array:
    if array.index(n) == 0:
        continue
    temparr=[]
    
    for m in caculateArray:#遍历当前最短路径
        index = caculateArray.index(m)#计算当前路径的index值
        tempminlen=1000000
        tempminarr=[]
        for j in n:#计算当前最短路径,添加下一个节点
            if flag ==0:
                temparr.append(m)
            else:
                for x in m:
                    temparr.append(x)
            temparr.append(j)

            if lengthCa(temparr)<tempminlen :
                tempminlen=lengthCa(temparr)
                tempminarr=temparr
            temparr=[]
        caculateArray[index]=tempminarr
        print(caculateArray)
    flag+=1
tempminlen=1000000
tempminarr=[]
#找出最终所有解里的最优解,为tempminarr
for n in caculateArray:
    if lengthCa(n)<tempminlen :
                tempminlen=lengthCa(n)
                tempminarr=n
#计算tempminarr的起点和重点,现在发现用min()和max()函数就可以了
start = tempminarr[0]
end = tempminarr[0]
for i in tempminarr:
    if start<i:
        start=i
    if end>i:
        end=i
#输出起始位置和终止位置
print(start,end)
for m in range(end,start+1):
    print newtext[m]


#阿里巴巴##测试工程师#
全部评论
坐等更新,急需一波面经!!
点赞
送花
回复
分享
发布于 2018-06-06 09:51
等更新 楼主还在吗
点赞
送花
回复
分享
发布于 2018-06-06 13:37
秋招专场
校招火热招聘中
官网直投

相关推荐

7 89 评论
分享
牛客网
牛客企业服务