1、自我介绍
2、为什么投了字节?
3、说一下对于测开岗位的理解
测试开发工程师是一种融合了开发角色和质量意识的岗位,要求测试人员兼具开发人员的技能和测试人员的思维。总的来说,测试开发工程师的定位就是保障产品的质量和提高测试效率。
测试开发工程师需要具备以下技能:
4、介绍一下实习的项目
5、对于该项目的质量建设,你做了哪些工作?
总之,在项目质量建设过程中,关键是确保所有团队成员都了解并遵循既定的质量标准和策略。通过有效的沟通、培训和支持,可以确保项目的成功交付。
6、MySQL和Redis的使用场景?区别?
MySQL和Redis都是数据库,但是它们的本质区别在于MySQL是关系型数据库,而Redis是NoSQL数据库。MySQL适用于大规模数据存储和复杂查询场景,例如电商、金融、物流等领域。而Redis适用于缓存、消息队列、计数器等场景。
MySQL和Redis的区别主要有以下几点:
7、MySQL慢查询排查(面试官好喜欢问这个,被问到好多次了)
MySQL慢查询排查的方法有很多,以下是一些常用的方法:
8、索引类型?你们项目中用的什么索引?
在数据库中,索引是一种数据结构,用于提高查询效率。常见的索引类型包括:B树索引、哈希索引、位图索引等。
不同的数据库管理系统(DBMS)支持的索引类型也不同。例如,MySQL支持B树索引、哈希索引和全文索引;Oracle数据库支持B树索引、位图索引和函数索引等。我们项目用的B+树索引居多
9、索引底层原理?介绍下B+树吧
Mysql相关面试题
10、Redis数据类型及常见使用场景
11、接口自动化做到什么粒度?接口自动化执行通过率?
一般来说,接口自动化可以做到以下粒度:
通过率99%
12、http&https&Rps区别?
HTTP、HTTPS和RPC都是计算机网络中的协议。其中,HTTP是一种明文传输协议,而HTTPS则是一种加密传输协议。RPC是一种远程过程调用协议,它可以在客户端和服务器之间进行通信,使得开发者可以像调用本地函数一样调用远程函数。
HTTP和HTTPS的区别在于安全性。HTTPS使用SSL/TLS协议对数据进行加密,可以保护数据的安全性和完整性。而HTTP则不具备这种加密机制,数据传输过程中容易被窃听和篡改。
13、你理解接口自动化的出发点?为什么要耗费人力做自动化
接口自动化的出发点是为了节省人力成本,把测试从枯燥的重复劳动的人工测试中解放出来。这样可以减轻测试人员的工作量,提高测试效率,同时也可以保证测试质量。
此外,接口自动化还可以提高测试覆盖率,减少人为错误,提高软件的稳定性和可靠性。
14、http和Rpc使用上的区别?
RPC和HTTP使用上的区别主要有以下几点:
15、Redis 的key大小设置多少合理?
Redis的key大小设置应该根据实际需求来定。一般来说,建议使用有意义及统一格式的key,而不是过长的key,因为过长的key会影响内存占用及数据查性能。
16、URL请求到响应的流程
一次性补全网络基础知识。
17、栈和队列的区别?举一个只能使用队列不能使用栈的业务场景
栈和队列是两种常见的数据结构,它们的区别如下:
栈是一种后进先出(Last-In-First-Out,LIFO)的数据结构,即最后放入栈中的元素会最先被弹出;而队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,即最先放入队列中的元素会最先被取出。
栈只能从表尾插入和删除元素,而队列只能在表头插入和在表尾删除元素。
一个只能使用队列不能使用栈的业务场景是:假设你有一个火车站,你需要让乘客上车。你可以使用队列来实现这个场景。首先,你需要在车站入口处放置一个队列。然后,每当有新的乘客到来时,他们必须站在队列的末尾。当火车到达时,车站工作人员会从队列的头部移除第一个乘客并将其带上火车。这样,我们就可以确保每个乘客都能够按照他们到达的顺序上车。
18、线性表和链表区别
线性表和链表是两种常见的数据结构。线性表是一种具有相同数据类型的n (n>0)个数据元素的有限序列,它的顺序存储结构就是顺序表,链式存储结构就是链表。链表又包括单向链表、双向链表、循环链表、静态链表等。顺序表可以实现随机访问,随机存取,占用连续的存储空间,空间利用率较高,但是顺序表的插删,需要移动多个元素。而链表则可以实现任意插入和删除操作,不需要移动元素,但是只能从头节点开始遍历,访问某个节点时需要从头节点开始遍历整个链表 。
19、JAVA线程安全
Java中的线程安全是指在多线程环境下,保证程序的正确性。Java语言中各种操作共享的数据有5种类型:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。其中,不可变的对象一定是线程安全的,不需要再采取任何的线程安全保障措施。只要能正确构建一个不可变对象,该对象永远不会在多个线程之间出现不一致的状态。
如果您想要确保Java程序是线程安全的,可以考虑以下几个方面:使用synchronized关键字、ReentrantLock类、Semaphore类等同步机制;使用volatile关键字;使用原子类;使用ThreadLocal类等 。
20、锁的类型,你用过哪些锁?
锁的类型有很多种,其中包括公平锁和非公平锁。Java ReetrantLock中的公平锁和非公平锁可以通过构造函数指定。此外,还有乐观锁和悲观锁等类型。
21、乐观锁和悲观锁
乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据 。
22、git常见命令?合分支、回滚版本
以下是一些常用的git命令:
git init:初始化一个新的git仓库。
git clone:克隆一个已有的git仓库。
git add:将文件添加到暂存区。
git commit:提交暂存区中的文件到本地仓库。
git status:查看当前仓库的状态。
git diff:查看工作区与暂存区之间的差异。
git log:查看提交历史记录。
git branch:创建、列出、删除分支。
git checkout:切换分支或恢复工作区文件。
git merge:合并分支。
git rebase:变基操作,将一个分支的修改应用到另一个分支上。
git reset:重置当前分支到指定状态。
23、淘宝买东西页面白屏?说一下你的排查思路?
首先可以抓包看前端or后端问题:
24、出现过的线上问题?排查思路?
线上问题的排查思路因问题而异,但是一般可以从以下几个方面入手:
25、扫码支付case
以下是扫码支付测试用例的设计:
26、性能测试指标?常用性能测试工具?
性能测试指标包括:
常用的性能测试工具有:
27、算法题:求最长公共子串(写的有点问题,面试官说不用写了┭┮﹏┭┮)
def longest_common_substring(s1, s2): m = len(s1) n = len(s2) # 初始化二维数组 dp = [[0] * (n + 1) for i in range(m + 1)] max_len = 0 end = 0 # 动态规划求解 for i in range(1, m + 1): for j in range(1, n + 1): if s1[i - 1] == s2[j - 1]: dp[i][j] = dp[i - 1][j - 1] + 1 if dp[i][j] > max_len: max_len = dp[i][j] end = i return s1[end - max_len:end]
其中,s1和s2为两个字符串,返回它们的最长公共子串。该算法的时间复杂度为O(mn),空间复杂度为O(mn)。
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,