【社招】测开滴滴一面凉经

📍面试公司:滴滴

🕐面试时间:7.12

💻面试岗位:测开

❓面试问题:

1.自我介绍

2.压测有发现什么问题?

3.客户端自动化可以分几层?

(一开始我还不懂什么叫几层,就问了一下)

现在会想了一下,可以分:①基础的支持定位页面元素的功能、②公共的操作,例如滑动、点击、登录等、③链接远端云真机的功能、④连接appium服务的功能、⑤启动层,加载所有需要的资源、⑥应用层,具体业务代码

4.客户端UI自动化里,安卓的代码可以直接复用到ios上吗?

不能,安卓是基于UIAutoMator2的,但是ios是基于XCUITest的(但是感觉她不满意,应该还有其他关键的回答没有说)

闲聊:我看过很多公司用的appium,而且都是先做安卓,能够把安卓复用到ios上的公司很少,而且复用成本也很高(言下之意是你还有很多关于复用成本的没说呢)

5.为什么不用xxx框架而是appium呢,明明xxx框架有图片检测能力?你有用过坐标定位嘛?

有的,实际上我的方案就是坐标定位

追问:那如果分辨率变化,多机型呢?

目前可用机型受限,暂时没有多机型的情况,如果将来有的话,可以利用AI检测图片元素的方式定位

闲聊:其实我们不是用appium,而是xxx框架(言下之意就是她觉得xxx框架比appium好得多)

6.你们公司的安卓和ios端公用的能力是什么?基于rn还是基于flatter?

没有听过rn或者flatter(疑惑挠头)

追问:我记得你们公司之前是大多为h5页面,现在还是吗?

(反应过来)我们公司的共用技术栈叫做xxx,您可能没听过,我看过相关技术文档,其实也是基于您刚刚说的rn或者flatter

像是h5页面已经很少了,都是native、xxx、和h5,大多都是xxx,其次是native,极个别是h5

追问:xxx也是能动态发版的对嘛

是的,支持动态发版,不需要app更换版本

7.你觉得各个端之间的区别在哪

不太清楚,您指的是哪些端?

追问:比如安卓,ios,小程序,……

(反应过来)哦哦哦,那我们有xx APP, yy APP,xx小程序 yy小程序,端涉及安卓、ios和纯血鸿蒙

区别的话,

端之间:ios和安卓可能一些native实现上的区别,比如唤起键盘,键盘上ios有xxx配置,但是安卓没有、纯血鸿蒙的话目前很多功能不支持,只有安卓和ios能支持部分功能,而鸿蒙可能需要兜底、跳转其他页面或者干脆功能降级

APP之间:xx APP和yy APP可能存在调用和依赖关系,APP和小程序之间可能存在小程序承接APP的部分功能,但是有一些功能不像APP能支持的那么多

(感觉她不是很满意,我对此确实知道的不多)

8.如果有一个涉及多端,比如后台、客户端、各种服务依赖的复杂需求,你要怎么保障它的质量?

(我主要针对多端的问题先回答了一遍,但是她看起来不是很满意,然后她亲自说了一遍)

(以下为她的说法)

先做冒烟,冒烟100%通过才可以介入测试

然后是在测试环境,下载所需要的测试包(对应版本)后,绑定好测试环境

在每一个端上单独测试,然后再测试端的联调,最后走一遍全链路---(这个是我说的)

要注意端和端的依赖顺序,比如先测后台,再测C端,上线也是先后台再C端

服务之间的依赖亦有顺序,A->B的服务依赖的话,从测试到预发环境后端服务上线的时候,要先测A再测B

最后检测APP的版本控制---(我说的)

上线后线上回归,复杂需要可以利用灰度,保持观察

(最后我跟她说可能最开始没想到要说这么全,只是针对一个问题回答)

9.如果要做一个团购买券的(支付)功能,你要怎么做接口测试?

(因为我其实接口测试做得少,我想了很久,回答了一堆,比如重要参数是否加密,金额是否对得上等等)

被一眼看穿了,她说:看来没有做过系统的接口测试(QAQ)

(以下是她说的内容,感觉很有层次感,我说的就是乱讲一气)

类型:接口测试先要看接口类型,是Get还是Post或者别的

请求:然后看有没有正常发起请求,有没有重复的请求,有没有错误的请求、额外的请求

参数:然后看请求的参数是不是空,有没有正常返回

10.评论功能的测试需要注意什么?

我举了一个自己实际负责过得业务来说,此处略

(感觉她反应还不错)她补充了一个点:还存在删除评论的场景,可能会把这一层楼的评论都删掉

11.你先反问我把,然后做一下代码题

反问略

12.代码题

一、2个字符串,s = "aa" p = "a*" ,要求实现一个能够做类似正则匹配的函数,只要实现 "."是匹配任何字符,"*"是匹配任意长度的任意字符即可

二、nums = [1,-1,3,3,5,-1,8,9,13],k=3,在k长度的滑动窗口把nums从头滑到尾,求每个时刻窗口内的最大值

先说结论,我都做出来了

第一题就是模拟题,包含*的情况,就检测头或者尾部是否有匹配的字符即可,如果没有*,就先判断长度是否一致,再逐个字符判断是否相等,碰到"."直接continue

//模拟题
public static boolean match(String a, String b){
        if(b.contains("*")){
            if(b.length()==1) return true;
            return a.substring(0,1).equals(b.substring(0,1)) || b.substring(b.length()-1,b.length()).equals(a.substring(a.length()-1,a.length()))
                    || b.substring(0,1).equals(".") || b.substring(b.length()-1,b.length()).equals(".") || b.substring(0,1).equals(".") ;
        }else {
            if(a.length() != b.length()) return false;
            for(int i=0;i<a.length();i++){
                if(b.charAt(i) == '.') continue;
                if(a.charAt(i) != b.charAt(i)) return false;
            }
            return true;
        }
    }

    public static void main(String[] args) {
        String s = "abcdeaa";
        String p = "a.*";
        System.out.println(match(s, p));
    }

第二题的话我首先想到的就是用堆,也就是优先队列,用了一个大根堆实现了(其实我知道有更好的贪心算法,但是我忘了),第二题直接被追问了有没有更好的方法,我感觉被看穿了,但是也没有时间去思考更好的办法了,面试节奏摆在这里嘛

//单调队列解法
int k = 3;
int[] nums = new int[]{1,3,-1,2,-5,-3,-6,-7};
Deque<Integer> pq = new ArrayDeque<>();
ArrayList<Integer> res = new ArrayList<>();
for(int i=0;i<nums.length;i++){
while(!pq.isEmpty() && nums[pq.getFirst()]<=nums[i]) pq.removeFirst();
pq.addFirst(i);
if(i-k>=pq.getLast()) pq.removeLast();
if(i>=k) res.add(nums[pq.getLast()]);
}
System.out.println(res);

🙌面试感想:

整个面试1小时42分钟

面试官展现了极强的专业度,教会了我很多风险控制的细节。虽然感觉面的压力也很大,但是能学到很多细节

#面试问题记录#
全部评论
RN是react native
点赞 回复 分享
发布于 昨天 23:43 北京
居然出俩困难题吗
点赞 回复 分享
发布于 昨天 20:40 北京
针对支付场景,可按以下框架回答: 输入验证: 参数边界(券金额为负数/超限) 幂等性(重复支付防重入) 流程验证: python 创建订单 → 支付校验 → 券核销 → 订单状态同步 安全验证: 敏感数据加密(银行卡号) 越权访问(用户A能否操作用户B的券) 对账验证:支付金额与券金额是否匹配(财务一致性)
点赞 回复 分享
发布于 昨天 14:37 上海
3. 多端质量保障体系化回答 面试官的流程已非常经典,补充关键点: 环境隔离:区分后端服务环境(测试/预发)与客户端环境(Mock/真实) 依赖解耦:通过Mock服务解决跨端依赖阻塞(如支付依赖银行接口) 监控阶段: markdown 1. 单端冒烟 → 2. 端到端联调 → 3. 全链路测试→ 4. 灰度发布监控 版本控制:强调客户端强依赖服务端API版本(如接口降级兼容)
点赞 回复 分享
发布于 昨天 14:37 上海
你的六层划分逻辑基本正确,但可以更贴近行业通用术语(如Page Object模式): 驱动层(Appium/UIAutoMator2/XCUITest) 工具层(元素定位、滑动/点击封装) 业务层(用例编写,Page Object封装) 调度层(多设备管理、云真机接入) 报告层(结果分析、日志收集)
点赞 回复 分享
发布于 昨天 14:08 上海
还要补充一个问题:接口自动化中,如果存在前后依赖的接口,上一个失败了的话,下一个又需要前置依赖,怎么办?
点赞 回复 分享
发布于 昨天 13:33 上海

相关推荐

昨天 22:24
已编辑
广东药科大学 后端
实在是不想学了&nbsp;写个文章吧.....希望大家消除对云智的误解&nbsp;无所谓内包外包&nbsp;这里做的业务跟总部都是一样的明白吗?都是一样的只是钱多钱少&nbsp;竞争力和内卷不大的问题以及有没有产出&nbsp;做的是不是杂活跟组有关系&nbsp;不跟内包有关系我来这里实习是有培养计划的&nbsp;我觉得导师和leader对我还是比较看重经常跟我聊进度&nbsp;让我不会的快点问&nbsp;快点学习和成长我一个月预答辩了两次&nbsp;入职一个月预答辩两次......我导师也是对我很好&nbsp;跟我说我做的工作如果说没有什么产出就不用写了意思就是那些CRUD的杂活对于我答辩没有什么用的就不用给我写了分给我需求&nbsp;让我的导师给我做方案设计一个方案设计争取做完去上线另外一个方案即使写不完也要明白业务逻辑到时候好答辩&nbsp;这样才有产出同时我的导师也跟我说他理解我广东人想回去的心情&nbsp;即使想回去也没有关系~而且部门的同事们都非常热情&nbsp;非常~很多入职一两年的大佬们每天都会跟我们一起吃饭其他的都是有点上年纪的就会自己吃饭盒&nbsp;应该是在家里做的&nbsp;然后放到盒子保温和同事一起吃饭真的是加快感情升温的方式&nbsp;有一个校招一年的已经混到负责人了然后我就每天问他问题&nbsp;能学到很多我的左右两边每天对我都是笑嘻嘻的&nbsp;很温暖的同事们说到业务&nbsp;部门还是比较核心的&nbsp;一个部门吃完饭回来都在加班表面说早10晚6&nbsp;实际上我左右两边后面都是九点左右走的&nbsp;我的导师走的早一点leader都是十点左右走
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
07-11 18:47
已编辑
门头沟学院 后端
摆烂最舒服了:感觉不看学历不看实习,只看经历相关度了
投递米哈游等公司7个岗位
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务