快手电商测试开发实习面经

1.自我介绍
2.讲讲实习中碰到了什么印象深的bug
3.实习公司开发测试的流程
4.为什么做测试而不做算法
5.测试用例设计,注册账号
6.java数据类型有哪些
7.重载和重写
8.浅拷贝和深拷贝
9.编程题:有效括号
面试官人很好,态度很和蔼,答不出来会给提示,总体快手面试体验很好很专业。
#实习##测试实习#
全部评论
### 测试用例设计,注册账号 1. **基本功能测试**: - **步骤**: 1. 打开注册页面或进入注册流程。 2. 输入有效的用户名和密码。 3. 点击注册按钮或提交表单。 4. 检查系统是否成功注册账号并显示正确的成功提示信息。 2. **边界值测试**: - **步骤**: 1. 打开注册页面或进入注册流程。 2. 输入最短长度的用户名和密码。 3. 点击注册按钮或提交表单。 4. 验证系统是否正确处理最短字符长度的边界情况。 5. 重复上述步骤,输入最长长度的用户名和密码。 6. 点击注册按钮或提交表单。 7. 验证系统是否正确处理最长字符长度的边界情况。 3. **异常情况测试**: - **步骤**: 1. 打开注册页面或进入注册流程。 2. 输入无效的用户名,如空字符串、特殊字符等。 3. 输入无效的密码,如空字符串、特殊字符、过短或过长的密码。 4. 点击注册按钮或提交表单。 5. 验证系统是否能够正确地拒绝注册请求,并给出适当的错误提示信息。 4. **安全性测试**: - **步骤**: 1. 注册一个有效的用户名和密码。 2. 再次尝试使用相同的用户名注册。 3. 验证系统是否能够防止重复注册,并给出适当的错误提示信息。 4. 尝试使用常见的弱密码,如"password"或"123456"进行注册。 5. 点击注册按钮或提交表单。 6. 验证系统是否能够检测并拒绝这类弱密码的注册请求。 5. **性能测试**: - **步骤**: 1. 准备一组有效的用户名和密码数据。 2. 在高负载条件下(例如同时进行多个并发注册请求),模拟多个用户注册账号。 3. 记录每个注册请求的响应时间。 4. 监控系统资源使用情况,如CPU、内存和网络带宽。 5. 分析系统在高负载下的表现,确保注册功能能够在性能上达到预期的要求。
1 回复 分享
发布于 2024-07-03 12:07 广东
哥们,你约二面了吗
点赞 回复 分享
发布于 2024-07-18 07:53 浙江
兄弟这是几面
点赞 回复 分享
发布于 2024-07-03 14:43 重庆
def is_valid_parentheses(s): stack = [] mapping = {')': '(', ']': '[', '}': '{'} for char in s: if char in mapping.values(): 如果是左括号,压入栈中 stack.append(char) elif char in mapping.keys(): 如果是右括号 if not stack or stack[-1] != mapping[char]: 栈为空或栈顶不匹配 return False stack.pop() 匹配则弹出栈顶元素 else: return False 如果是非括号字符,直接返回False return not stack 最后检查栈是否为空,为空则说明全部匹配
点赞 回复 分享
发布于 2024-07-03 12:15 广东

相关推荐

头顶尖尖的程序员:我刚做完,居然跟我题目一样。最后一天不知道为啥卡了5%的用例
投递作业帮等公司10个岗位
点赞 评论 收藏
分享
又到了一年秋招季,因为之前在相关的帖子下面有发过评论,所以很多找工作的小伙伴经常私聊我,问相关公司或者岗位的情况。因为我偶尔才看牛客,所以信息回的不是很及时,今天在这写一个帖子介绍一下行业相关的一些情况。有业内的小伙伴想跳槽在找目标公司的话,也可以直接拉到下面看有哪些相关的公司适合跳。一、存储固件开发到底是干什么的1.关于岗位名称这个岗位其实没有统一的叫法,在业内一般叫FW开发(Firmware),大多数公司在招聘时都是叫存储固件开发,有的相关的公司直接就叫做嵌入式软件开发但JD写的工作内容是SSD/UFS/eMMC固件开发,有的叫嵌入式固件开发之类的,有的叫SSD/UFS/eMMC FW开发,这些通常指的都是一个岗位,但是具体方向稍有差别,这取决于你做什么产品。2.什么是存储固件?要讲什么是存储固件之前,要先知道现在的主流存储产品分为闪存类和磁盘这两大类,而闪存类的存储产品和磁盘的区别就是闪存使用的存储介质是Nand Flash。而如今闪存类的存储产品包括固态硬盘(SSD)、手机使用的UFS、很多嵌入式平台使用的eMMC、普遍使用的SD/TF卡或者相机专用的CF卡、便携式的移动硬盘以及U盘等等。那么光有闪存芯片是无法做成上述这些可以直接使用的产品的,闪存芯片在这里扮演的角色类似于我们经常见到的智能储物柜中的柜子,单纯的用于存储,如果要做出来智能柜那就还需要一个嵌入式控制板以及在控制板上跑的软件,那么对应到我们这里就是主控芯片和存储固件。像智能储物柜上跑的软件需要做什么呢?那就是实现你一个储物以及取物的逻辑,在什么条件下能让你储物,什么条件下能让你取物,怎么能让你正确的取到你的东西。又比如现在很多人排队,你在等着存或者取东西,那你的软件怎么实现更快的让人家存东西或者取东西等等功能。那对应的存储固件的作用就是管理你存在闪存芯片里边的数据,保证可以正确的读到你原来存进去的数据,以及在各种复杂场景下,保证你的数据不会出现异常导致丢失的情况以及实现更高的读写性能等等功能(实际固件复杂程度远高于刚刚讲的这些,会涉及到多种协议以及各种其他功能的实现等等)3.存储固件岗位具体方向的划分目前主要的产品线有以下三大类:SSD、UFS以及eMMC,其他还有占比少量的比如SD卡以及移动存储或者U盘,这些占比少的东西暂且按住不表。那么对应到存储固件的岗位就是以这三大类的产品线作为划分,分别对应SSD固件开发、UFS固件开发、eMMC固件开发。因为这三类产品在硬件形态、协议功能及复杂度上,都有不同程度的差别,导致不同产品使用的存储主控芯片存在很大的差别,进而导致这些产品等等固件也有较大的差别,所以作为开发人员需要储备的知识也是有差异的。需要说明的是现在有的公司把这三个方向分为两类,一个是SSD方向,一个是嵌入式方向,嵌入式方向包含UFS以及eMMC。这样分类的原因是鉴于他们的应用场景以及发展是一脉相承的,他们的应用场景均是在嵌入式领域(手机也算是一类嵌入式平台),最初早期的手机因为SD卡速度逐渐不满足需求而改用了eMMC,随着手机进一步发展后,eMMC也满足不了手机的需求而改用了UFS。这两最初在芯片尺寸和外观上都是一致的,主要的差别在于协议端,以及由此带来的主控的变化。所以UFS和eMMC的固件主要的差别是前端协议的适配这一块有比较大的差别,以及UFS协议有更丰富的Feature需要固件去实现。因此这UFS和eMMC两个方向的转换的难度会小一点,这两个方向和SSD方向的差别很大,所以从嵌入式方向和SSD方向的转换难度会大很多。4.选哪一端?在面试的时候面试官可能会说这个岗位会分为前端(FE Front End)、FTL(Flash Translation Layer)、后端(BE Back End),那么这里就要谈他们划分的依据是什么以及干的活有什么差别?先说前端,前端对应的就是和使用这个产品的平台(例如电脑、手机或者其他嵌入式平台)我们称之为HOST的交互,我们和HOST之间的交互行为是需要符合各自产品的协议所定义合理的行为,在我们的产品中,我们可能会遇到host的行为不符合协议,或者我们固件行为不符合协议甚至协议中没有定义的行为,那么这一部分就需要前端去做相应的处理。除此之外,前端最主要的一个工作就是要把从HOST端来的请求处理之后送到下层去处理,这是完成HOST请求的第一步。另外要说明在嵌入式产品方向,前端协议通常没有这么复杂,所以难度应该会低一点,而SSD方向因为前端会涉及到PCIE以及NVME协议,这两协议会更复杂一点,并且一直在不断的迭代,所以难度上会高一点。再说FTL层,这算是固件中最主要的一层,固件中涉及到的主要功能都需要在这一层去进行调度实现,比如最基本的读写调度,然后像擦写均衡(WL Wearing Leveling),数据保持(Data Rentation),垃圾回收(GC Garbage Collection),映射表管理等等算法或者功能都是在这一层去做的。这一层也是产品性能以及固件质量决定性的一层,上面讲的这些以及没讲的这一些功能或者算法的一些策略或者调度之类的都会导致它的性能有差异,这一层做的好不好也会决定你后面去解BUG的多少以及难度。做这一层在产品开发前期主要就是写功能,然后做调做优化调试,后边开始放量测试后就主要就是Debug,如果是厂内测试遇到的bug可能还好,但如果是在客户那一边测试打到的问题,那就意味着加班和解不出bug而不断的挠头。最后说后端,后端主要做的是对Nand Flash的一个读写的调度以及适配,也就是利用主控芯片的Flash IP端和Flash基于ONFI协议去做一个交互,然后实现对Flash的读写功能(其实就是适配不同家品牌的Nand Flash),因为不同家Flash的功能也有差异,所以后端也需要对这些做一个适配。具体的适配工作可能涉及到各种功能(读写擦以及更复杂的读写擦)命令时序的一个适配,以及对Nand Flash类似ECC/Retry等能力的调整适配之类的。5.工作难度大吗?强度高吗?首先讲工作难度的问题,必须先承认这个行业想入门是有难度的,基本上你干个一两年,你可能还是懵懵懂懂的,刚开始干活这一段时间是整个职业生涯最痛苦的阶段,也是压力最大的时候,如果没有老鸟带着干,那可能真的特别特别难受,所以如果想干这个谨慎选择培养模式不好的公司。关于工作强度的这个问题,其实是要看具体的项目,以及项目的进度。像一个项目一般是前期开发,开发完了然后去测试,然后最后再到客户导入。一般前期开发忙是稳定的忙,测试的时候就看测到问题多不多,难度大不大,如果打到的问题又多又难,那你肯定强度就大了。到了客户导入阶段也是同样的道理,顺利的话那强度就小了。当然,通常而言这一行加班是常态,不过不同公司的加班强度不一样。6.好不好跳槽?就目前而言,同行业跳槽是挺好跳的,因为目前国内以长江存储为头带起来的上下游企业都成长起来了,同时随着去全球化以及为了产业链的安全而进行的国产替代,还有一些大大小小的相关的公司也进入到这一行并且也做出了一些成绩,相关的岗位还是很多的,至少从我干这个到现在,做这个的公司是越来越多了,岗位是越来越多了。再如果你是做嵌入式方向的,也是有机会去手机厂做一些相关的工作。如果说你想跳槽去其他行业,那可能你的行业经验就不太合适,存储行业的经验算是一个孤岛?一般只有这行业上下游的企业比如终端用户像刚刚讲的手机厂商会认可。你想往外跳,可能其他行业不太会认同你的工作经验。所以如果你来干这个了,你觉得干不来或者不合适,你就趁早跳其他行业,不要继续扩大沉没成本,如果你觉得干这一行也还行,那你可以一直干着这一行,还是比较看重经验的,这一行可能不能像互联网那样赚大钱,毕竟还是实业,但保个温饱还是可以,赚个辛苦钱是完全没问题。二、业内相关公司名单整理个人经验,肯定总结的不全,仅供参考这里主要说国内公司,国外的原厂(三星,海力士,铠侠,美光)在国内的情况我不是很熟悉所以不讲,有需要的自己去挖掘一下信息。1.Nand原厂:长江存储 原厂无需多言,固件团队规模正在快速扩展2.主控厂Phison 台湾群联,应该算是世界最大的主控厂了?应该没有内地的岗位Silicon Motion SMI 台湾慧荣,只卖主控和解决方案,不卖产品。在内地有子公司?联芸科技 算是最早量产国产PCIE SSD主控的厂商了,只卖主控和解决方案,不卖产品,已上市英韧科技  只卖主控和解决方案,不卖产品大普微 主要是做企业级SSD的得一微 早期SATA SSD主控还不错,PCIE这一块有点掉队了,现在正在追回特纳飞 不了解忆芯科技 不了解平头哥 量产了企业级PCIE5.0主控康盈半导体 康芯微,主要是做嵌入式这一块3.模组厂:江波龙 国内最大模组厂,三大产品线都有,已经有eMMC和UFS主控量产,实力很不错,已上市佰维存储 宏碁掠夺者实际运营者,三大产品线都有,有自己的eMMC主控,已上市德明利 不太了解,反正也上市了宏芯宇 (他很想上市)记忆科技 旗下亿联主营OEM(就是to B) SSD,其他方向的情况不了解时创意 应该主要是做嵌入式产品这一块亿恒创源Memblaze 主要做企业级SSD海康存储 联芸大股东大华技术 有子公司做SSD4.其他还有其他一些不是很了解的公司,可能因为公司规模比较小以及产品知名度不算高,比如合肥大唐存储南京鹏钛得瑞领新武汉喻芯半导体
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
4
23
分享

创作者周榜

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