快手测开二面 |凉经
1、自我介绍
2、手撕代码 生成给定数量n对括号的所有有效组合(使用递归方法解决 比较简单)
深挖项目
3、 说一说你这个系统的主要功能
4、 Selenium常用的一些选择器有哪些
5、 你这个项目启动的浏览器是个什么浏览器?是有头的还是无头的?是chorm还是firebox呢
6、 项目中人员具体怎么去分工测试用例编写的
7、 项目中发现的bug?怎么解决的?
8、 第二个项目你负责的模块是什么?
9、 对于人事管理模块用到什么方法?比较难的开发点是什么?
10、 并发控制和数据执行具体是怎么去解决它的呢?
11、 怎么去实现分布式锁?在什么时候请求?
12、 你分布式锁里面存的比如说它的键值是什么呢?什么场景会去读它
13、 比如你在更新薪资的时候去上锁那你上锁的主体是什么呢?
14、 如果不用Redis就是分布式锁那有其他方法吗?
15、 具体阐述一下乐观锁的原理
16、 个人的未来打算
17、 对base地有要求吗
反问
1、 岗位期待是什么?岗位的核心指标或者说关键的目标是什么?
2、 如果我加入快手的话优先解决的是什么问题?负责哪些模块?
总体45min左右,答得不是很好,感觉凉了,期待有三面吧🙏
更新:不出意外二面挂了,流程中止了,再看看其他公司吧
2、手撕代码 生成给定数量n对括号的所有有效组合(使用递归方法解决 比较简单)
深挖项目
3、 说一说你这个系统的主要功能
4、 Selenium常用的一些选择器有哪些
5、 你这个项目启动的浏览器是个什么浏览器?是有头的还是无头的?是chorm还是firebox呢
6、 项目中人员具体怎么去分工测试用例编写的
7、 项目中发现的bug?怎么解决的?
8、 第二个项目你负责的模块是什么?
9、 对于人事管理模块用到什么方法?比较难的开发点是什么?
10、 并发控制和数据执行具体是怎么去解决它的呢?
11、 怎么去实现分布式锁?在什么时候请求?
12、 你分布式锁里面存的比如说它的键值是什么呢?什么场景会去读它
13、 比如你在更新薪资的时候去上锁那你上锁的主体是什么呢?
14、 如果不用Redis就是分布式锁那有其他方法吗?
15、 具体阐述一下乐观锁的原理
16、 个人的未来打算
17、 对base地有要求吗
反问
1、 岗位期待是什么?岗位的核心指标或者说关键的目标是什么?
2、 如果我加入快手的话优先解决的是什么问题?负责哪些模块?
总体45min左右,答得不是很好,感觉凉了,期待有三面吧🙏
更新:不出意外二面挂了,流程中止了,再看看其他公司吧
全部评论
哪个部门呀
这个难度有点高
我挂过了
我靠,这难度好高
佬约三面了吗
佬 秋招上岸了吗
很难呀
佬 二面完几天通知挂的 我都二面完3天了没动静 官网也不显示挂 难受
相关推荐
点赞 评论 收藏
分享
一笑而过2222:一、Java 中常用集合
1. List :
- ArrayList :基于动态数组实现,随机访问元素速度快,插入和删除元素在中间位置时效率较低。适用于频繁读取操作,较少插入和删除操作的场景。
- LinkedList :基于双向链表实现,插入和删除元素效率高,但随机访问元素速度较慢。适用于频繁插入和删除操作的场景。
2. Set :
- HashSet :基于哈希表实现,不保证元素的顺序,元素唯一。适用于需要快速查找和存储不重复元素的场景。
- LinkedHashSet :继承自 HashSet ,维护了一个链表来记录插入顺序,元素唯一且可按照插入顺序遍历。
- TreeSet :基于红黑树实现,元素自动排序,可按照特定顺序遍历元素。适用于需要对元素进行排序的场景。
3. Map :
- HashMap :基于哈希表实现,不保证元素的顺序,键值对唯一。适用于快速查找、插入和删除键值对的场景。
- LinkedHashMap :继承自 HashMap ,维护了一个链表来记录插入顺序,可按照插入顺序遍历键值对。
- TreeMap :基于红黑树实现,键自动排序,可按照特定顺序遍历键值对。适用于需要对键进行排序的场景。
二、项目难点
1. 性能优化:随着数据量的增加和用户访问量的增长,可能需要对系统进行性能优化,包括数据库查询优化、缓存策略调整、代码优化等。
2. 并发控制:在高并发环境下,需要处理多个用户同时访问和操作数据的情况,确保数据的一致性和完整性。例如,在购物车场景中,多个用户同时添加或删除商品时,需要防止数据冲突。
3. 安全问题:保护用户数据的安全是项目的重要难点之一。需要采取措施防止 SQL 注入、跨站脚本攻击等安全漏洞,同时确保用户密码等敏感信息的安全存储。
4. 系统集成:如果项目涉及多个系统的集成,如与第三方支付系统、物流系统等集成,可能会面临接口兼容性、数据格式转换等问题。
5. 需求变更:在项目开发过程中,需求可能会发生变化,需要及时调整设计和开发计划,确保项目按时交付。
三、项目的 Redis 和 MySQL 如何保证一致性,这个设计有什么问题
1. 保证一致性的方法:
- 先写 MySQL,再写 Redis:在数据更新时,先将数据写入 MySQL,成功后再将数据写入 Redis。读取数据时,优先从 Redis 读取,如果 Redis 中没有数据,则从 MySQL 读取并写入 Redis。这种方法可以保证数据的最终一致性,但在写入 Redis 失败时可能会导致数据不一致。
- 采用事务:在一些场景下,可以使用数据库事务来保证 MySQL 和 Redis 的操作原子性。例如,在更新数据时,可以将 MySQL 和 Redis 的更新操作放在一个事务中,确保要么同时成功,要么同时失败。
- 监听数据库变更:可以使用数据库的 binlog 或者消息队列来监听数据库的变更,当数据库中的数据发生变化时,自动更新 Redis 中的数据。这种方法可以实时保证数据的一致性,但实现起来相对复杂。
2. 可能存在的问题:
- 性能问题:频繁地在 MySQL 和 Redis 之间进行数据同步可能会影响系统的性能,特别是在高并发场景下。
- 数据丢失风险:如果在写入 Redis 失败时没有进行适当的处理,可能会导致数据丢失。
- 复杂性增加:为了保证一致性,需要引入额外的机制和代码,增加了系统的复杂性和维护成本。
四、购物车测试点设计
1. 功能测试:
- 添加商品:验证能否成功将商品添加到购物车,添加的商品数量是否正确,重复添加同一商品是否正确处理。
- 删除商品:验证能否成功删除购物车中的商品,删除单个商品和批量删除商品是否正常。
- 修改商品数量:验证能否成功修改购物车中商品的数量,数量为 0 时是否自动删除商品。
- 计算总价:验证购物车中商品的总价计算是否正确,包括商品价格、数量、优惠等因素。
- 清空购物车:验证能否成功清空购物车。
2. 性能测试:
- 响应时间:测试添加、删除、修改商品等操作的响应时间,确保在高并发情况下也能快速响应。
- 并发测试:模拟多个用户同时操作购物车,验证系统的并发处理能力。
3. 兼容性测试:
- 不同浏览器:测试购物车在不同浏览器上的功能和显示是否正常。
- 不同设备:测试购物车在手机、平板、电脑等不同设备上的兼容性。
4. 安全测试:
- 数据加密:验证购物车中的商品信息和用户数据是否进行了加密传输和存储。
- 权限控制:验证只有授权用户才能访问和操作自己的购物车。
五、项目的热榜 Redis 怎么实现的
1. 使用 Redis 的有序集合(Sorted Set):可以将热榜中的项目作为有序集合的元素,项目的热度值作为有序集合的分值。每次有用户访问或操作某个项目时,更新该项目的热度值,并将其重新插入到有序集合中。这样,有序集合就可以按照热度值自动排序,实现热榜的功能。
2. 定期更新:可以设置一个定时任务,定期更新热榜数据。例如,每隔一段时间(如 1 小时),重新计算每个项目的热度值,并更新到 Redis 中。
3. 缓存策略:为了提高性能,可以将热榜数据缓存到内存中,减少对数据库的访问。可以使用 Redis 的缓存机制,将热榜数据缓存一定时间,当数据发生变化时,自动更新缓存。
4. 数据持久化:为了防止数据丢失,可以将 Redis 中的热榜数据定期持久化到数据库中。这样,即使 Redis 出现故障,也可以从数据库中恢复热榜数据。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享