2023 哔哩哔哩笔试题 bilibili笔试 0908
笔试时间:2023年9月9日 秋招
第一题
题目:找到有评级的主播
现给到一张主播收益表,包含主播ID anchor_id、直播场次ID live_id、场次对应收益字段 live_revenue。主播总收益>100可以参与评级,总收益前三对应主播分别获得黄金、白银、青铜评级,如存在多个主播总收益相等,则并列相同评级,不占用下一个评级。请按要求写出SQL语句,筛选黄金、白银、青铜评级主播ID,结果按主播ID倒序排列
样例输入
CREATE TABLE anchor_live_revenue_record (live_id BIGINT PRIMARY KEY COMMENT '直播场次ID' anchor_id BIGINT NOT NULLCOMMENT'主播ID' live_revenue INT NOT NULL COMMENT'直播场次对应收益' ); INSERT INTO anchor_live_revenue record(live_id,anchor_id,live_revenue) VALUES (1,101,50), (2,102,10), (3,102,100), (4,103,105), (5,103,25), (6,104,600)
样例输出
anchor_id
104
103
102
参考题解
SQL:
select anchor_id from (select anchor_id, DENSE_RANK() OVER(ORDER BY sum(live_revenue) DESC) as r from anchor_live_revenue_record group by anchor_id having sum(live_revenue) > 100) as a where r <= 3 order by anchor_id desc
第二题
题目:求不间断子数组的数量
给你一个下标从0开始的整数数组nums。nums 的-个子数组如果满足以下条件,那么它是 不间断的:i,i+1,...,j 表示子数组中的下标。对于所有满足i<=i1,i2 <=j的下标对,都有0<=|nums[i1]- nums[i2]| <= 2;请你返回 不间断子数组的总数目。子数组是一个数组中一段连续非空的元素序列。
1 <= nums.length <= 10^4
样例输入
[3,2,1]
样例输出
6
说明
大小为1的不间断子数组: [3][2][1]。
大小为 2的不间断子数组:[3,2],[2,1]
大小为3的不间断子数组:[3,2,1]。
不间断子数组的总数目为3+2+1=6
参考题解
采用一个set保存遍历的元素,如果出现最大元素-最小元素大于2的情况,那么就收缩左边界;同时累加 以i为右端点的数组数目;
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.ArrayList; import java.util.List; import java.util.TreeSet; class Solution { public int subArrNum(List<Integer> arr) { int n = arr.size(); int ans = 0; TreeSet<Integer> st = new TreeSet<>(); for (int i = 0, l = 0; i < n; ++i) { st.add(arr.get(i)); while (st.last() - st.first() > 2) { st.remove(arr.get(l));
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023 秋招笔试题汇总解析 文章被收录于专栏
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。