大家好,放弃后端我是冲测开去小林。
最近有一些同学看到很多大厂都开了春招实习,放弃后端但是冲测开去自己准备的比较晚,比较着急,放弃后端问我有什么快速突击的冲测开去办法?
如果之前基础薄弱的情况下,突击 1-2 个月也比较难进大厂的放弃后端后端的,因为有些底层知识原理,冲测开去得花时间慢慢啃,放弃后端不然一问三不知,冲测开去就寄了。放弃后端
不过可以另辟蹊径,冲测开去不卷后端,放弃后端尝试一下测试开发的冲测开去岗位。
测开的放弃后端面试相比后端简单很多,而且投的人不算多,没有后端卷,获得面试机会的概率更高一些。
在互联网大厂的校招中,测试开发的薪资实际上和后端开的是服务器租用一样的,比如普通档的大厂 offer,都是 22k*16(年薪 35w+)。
测试开发岗会伴随开发+测试类的工作,开发主要是开发一些测试工具来提高测试效率,也会和根据业务团队的需求开发一些工具。
测试开发的面试其实跟后端开发差不多,其实被问的问题不会太细节或者太底层,除此后端的内容之外,还会考察一些测试相关的内容。
比如,如何设计测试用例、黑盒测试和白盒测试有什么区别、手动测试和自动测试有什么区别、api 测试工具怎么用等等。
甚至也会问,为什么要选择做测试开发等之类的问题, 同学们在投递测开岗位的时候,最好提前准备下测试相关的问题。
今天分享2位同学大厂测开的亿华云计算校招面试:快手和滴滴的测开面经。
虽然也会有算法题,但是整体的八股和算法的难度确实会比后端减少了很多,是一个弯道超车进大厂的机会,给想准备测开同学做一个参考。
增加(Insert):用于向数据库表中插入新的数据记录。
SQL语句示例:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);删除(Delete):用于从数据库表中删除符合指定条件的数据记录。
SQL语句示例:DELETE FROM table_name WHERE condition;修改(Update):用于更新数据库表中符合指定条件的数据记录。
SQL语句示例:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;查询(Select):用于从数据库表中检索数据记录。
SQL语句示例:SELECT column1, column2, ... FROM table_name WHERE condition;数据存储方式:
MySQL:数据以表格的形式以行和列的方式存储在磁盘上,支持复杂的关系型数据模型。Redis:数据存储在内存中,因此具有更快的读写速度,但受到内存容量的限制。数据类型:
MySQL:支持各种数据类型,包括整型、浮点型、字符型、云服务器日期型等。Redis:支持丰富的数据类型,如字符串、列表、集合、哈希表、有序集合等,适合用于缓存、消息队列等场景。持久化:
MySQL:支持持久化存储数据,数据可以在磁盘上持久保存。Redis:可以选择是否持久化数据,支持RDB快照和AOF日志两种持久化方式。应用场景:
MySQL:适用于需要复杂查询和事务支持的应用,如企业级应用、电子商务平台等。Redis:适用于对速度要求较高、数据量较小、对数据结构要求较高的场景,如缓存、计数器、实时排行榜等。TCP协议主要通过以下几点来保证传输可靠性:连接管理、序列号、确认应答、超时重传、流量控制、拥塞控制。
连接管理:即三次握手和四次挥手。连接管理机制能够建立起可靠的连接,这是保证传输可靠性的前提。序列号:TCP将每个字节的数据都进行了编号,这就是序列号。序列号的具体作用如下:能够保证可靠性,既能防止数据丢失,又能避免数据重复。能够保证有序性,按照序列号顺序进行数据包还原。能够提高效率,基于序列号可实现多次发送,一次确认。确认应答:接收方接收数据之后,会回传ACK报文,报文中带有此次确认的序列号,用于告知发送方此次接收数据的情况。在指定时间后,若发送端仍未收到确认应答,就会启动超时重传。超时重传:超时重传主要有两种场景:数据包丢失:在指定时间后,若发送端仍未收到确认应答,就会启动超时重传,向接收端重新发送数据包。确认包丢失:当接收端收到重复数据(通过序列号进行识别)时将其丢弃,并重新回传ACK报文。流量控制:接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,就会导致接收端的缓冲区溢出,进而导致丢包。为了避免上述情况的发生,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这就是流量控制。流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。拥塞控制:拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。可以得出,发送端的发送速度,受限于滑动窗口和拥塞窗口中的最小值。拥塞控制方法分为:慢开始,拥塞避免、快重传和快恢复。测试用例1 - 点赞功能正常使用:
步骤:用户进入朋友圈页面,找到一条动态,点击点赞按钮。预期结果:点赞按钮状态变为已点赞,点赞数加一,用户信息显示在点赞列表中。测试用例2 - 取消点赞功能:
步骤:用户进入朋友圈页面,找到已点赞的动态,再次点击点赞按钮。预期结果:点赞按钮状态变为未点赞,点赞数减一,用户信息从点赞列表中移除。测试用例3 - 多用户同时点赞:
步骤:多个用户同时对同一条动态进行点赞操作。预期结果:点赞数正确累加,点赞列表显示所有点赞用户信息。测试用例4 - 点赞数上限限制:
步骤:连续多次点赞同一条动态。预期结果:点赞数达到上限时,无法再进行点赞操作,系统给出相应提示。测试用例5 - 点赞数据同步:
步骤:用户在多端(如手机、电脑)对同一条动态进行点赞操作。预期结果:点赞操作在所有设备上同步更新,保持一致性。测试用例6 - 点赞功能异常处理:
步骤:模拟网络异常或服务器故障时进行点赞操作。预期结果:系统能够正确处理异常情况,保证数据的一致性和完整性。了解,redis属于NoSQL数据库的一种,它主要用来作为缓存、分布式锁、消息中间件等多种用途。
数据存储在内存中,读写速度非常快,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。
SQL数据库,指关系型数据库 - 主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。
关系型数据库存储结构化数据。这些数据逻辑上以行列二维表的形式存在,每一列代表数据的一种属性,每一行代表一个数据实体。
图片
NoSQL指非关系型数据库 ,主要代表:MongoDB,Redis。NoSQL 数据库逻辑上提供了不同于二维表的存储方式,存储方式可以是JSON文档、哈希表或者其他方式。
图片
选择 SQL vs NoSQL,考虑以下因素。
ACID vs BASE
关系型数据库支持 ACID 即原子性,一致性,隔离性和持续性。相对而言,NoSQL 采用更宽松的模型 BASE , 即基本可用,软状态和最终一致性。
从实用的角度出发,我们需要考虑对于面对的应用场景,ACID 是否是必须的。比如银行应用就必须保证 ACID,否则一笔钱可能被使用两次;又比如社交软件不必保证 ACID,因为一条状态的更新对于所有用户读取先后时间有数秒不同并不影响使用。
对于需要保证 ACID 的应用,我们可以优先考虑 SQL。反之则可以优先考虑 NoSQL。
扩展性对比
NoSQL数据之间无关系,这样就非常容易扩展,也无形之间,在架构的层面上带来了可扩展的能力。比如 redis 自带主从复制模式、哨兵模式、切片集群模式。
相反关系型数据库的数据之间存在关联性,水平扩展较难 ,需要解决跨服务器 JOIN,分布式事务等问题。
(责任编辑:域名)