当前位置: 首页 > news >正文

字节跳动后端面试,笔试部分

var code = "7022f444-ded0-477c-9afe-26812ca8e7cb"

背景

笔者在刷B站的时候,看到了一个关于面试的实录,前半段是八股文,后半段是笔试部分,感觉笔试部分的题目还是挺有意思的,特此记录一下。

笔试部分

  • 问题1:SQL
    在这里插入图片描述
    这题考的是 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++.h>using namespace std;bool cinT = false; // 多组数据typedef long long LL;const int N = 1e5 + 10;int n, m, ans;
vector<int> 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;
}
http://www.lryc.cn/news/95222.html

相关文章:

  • [JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测
  • 区间预测 | MATLAB实现基于QRF随机森林分位数回归时间序列区间预测模型
  • .NET网络编程——TCP通信
  • 【Python机器学习】实验01 Numpy以及可视化回顾
  • vue3-组件中的变化
  • 认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发
  • 数学建模的六个步骤
  • 【计算机组成原理】24王道考研笔记——第二章 数据的表示和运算
  • JQ-6 Bootstrap入门到实战;Bootstrap的(优缺点、安装、响应式容器原理、网格系统、响应式工具类、Bootstrap组件);小项目实践
  • 如何用3D格式转换工具HOOPS Exchange读取颜色和材料信息?
  • [Ubuntu 22.04] 安装docker,并设置镜像加速
  • 如何使用GPT作为SQL查询引擎的自然语言
  • Servlet3.0上传文件
  • 【ARM Cache 系列文章 6 番外篇 – MMU, MPU, SMMU, PMU 差异与关系】
  • NetSuite ERP顾问的进阶之路
  • js 新浏览器打开页面
  • jmeter软件测试实验(附源码以及配置)
  • ZooKeeper原理剖析
  • 【算组合数】CF1833 F
  • Attention详解(自用)
  • pptx转pdf工具类
  • 2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明
  • 论文笔记--Won’t Get Fooled Again: Answering Questions with False Premises
  • 【Django】include app_name和namespace的区别
  • (黑客)自学笔记
  • 【期末课程设计】学生成绩管理系统
  • 【论文笔记】KDD2019 | KGAT: Knowledge Graph Attention Network for Recommendation
  • ES6:基础使用,积累
  • Android端上传文件到Spring Boot后端
  • 使用GGML和LangChain在CPU上运行量化的llama2