北京经纬恒润 软件测试工程师 面经

#软件开发笔面经#
请简述软件测试的定义及其重要性。
在你的理解中,软件测试的基本原则有哪些?
你能描述一下软件测试的完整流程吗?从测试计划开始到测试报告结束。
在设计测试用例时,你通常会考虑哪些因素?请举例说明。
请谈谈你在实际项目中如何进行测试执行的,并描述一次你遇到的挑战及解决方案。
你对自动化测试有何理解?请列举你熟悉的自动化测试框架,并简述其特点。
在你的项目中,你是如何进行自动化测试脚本的编写和管理的?
请描述一下你在持续集成环境中实施自动化测试的经验。
当面对一个复杂的软件系统时,你如何确定测试的重点和优先级?
在你的工作中,你是如何进行测试质量评估和反馈的?
你最近学习了哪些与软件测试相关的新技术或工具?请简述其对你的测试工作有何帮助。
在团队合作中,你通常如何与其他开发人员、产品经理等角色进行沟通和协作?
当你发现一个严重的软件缺陷时,你是如何处理和报告的?
请分享一次你通过测试优化提高了软件质量的经历。
最后,你对经纬恒润有什么了解?为什么选择来面试软件测试工程师这个岗位?
无手撕,第二天通知一面通过,等hr面,一共两面,日常实习
全部评论
只有一轮技术面嘛
点赞 回复 分享
发布于 07-24 23:43 黑龙江
好兄弟收到offer 了嘛?测试开发给多少
点赞 回复 分享
发布于 08-29 16:43 河北
中国电子云
校招火热招聘中
官网直投

相关推荐

一、面经准备:1、static关键词:静态局部变量仅作用于代码段;静态全局变量仅作用于文件内部;静态成员函数仅通过类名调用;静态成员变量,类外初始化;静态线程局部变量;2、虚析构函数:用于基类指针删除派生类对象时,正确调用派生类的析构,维持多态的正常运行;3、动态绑定:晚绑定,运行绑定而不是编译绑定,虚函数的使用时,在基类指针或引用调用虚函数会发生动态绑定;编译器仅进行类型检查,然后创建虚函数表,在调用虚函数时动态绑定虚函数表;构造函数往往不是虚函数;4、自定数据结构怎么传函数:函数指针、函数对象、仿函数、lambda表达式;5、为什么函数传参要传引用/const引用:值传递会拷贝,效率低;引用传递为别名,可以修改原值;const则可以避免不必要的修改;6、静态方法是否可以访问类成员变量:静态方法不能直接访问非静态成员变量,因为非静态成员变量与实例绑定;7、指针常量与常量指针:指针常量不可变的是指针,指针的值是可变的;常量指针,不可变的是常量,指针的指向是可以变的;8、vector有哪些插入元素的操作,具体操作复杂度和底层发生了什么:push_back(超过容量则自动分配更大的内存块然后全部复制过去)、emplace_back(末尾构建新元素,同样存在超容分配新的内存块)、insert(在制定迭代器位置插入)9、vector一个元素一个元素放入的过程中会发生什么:首先会初始化,然后检查容量,容量不足会重新分配内存,然后会更新迭代器、指针和引用;10、常用激活函数特点:sigmoid(01之间、平滑、梯度消失、不以0为中心、指数运算量大)、tanh(+-1之间、梯度消失、指数运算)、relu(没有梯度消失、稀疏、计算简单、dead relu)、leaky-relu(不会dead)、softmax(多分类输出)、swish(收敛比relu快、指数运算)、gelu(平衡、计算量大)11、各种注意力机制介绍:聚焦式注意力、显著性注意力、多头注意力、硬注意力、软注意力、键值对注意力、结构化注意力;应用于NLP、CV、语言识别;比CNN具有动态性和适应性,提高模型性能,具有可扩展性和鲁棒性12、函数重载:同名函数不同输入参数列表,编译时多态;13、函数重写:继承关系的类之间,虚函数的重写,运行时多态;14、C++结构体和联合体的区别:struct结构成员独占内存,union联合体共享一块内存;15、ResNet网络特点:残差结构、恒等映射、超级深度、BN、16、YOLO系列网络特点:滑动窗口、分类与回归、多尺度预测、17、EfficientNet网络特点:深度可分离卷积18、GPU之间的数据传输:pcie总线实现GPU数据传输,CUDA并行计算,NVLink互联技术、分布式技术19、C++新特性:左值(通常变量、返回值都是可引用的左值)右值(&&,允许函数接收并操作的临时对象,配合移动语义使用),智能指针(unique_ptr独占指针:对象随指针销毁而销毁、shared_ptr共享指针:多实例共享对象,最后一个指针销毁时销毁、weak_ptr弱指针:共享指针在循环时的应用)20、堆和栈的区别:数据结构上栈后入先出,堆则为完全二叉树;内存分配上,栈为操作系统自动分配,编译时确定,内存连续速度快,用于函数调用、局部变量,只能访问栈顶,堆为程序员手动申请或释放,用来存放实例化的内容,堆可以任意位置访问;21、死锁原因和必要条件以及死锁的解除方式:死锁是多线程或进程的资源争夺;必要条件:资源被一个进程或线程锁定;解除方法:挂起、强制撤销、回退进程22、unordered map和map的区别以及其实现原理:map是红黑树,自平衡的二叉查找树,插删查的时间复杂度为logn,unordered map是哈希表,时间复杂度为1-n23、动态链接和静态链接的区别:静态链接:编译时嵌入,独立性强,执行速度快,体积大,内存浪费,更新困难;动态链接:运行时加载,节约内存,便于更新,扩展性强,依赖外部库,有一定性能开销24、有大量数据要处理,如何加快处理速度(IO密集型和CPU密集型):IO密集:异步IO、多线程/多进程、缓存技术、批处理;CPU密集型:并行计算、算法与数据结构优化、指令集硬件加速、分布式计算、编译优化25、git如何合并远程分支:git fetch获取远程分支、git switch切换分支、git merge合并分支、git push推送结果26、两个旋转框的IOU计算方法:获取旋转框xywh和角度,计算旋转多边形顶点坐标,计算交集多边形,计算交并集面积,cv2提供了旋转框iou的计算方法:cv2.rotatedRectangleIntersection27、怎么理解DETR中query的作用:模型输入输出的桥梁,每个输出位置分配一个query,用于匹配特征图与提取区域,实现无anchor和无nms28、快速排序:将序列分治为大子序列和小子序列,然后递归排序两个子序列29、手写nms:计算iou,去掉与最高置信度iou大的边界框30、n个苹果放入m个篮子,要求随便取1-n个苹果,都能取出来,问最少用几个篮子:log2(n+1)向上取整31、从模型和数据的角度分别说一下如何解决梯度爆炸的问题:模型:权重初始化、梯度裁剪、BN、使用残差网络、使用adam、sgd优化器、权重正则化;数据:标注化数据、特征旋转、数据预处理32、yolo中是怎么解决正负样本不均衡问题的:iou比较正负样本、多种损失函数、数据增强、随机采样、类别权重、object置信度分数预测33、BN层的作用是什么,有什么可学习参数:归一化,加速训练和收敛、防止梯度爆炸和消失、防止过拟合;可学习gamma和beta匹配均值和方差;34、给定NCHW的输入,BN层的输出应该是什么:维度还是nchw,只是hw进行了归一化35、在训模型的时候如果遇到显存占用了,但是后面的GPU利用率不高的情况,可能是因为什么:CPU跟不上、Batchsize太小、计算复杂性低、数据同步、io瓶颈、显存不足、优化器效率低、模型并行差36、在训模型的时候如果loss报Nan了,可能是因为什么:学习率太高、参数初始化错误、梯度消失/爆炸、数据不稳定/有问题、模型结构问题、优化器或正则化问题、框架或库出错37、Detr是怎么做到不用nms的,如何保证在一个目标附近只生成一个bbox:transformer机制下仅输出一个query;二、笔试准备1、构造函数:自动执行、初始化对象、面向对象、名称与类名相同、没有返回类型、自动调用、可以有多个,参数列表不同(重载)、可以显式调用2、析构函数:结束时调用、清理操作、名称特殊~、无参数、无返回类型、自动调用、只能有一个3、运算符:算术、关系、逻辑、赋值、位操作:位与 (&)位或 (|)位异或 (^)位非 (~)左移 (<<)右移 (>>)、成员访问: (.)(->)、条件运算符(三元运算符)、逗号运算符、作用域解析运算符 (::)、强制类型转换运算符4、C++包含的关键字:控制语句关键字、数据类型关键字、存储类型关键字、类和对象相关关键字、异常处理关键字以及其他关键字5、位运算:位与(AND)、位或(OR)、位异或(XOR)、位非(NOT,通常称为按位取反)、左移(Left Shift)和右移(Right Shift)6、类的定义:面向对象,代码的模块化和重用性,创建具有相似属性和方法的不同对象7、子类访问:公有可以访问、保护只能基类与派生类访问、私有不能访问;公有继承不变属性,保护继承全变保护,私有继承全变私有;8、类成员访问修饰符之间的区别和应用:public全部可以访问、protected类外不可访问、private仅类内和友元;9、白盒测试:通过检查软件系统内部的代码结构和逻辑来评估系统可靠性和效率的软件测试方法10、支持RTT:实时测试工具11、异常处理指令throw、catch、try:try 语句块用于包裹可能引发异常的代码;catch 语句块紧跟在 try 块之后,用于捕获并处理 try 块中抛出的异常;throw 关键字用于抛出一个用户自定义的异常或重新抛出捕获的异常;
经纬恒润一面348人在聊 查看62道真题和解析
点赞 评论 收藏
分享
5 24 评论
分享
牛客网
牛客企业服务