Java教程

面试经验--携程测试开发工程师--一面

本文主要是介绍面试经验--携程测试开发工程师--一面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在笔试后2天,面试之前2天,我收到了面试预约邮件,上面允许我选择面试时间,我毅然选择了早上10:00,这是最早的可选时间。我觉得,既然要面试,那么就要选择自己和面试官状态最佳的时间,早上10:00正是我期望中的好时机。

自我介绍

面试官您好,我叫王启越,来自合肥工业大学,是大四在读,明年6月毕业。我在校期间勤奋好学,参与过合肥工业大学机器人与智能技术实验室,在那里我学习了很多。

(突然忘记了自己当时咋说的了.....)

我觉得自我介绍一定要吐字清晰,一定要条理清晰,突出重点,不要面面俱到,不要搞得像履历那么详细。就突出重点就完事了,比如我获得什么奖,都要讲到位。

项目经历

你在机器人项目中,为它做过什么优化吗?

我们的机器人存在一些硬件方面的问题,比如雷达扫描就很慢,且精确度低,导致机器人检测周边环境很费时间。我们做了传感器融合的方案,使用机器人摄像头,采取环境的点云数据,进行融合建图,为机器人加速了50%。

你在机器人项目中,所用的ROS是什么

ROS是Standford开发的一款开源的机器人操作系统,实现了一些例如差分式轮式机器人的地盘编码等底层的模块,我们不需要重复造轮子,可以基于ROS,进行一些高级功能的开发,比如我们开发了机器人路径规划,开发了机器人与人交互的系统,能够让机器人听取人的指令,做一些简单的服务,比如从一个房间到另一个房间,给游客端一个盘子,拿一杯饮料等。

项目经历真的是我讲的最好的一点了,因为我确实为机器人项目做过很多事情。我以后的面试,还要靠这个东西呢!

知识点

请你谈谈测试的一般流程

我回答的是:

首先进行需求分析,然后是单元测试,再往后是集成测试,确认测试,在上线前,进行α测试、β测试,出了问题,或进行新版本迭代,还需要进行回归测试。

黑盒测试和白盒测试的区别

我回答的是:

黑盒测试

是将待测试的系统视为一个黑盒,不管它内部是如何实现的,只看能否正确完成功能测试,可以根据需求,设计少量的测试用例,根据一定的操作步骤,看是否能够得到期望的结果。

白盒测试

偏向于测试系统内部的一些细微的问题,能够发现系统逻辑上的错误和一些隐患,一般用路径覆盖、条件覆盖等方法。

PS;这里明显答得不好,我能感觉出来。

黑盒测试有哪些方法

我回答的是:

等价类划分法,就是根据不同的类别,设计测试用例

然后....就不知道了,我让面试官稍微提醒了我一下,他又说了一个因果图法

我又硬答了一波,说因果图法是将操作步骤和操作预期结果做因果联系的方法。

应用题

假设现在有网络页面,上面有一个文本框,让用户输入年月日,判断是否是闰年,如果是就返回真,不是就返回假

如果让你测试这个功能,你会如何测试?

我回答的是:

我会把测试分成前端后端

先设计前端的测试用例,比如看前端的界面是否设计合理,用户能否输入一些非法字符串,比如进行SQL注入等,看看前端是否拦截了这些字符串。还会测试一下用户最多能输入多少字符,看看是不是无限输入的。

我设计后端的测试用例

会看用户输入的字符串是否符合日期的格式,比如年月日这种的,月份有没有输入超过12或者小于1,日期是否是跟月份相对应的,再判断一下非闰年的2月,看日期如果超过28,就不正确等。

这里很明显我答得没有什么条理可言。

尤其是,我给自己挖了坑,我偏偏提到SQL注入,和非法字符拦截,面试官说,这些东西前端应该做不了,应该是通过一些抓包器处理的。我对这个确实不是很了解,明显是急于展示自己的知识了。

编程题

面试官让我共享屏幕,然后把刚刚那题判断闰年给做出来,我一边编程,一边跟面试官解释代码。我编程的习惯还算可以,先写注释,注释里面写功能点和测试用例,然后再编程。编程完成后,不急于编译,先自己看一遍,再把测试用例带进去走一遍,最后再写驱动程序,来跑一下代码,并且展示界面。

这是我写的程序:

#include <iostream>
/*
判断是否是闰年
(1) 2000    true
(2) 1000    false
(3) 2008    true
(4) -8      false
(5) 2021    false
*/
bool isLeapYear(int year)
{
    /*置润规则:4年1润,100年不润,400又润*/
    /* 没有公元0年,只有公元1年,公元前1年*/
    /* 公元前1年是闰年*/
    if (year < 0)
    {
        year += 1;
    }
    if (year%4==0)
    {
        if (year%400==0)
        {
            return true;
        }
        if (year%100==0)
        {
            return false;
        }
        return true;
    }
    return false;
}

int main()
{
    int year;
    std::cout << "please input a year:" << std::endl;
    std::cin >> year;
    bool flag = isLeapYear(year);
    std::cout << year << " is " << (flag?"":" not ") << "leap year." << std::endl;
    return 0;
}

运行截图

image-20210913224514128

总结

这次面试,我在测试的知识方面很欠缺。

面试官最后还问我,我到底在学校有没有学过软件测试这门课,我也没有骗他,我说这门课我没选。

许愿,我真的很想拿到offer,我愿意为实现这个愿望再多学习一些,再多努力一些!

这篇关于面试经验--携程测试开发工程师--一面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!