一面(电话面):
1、 自我介绍
2、 项目的相关问题
3、 C++基础;
1) 进程和线程区别;
2) 虚函数讲一下;
3) 全局变量、局部变量、静态变量讲一下?作用域?生命周期?
4) 数组和链表的区别;
5) Vector的扩容机制
4、 代码
1) 输入为一组权重,输出一个随机数,要求随机数的出现概率与权重成正比;
使用前缀和,输出随机数落在的范围对应的索引。
问有什么其它方法?提示用树(不知道。。)
2) 找链表倒数第k个节点;
3) 连续数组最大和
5、 linux问题
1) 如何查找一个进程;
2) 如何统计一个文本中某一个单词的出现次数
6、 以后是想做算法类的,还是走开发。
二面:55min
1、 自我介绍
2、 有实习不?没有。研究过什么模型?。。开发岗,问题不大
3、编程题(后续优化)
4、讲一下项目,有什么难点?(面试官说:感觉没有难点,是工作量的问题。。)
1)protoc buffer原理,怎么压缩的?不会
2)。。。
5、基础知识
1)C++的虚函数
2)C++的。。
6、设计模式
1)用过什么设计模式?
2)适配器模式讲一下?
6、场景题
1)一个大文件,如何统计行数(先分割,再多线程统计。分布式,多服务器统计。但是不是很满意。。)
2)大量数据下,如何统计最大的5个数。(最大堆或者快速选择。内存放不下,hash思想。但是不是很满意。。)
7、会大数据不?不会。分布式?了解点,但不深。深度学习呢?研一研究,有点懵。。。
8、平常看什么?
9、反问
总结:知识面太窄。。。。。凉凉
// 你必须定义一个 `main()` 函数入口。
// 题目[二进制求和]:给定两个二进制字符串,返回它们的和(用二进制表示)。输入a=11,b=1,输出100
// 给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少。输入wt=[2,2,6,5,4],value=[6,3,5,4,6],W=10,输出15
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//dp[i][j]=max(dp[i-1][j-wt[i]]+value[i] if j>=wt[i],dp[i-1][j])
//[1,2,3,4]
//[2,3,4,5]
//[1,2,4,5]
int getMaxValue(const vector<int>&wt,const vector<int>&value,int W){
if(wt.size()<1) return 0;
vector<int>dp(W+1);
for(int i=0;i<wt.size();++i){
for(int j=W;j>=0;--j){
if(j>wt[i])
dp[j]=max(dp[j-wt[i]]+value[i],dp[j]);
}
}
return dp.back();
}
string add(const string& num1,const string& num2){
int i=num1.length()-1;
int j=num2.length()-1;
string res="";
int carry=0;
while(i>=0||j>=0||carry>0){
if(i>=0) carry+=num1[i--]-'0';
if(j>=0) carry+=num2[j--]-'0';
res=(carry%2==1?"1":"0")+res;
carry/=2;
}
return res;
}
int main()
{
vector<int>wt={2,2,6,5,4};
vector<int>value={6,3,5,4,6};
cout<<getMaxValue(wt,value,10)<<endl;
return 0;
}
三面(部门经理面):
1、 自我介绍;
2、 项目内容;
3、 3万个黑名单,如何过滤大量的文本数据(一行一行过滤)
4、 目前offer,以及如何选择;低薪核心岗位和高薪边缘岗位如何选择?
5、 未来发展;
6、 怎么不实习?可以实习吗?
7、 忘了。。
全部评论
(1) 回帖