8.15pdd服务端一面
- 论文项目
- MIPS32位CPU
- 如何处理中断
- 线程状态有哪些
- 新建状态 当用new操作符创建一个线程时,此时程序还没有开始运行线程中的代码。
- 线程间通信方式、同步方式
- 编程题有20分钟左右时间
给定一个总时间11,和修复每一个机器的消耗的时间数组[1, 9, 3, 1, 12],可以选择跳过一个机器,从左到右修复机器,求跳过哪一个机器 ,能使得修复的机器数量最多。
输入:5 [1 9 3 1 12] 11
输出:2
太菜了,每次题目都往dp想的时候都没做出来,拼越计划感觉凉了,这个题目明明就简单的贪心就好了,开始又不去想着暴力深搜。
#include<iostream>
#include<vector>
using namespace std;
/*
5 11 1 9 3 1 12
*/
int main() {
int N, total;
cin>>N>>total;
vector<int> data(N,0);
for (int i = 0; i < N; ++i) cin >> data[i];
int curr = 0, cindex = 0;
for (int i = 0; i < N; ++i) {
if (curr + data[i] < total) {
if (data[i] > data[cindex]) {
curr = curr + data[cindex];
cindex = i;
} else {
curr += data[i];
}
} else {
if(curr + data[cindex] < total) {
curr = curr + data[cindex];
cindex = i;
} else {
cout<<cindex+1<<endl;
return 0;
}
}
}
return -1;
}
8.22 拼多多服务端二面
1.说一下一些概念
PS腾讯也喜欢问这道题,前一天还让实现了LRU hash+双向链表
问:LRU\LFU
答:操作系统页面替换策略,LRU是指的最近未使用策略,将最久没有被使用的,再最先调入页表中的页面替换掉 LFU是最近使用频率最小的 应该是采用hash+堆来实现 ,如何实现O(1)的put?
页面是指的什么页面?
讲了下虚拟内存,然后到线性地址(虚拟地址)到物理地址转换的时候需要通过页表来转换,页表满了需要替换
2.依赖注入是什么 不知道
3.正则表达式怎么实现
4.算法题
山脉数组求山脉的最大长度 山脉长度要>=3 并且 是< 和>的山坡
滑动窗口
分两个阶段扩充右边界 第一阶段 a[i]<a[i+1] 碰到一个不满足的时候进入第二阶段 第二阶段 a[i]>a[i+1]
如果经过了一个山坡 l = r 否则的话是 ++l;
要自己写测试样例 大部门都过了 子集手贱 两个山坡加中间平稳的有bug
222 输出0
12321 输出5没问题
123211234321 输出的是8,应该是7