百度搜索推荐部门
百度一面面经
C++基础 static virturl inline vector set map list 模板 构造函数有哪些 引用 指针 智能指针等
Linux 进程线程、看进程、剩余空间 用过什么调试方法 core错误
python 字符串分割,写代码(我不会,跳过了,不该写了解python)
算法 反转链表 前序遍历 跳台阶 单例模式
计算机网络 TCP
百度二面
编程题
二进制加法,输入输出均为string
背包问题,容量K,N个物品,对于第i个物品,weight[i],value[i],求最大价值
linux内存管理,怎么找到文本中的几行
堆,怎么构建调整等
topK问题,10亿取最大的10个
学习能力怎么样,用过什么算法,看什么书,机器学习和hardoop方面懂吗
三面很忙的样子,鸽了我几次,技术方面问的不多,有道场景题,有份很大的黑名单,对邮件过滤
C++基础 static virturl inline vector set map list 模板 构造函数有哪些 引用 指针 智能指针等
Linux 进程线程、看进程、剩余空间 用过什么调试方法 core错误
python 字符串分割,写代码(我不会,跳过了,不该写了解python)
算法 反转链表 前序遍历 跳台阶 单例模式
计算机网络 TCP
百度二面
编程题
二进制加法,输入输出均为string
背包问题,容量K,N个物品,对于第i个物品,weight[i],value[i],求最大价值
linux内存管理,怎么找到文本中的几行
堆,怎么构建调整等
topK问题,10亿取最大的10个
学习能力怎么样,用过什么算法,看什么书,机器学习和hardoop方面懂吗
三面很忙的样子,鸽了我几次,技术方面问的不多,有道场景题,有份很大的黑名单,对邮件过滤
拼多多
一面 项目和c++问的挺久的
linux read想读50个字节,读到20就返回了,可能是什么原因,加载磁盘文件的过程,中断,accept,select epoll, 一些linux命令,
代码 实现字符串添加操作(底层实现自己的string,用数组),最长公共子序列
反问(搜索大部门,在线c++多,离线java多,还用到机器学习等,地点上海)
linux read想读50个字节,读到20就返回了,可能是什么原因,加载磁盘文件的过程,中断,accept,select epoll, 一些linux命令,
代码 实现字符串添加操作(底层实现自己的string,用数组),最长公共子序列
反问(搜索大部门,在线c++多,离线java多,还用到机器学习等,地点上海)
网易雷火
雷火游戏研发工程师(客户端引擎方向)一面,投递的方向不对,他们是搞渲染的
雷火二面 很多矩形(大小位置方向不定,可以预处理),判断点在哪个矩形
求镜面反射的向量,点积和向量表示
游戏寻路如何避开泥泞的路
ctrl+z撤销,ctrl+y还原,定义怎样的数据结构去实现
求镜面反射的向量,点积和向量表示
游戏寻路如何避开泥泞的路
ctrl+z撤销,ctrl+y还原,定义怎样的数据结构去实现
网易杭州研究院
一面
怎么通过kill命令打印进程当前的调用栈?代码要做哪些改动?
signal
coredump文件怎么产生?需要修改什么配置?存放位置是?怎么调试?
docker
RestFul
Linux bridge
VLAN、vxlan
iptables
如果你有一台Linux pc通过一台带路由功能的交换机上联到学校的核心交换机之后连接外网(不考虑拨号或认证问题),当它无法连接外网时,该怎么分析是哪里的问题?
求f(1)
int f(int n)
{
static int i=1;
if(n>=5) return n;
n=n+i;
i++;
return f(n);
}
面试和课程外看的技术书籍
c++ new malloc delete free 指针和引用,static,inline, vector和数组,++前面后面的区别,x=y=z=1, x=++y||z++,后,xyz的值(x=1,y=2,z=1)
linux 递归创建目录,查看进程网络,系统盘满了进程会怎样,看io状态,磁盘负载
计网 dns,路由和桥接,tcp可靠性,拥塞,乱序到达时的确认号
怎么通过kill命令打印进程当前的调用栈?代码要做哪些改动?
signal
coredump文件怎么产生?需要修改什么配置?存放位置是?怎么调试?
docker
RestFul
Linux bridge
VLAN、vxlan
iptables
如果你有一台Linux pc通过一台带路由功能的交换机上联到学校的核心交换机之后连接外网(不考虑拨号或认证问题),当它无法连接外网时,该怎么分析是哪里的问题?
求f(1)
int f(int n)
{
static int i=1;
if(n>=5) return n;
n=n+i;
i++;
return f(n);
}
面试和课程外看的技术书籍
c++ new malloc delete free 指针和引用,static,inline, vector和数组,++前面后面的区别,x=y=z=1, x=++y||z++,后,xyz的值(x=1,y=2,z=1)
linux 递归创建目录,查看进程网络,系统盘满了进程会怎样,看io状态,磁盘负载
计网 dns,路由和桥接,tcp可靠性,拥塞,乱序到达时的确认号
二面
最长的可整合子数组的长度
限定语言:C、Python、C++、Javascript、Python 3、Java、Go
先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数的差的绝对值都为1,或者该数组长度为1,则该数组为可整合数组。例如,[5, 3, 4, 6, 2]排序后为[2, 3, 4, 5, 6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组
给定一个数组arr, 请返回其中最大可整合子数组的长度。例如,[5, 5, 3, 2, 6, 4, 3]的最大可整合子数组为[5, 3, 2, 6, 4],所以请返回5
[要求]
时间复杂度为O(n^2)O(n2),空间复杂度为O(n)O(n)
示例1
输入
[5,5,3,2,6,4,3]
输出
5
限定语言:C、Python、C++、Javascript、Python 3、Java、Go
先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数的差的绝对值都为1,或者该数组长度为1,则该数组为可整合数组。例如,[5, 3, 4, 6, 2]排序后为[2, 3, 4, 5, 6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组
给定一个数组arr, 请返回其中最大可整合子数组的长度。例如,[5, 5, 3, 2, 6, 4, 3]的最大可整合子数组为[5, 3, 2, 6, 4],所以请返回5
[要求]
时间复杂度为O(n^2)O(n2),空间复杂度为O(n)O(n)
示例1
输入
[5,5,3,2,6,4,3]
输出
5
新浪微博
一面
TCP建立连接断开连接、socket api、select epoll、水平触发边沿触发、c++11特性
## 请在下方描述你的面试题内容( 支持Markdown )
1. 64位操作系统char *p = "123",sizeof(p) = 8 strlen(p) = 3 sizeof(*p) = 1
2. 说明含义
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int *p[3];
(5)int(*ptr)[3];
(6)int*(*ptr)[4];
A a[4], b,*p; 构造几次
struct Test_B
{
char a;
int c;
char b;
};字节对齐
5. 手写一个bitmap/memcpy/shared_ptr智能指针
6. 二叉树后序遍历
1. 64位操作系统char *p = "123",sizeof(p) = 8 strlen(p) = 3 sizeof(*p) = 1
2. 说明含义
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int *p[3];
(5)int(*ptr)[3];
(6)int*(*ptr)[4];
A a[4], b,*p; 构造几次
struct Test_B
{
char a;
int c;
char b;
};字节对齐
5. 手写一个bitmap/memcpy/shared_ptr智能指针
6. 二叉树后序遍历
二面
详细的问了项目,然后写了个图的dfs
美团到店事业群后台
记录下没答好的
内存泄漏和内存溢出
vim 全部替换、部分替换
前序中序后序,的实际应用
数据库一致性、锁
实现转账充值提现,需要考虑哪些点
5和3的桶,装4升水
三个点落在一个半圆上的概率
内存泄漏和内存溢出
vim 全部替换、部分替换
前序中序后序,的实际应用
数据库一致性、锁
实现转账充值提现,需要考虑哪些点
5和3的桶,装4升水
三个点落在一个半圆上的概率
编程题(面试官说太难了,换了好几次题,实际写的是最后一个)
生产口罩:
牛妹是一家口罩厂家的老板,由于现在疫情严重,牛妹想重新分配每条生产线上的人数来使得能生产的口罩最多。
牛妹所在的公司一共有mm名员工,nn条生产线(0.....n-1),每条生产线有strategy[i].size种人数安排策略。例如:33个人在aa生产线上,aa生产线每天生产88个口罩;55个人在aa生产线上,每天aa生产线能生产1515个口罩。
牛妹想知道通过合理的策略安排最多每天能生产多少口罩?(可以不用将所有员工都分配上岗,生产线可以选择闲置)
输入:
给定n,mn,m,strategystrategy数组
1 \leq n,m \leq 2*10^{3}1≤n,m≤2∗10
3
strategy[i].size \ge 1 , \sum_{i=0}^{n-1}strategy[i].size \leq 3000strategy[i].size≥1,∑
i=0
n−1
strategy[i].size≤3000
1 \leq strategy[i][j].x \leq 2000,1 \leq strategy[i][j].y \leq 30001≤strategy[i][j].x≤2000,1≤strategy[i][j].y≤3000
strategy[i][j].x表示人数,strategy[i][j].y表示能生产的口罩数
输出:
返回每天最大的口罩生产数量
示例1
输入
3,5,[[(1,3),(2,4)],[(3,4),(4,4)],[(8,8)]]
输出
8
说明
样例解释: 11号生产线采用策略22,22号生产线采用策略11,33号生产线不生产
可见的山峰对数量
一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2->1->3 方向叫作 last 方向(顺时针)。
山峰 A 和 山峰 B 能够相互看见的条件为:
1. 如果 A 和 B 是同一座山,认为不能相互看见。
2. 如果 A 和 B 是不同的山,并且在环中相邻,认为可以相互看见。
3. 如果 A 和 B 是不同的山,并且在环中不相邻,假设两座山高度的最小值为 min。如果 A 通过 next 方向到 B 的途中没有高度比 min 大的山峰,或者 A 通过 last 方向到 B 的途中没有高度比 min 大的山峰,认为 A 和 B 可以相互看见。
问题如下:
给定一个不含有负数且没有重复值的数组 arr,请问有多少对山峰能够相互看见?
输入描述
第一行一个整数 T,表示测试数据的组数。
每组数据的第一行有三个数字 n, p, m,其中 n 表示 山峰的数量,
山峰的高度数组等于 1 - p 的 p! 个全排列按字典序排序后的第 m 个全排列的前 n 项。
输出描述
输出一行一个整数表示答案。
示例1
输入
1
5 5 2
输出
7
说明
1-5 的全排列排序后的第二个排列 为 1 2 3 5 4
一样的水
有n个水桶,第i个水桶里面水的体积为Ai,你可以用1秒时间向一个桶里添加1体积的水。
有q次询问,每次询问一个整数pi,你需要求出使其中pi个桶中水的体积相同所花费的最少时间。
对于一次询问如果有多种方案,则采用使最终pi个桶中水的体积最小的方案。
示例1
输入
4,3,[1,2,3,4],[2,2,4]
输出
[1,0,5]
说明
第一次:花费一秒变为 2 2 3 4
第二次:已经存在两个水的体积一样的桶
第三次:花费五秒从2 2 3 4变为4 4 4 4
翻转字符串
给定字符类型的数组chas,请在单词间做逆序调整。只要做到单词的顺序逆序即可,对空格的位置没有要求。
输入描述
输入一行只含字母和空格的字符串,代表chas(1 \leq length_{chas} \leq 10^5)(1≤length chas ≤10^5)。
输出描述
输出一行字符串,代表逆转顺序后的字符串。
示例1
输入
i am a student
输出
i ma a tneduts
牛妹所在的公司一共有mm名员工,nn条生产线(0.....n-1),每条生产线有strategy[i].size种人数安排策略。例如:33个人在aa生产线上,aa生产线每天生产88个口罩;55个人在aa生产线上,每天aa生产线能生产1515个口罩。
牛妹想知道通过合理的策略安排最多每天能生产多少口罩?(可以不用将所有员工都分配上岗,生产线可以选择闲置)
输入:
给定n,mn,m,strategystrategy数组
1 \leq n,m \leq 2*10^{3}1≤n,m≤2∗10
3
strategy[i].size \ge 1 , \sum_{i=0}^{n-1}strategy[i].size \leq 3000strategy[i].size≥1,∑
i=0
n−1
strategy[i].size≤3000
1 \leq strategy[i][j].x \leq 2000,1 \leq strategy[i][j].y \leq 30001≤strategy[i][j].x≤2000,1≤strategy[i][j].y≤3000
strategy[i][j].x表示人数,strategy[i][j].y表示能生产的口罩数
输出:
返回每天最大的口罩生产数量
示例1
输入
3,5,[[(1,3),(2,4)],[(3,4),(4,4)],[(8,8)]]
输出
8
说明
样例解释: 11号生产线采用策略22,22号生产线采用策略11,33号生产线不生产
可见的山峰对数量
一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2->1->3 方向叫作 last 方向(顺时针)。
山峰 A 和 山峰 B 能够相互看见的条件为:
1. 如果 A 和 B 是同一座山,认为不能相互看见。
2. 如果 A 和 B 是不同的山,并且在环中相邻,认为可以相互看见。
3. 如果 A 和 B 是不同的山,并且在环中不相邻,假设两座山高度的最小值为 min。如果 A 通过 next 方向到 B 的途中没有高度比 min 大的山峰,或者 A 通过 last 方向到 B 的途中没有高度比 min 大的山峰,认为 A 和 B 可以相互看见。
问题如下:
给定一个不含有负数且没有重复值的数组 arr,请问有多少对山峰能够相互看见?
输入描述
第一行一个整数 T,表示测试数据的组数。
每组数据的第一行有三个数字 n, p, m,其中 n 表示 山峰的数量,
山峰的高度数组等于 1 - p 的 p! 个全排列按字典序排序后的第 m 个全排列的前 n 项。
输出描述
输出一行一个整数表示答案。
示例1
输入
1
5 5 2
输出
7
说明
1-5 的全排列排序后的第二个排列 为 1 2 3 5 4
一样的水
有n个水桶,第i个水桶里面水的体积为Ai,你可以用1秒时间向一个桶里添加1体积的水。
有q次询问,每次询问一个整数pi,你需要求出使其中pi个桶中水的体积相同所花费的最少时间。
对于一次询问如果有多种方案,则采用使最终pi个桶中水的体积最小的方案。
示例1
输入
4,3,[1,2,3,4],[2,2,4]
输出
[1,0,5]
说明
第一次:花费一秒变为 2 2 3 4
第二次:已经存在两个水的体积一样的桶
第三次:花费五秒从2 2 3 4变为4 4 4 4
翻转字符串
给定字符类型的数组chas,请在单词间做逆序调整。只要做到单词的顺序逆序即可,对空格的位置没有要求。
输入描述
输入一行只含字母和空格的字符串,代表chas(1 \leq length_{chas} \leq 10^5)(1≤length chas ≤10^5)。
输出描述
输出一行字符串,代表逆转顺序后的字符串。
示例1
输入
i am a student
输出
i ma a tneduts
全部评论
(2) 回帖