第一题我直接暴力,过了 0.35
点赞 评论

相关推荐

面试官很友善, 对项目是刨根问底,对项目提出的缺点令人难堪, 只能不断道歉。【面试问题】🎯 **自我介绍与项目概览**1. 请用 3-4 分钟做一个简洁的自我介绍,突出技术栈与研究方向即可,项目细节稍后展开。🧠 **算法与代码能力**2. 🔢 给定一个整数数组,要求用 O(n) 时间、O(1) 额外空间输出每个位置“除自身外所有元素的乘积”,请阐述思路并现场共享屏幕写出 C++ 代码。3. 📈 给定一个整数数组,说明如何转化为最长非递减子序列问题,并现场共享屏幕写出 C++ 代码。4. ✂️ 针对最长非递减子序列的代码,请进一步压缩中间数组,真正做到 O(1) 额外空间。🔍 **C/C++ 语言与内存管理**5. 🆚 请比较 C++ 的 new/delete 与 C 的 malloc/free 的差异。6. 🧩 malloc/free 的底层实现流程是什么?7. 🔎 实际项目中如何定位内存泄漏?如果没有 Valgrind 这类工具,如何实现内存泄漏检测器?8. 💥 描述一种“栈崩但栈顶代码无异常”的实际场景,并解释其成因与排查思路。🛰 **xxx项目深挖**9. 🌐 概述你在观测平台项目中的角色、系统功能与业务价值。10. 🧱 画出数据流向图并说明11. ⚖️ 为什么引入 Redis Stream 作为消息队列?削峰填谷的具体策略与降级方案是什么?如果消费速度持续低于生产速度,如何避免 Redis 内存爆掉?12. 🗂️ Redis Stream 与 List、Pub/Sub 在消息队列场景下的优劣对比;ACK 机制与消费组在内部是如何实现的?13. 🔄 如果去掉 Redis Stream, 直连数据库,你会如何重新设计流量控制与降级逻辑?问有没有看过 redis 源码? 没看过为什么要用消息队列?  面试官觉得完全没必要。只能不断道歉。了解过 stream 的实现吗?  没有📁 **xxx项目深挖**16. 🔧 为何不用 HTTP/RPC?  回答不了, 实际上项目只是玩票。17. ⏳ 当前实现中有没有通知机制?18. 🌐 如果改用 RESTful API,用 URL 路径同样模拟层级结构,不是也可以吗?  确实是。玩具项目, 和生产实际不太相关。
查看19道真题和解析
点赞 评论 收藏
分享
0816 京东笔试答案第一题, 减少逆序对数量对于每个 ai, 找到 所有 aj = a[i] + 1 且 j < i 的 j, 则对于选择 j < L <= i 的 L 贡献 +1, 然后做一个前缀和取最大值即可代码```#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <unordered_map>using namespace std;void solve(){int n; cin >> n;vector<int> a(n + 10, 0), b(n + 10, 0), c(n + 10, 0);unordered_map<int, vector<int>> pos;for (int i = 1; i <= n; i ++){cin >> a[i];}for (int i = 1; i <= n; i ++){int v =a[i];int t = v + 1;if (pos.find(t) != pos.end()){for (int j : pos[t]){if (j < i){b[j + 1] ++;b[i + 1] --;}}}pos[v].push_back(i);}int ans = 0;int tmp = 0;for (int i = 1; i <= n; i ++){tmp += b[i];ans = max(ans, tmp);}cout << ans << endl;}int main(){int _ = 1;cin >> _;while (_ --){solve();}}```第二题, 跳水打分解法类似求区间最值, 维护每个长度为 m 的区间的最大值和最小值, 然后遍历过去即可算出答案。代码```#include <bits/stdc++.h>#define PII pair<long, long>#define x first#define y secondusing namespace std;int main(){int n, m;cin >> n >> m;priority_queue<PII> maxPq;priority_queue<PII, vector<PII>, greater<PII>> minPq;vector<long long> a(n + 10);double ans = 0;long long tmp = 0;for (int i = 1; i <= n; i ++) cin >> a[i];for (int i = 1; i <= m; i ++){maxPq.push({a[i], i});minPq.push({a[i], i});tmp += a[i];}long long minV = minPq.top().x;long long maxV = maxPq.top().x;ans = double(tmp - minV - maxV) / (m - 2);int ans2 = 1;int l = 1, r = m;while (r < n){// cout << ans << endl;tmp -= a[l]; l ++;r ++; tmp += a[r];minPq.push({a[l], l}); minPq.push({a[r], r});maxPq.push({a[l], l}); maxPq.push({a[r], r});while (minPq.top().y < l) minPq.pop();while (maxPq.top().y < l) maxPq.pop();if ((double(tmp - minPq.top().x - maxPq.top().x) / (m - 2)) > ans){ans = double(tmp - minPq.top().x - maxPq.top().x) / (m - 2);ans2 = l;}}cout << ans2 << endl;}```
投递京东等公司10个岗位
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务