网站建设可用性的五个标准,手机网站打不开的解决方法,高端网站设计怎么样,wordpress数字分页var code 7022f444-ded0-477c-9afe-26812ca8e7cb
背景
笔者在刷B站的时候#xff0c;看到了一个关于面试的实录#xff0c;前半段是八股文#xff0c;后半段是笔试部分#xff0c;感觉笔试部分的题目还是挺有意思的#xff0c;特此记录一下。
笔试部分 问…var code 7022f444-ded0-477c-9afe-26812ca8e7cb
背景
笔者在刷B站的时候看到了一个关于面试的实录前半段是八股文后半段是笔试部分感觉笔试部分的题目还是挺有意思的特此记录一下。
笔试部分 问题1SQL 这题考的是 union all 的用法在这题中就是合并两个查询的结果但是要注意union all 合并完的效果是不做任何改变直接拼在一起这个要和 union 区分开union 是会对合并的结果进行去重的在性能上要劣于 union all最有意思的还是这个第二问它需要在这个初始的 SQL 上做改变来实现查出 A 表的 a 值总次数和 B 表的 a 值总次数我一开始看的很是懵逼后来想想肯定不能在 select 这个方面是做文章而这段 SQL 的特别之处就是使用了 union all 了往这方面去向可以得到这样一段 SQL SELECT a AS table_name, COUNT(a) AS a_count FROM a
UNION ALL
SELECT b AS table_name, COUNT(a) AS a_count FROM b;查询的结果确实是符合要求的也结合了 union all 的用法后续视频里的面试管并没有继续说这个 SQL 题了这一问就也当作 结束了吧然后就是最后一问如果清楚 union all 的用法那么 count(distinct a) 就是对合并的结果去重了相当是用了 union 了所以本质就是问 union 和 union all 的区别和联系画个图就很好理解了 问题2算法题 这是字节很久之前的笔试题想不到现在仍然在问
#include bits/stdc.husing namespace std;bool cinT false; // 多组数据typedef long long LL;const int N 1e5 10;int n, m, ans;
vectorint nums;
string s;void dfs(int u, int p, bool eq) {if(u s.size()) {if(p n) ans max(ans, p);return ;}for(int i 0; i m; i ) {if(eq nums[i] s[u] - 0) continue;if(eq nums[i] s[u] - 0 u s.size() - 1) continue;dfs(u 1, p * 10 nums[i], eq nums[i] s[u] - 0);}
}void solve() {cin n; // 给定的数字ncin m; // 给定数字集大小for(int i 0; i m; i ) {int x;cin x;nums.push_back(x);}s to_string(n);// 答案的位数比 n 小一位int mxV 0;for(int i 0; i m; i ) mxV max(mxV, nums[i]);ans stoi(string(m - 1, 0 mxV));// 爆搜的结果的位数固定为 n 的位数dfs(0, 0, true);cout ans \n;
}int main() {cin.tie(0); cout.tie(0);std::ios::sync_with_stdio(false);int T 1;if(cinT) cin T;while(T --) {solve();}return 0;
}