到现在差不多也定好了实习。
晚上简单做个总结。可能有些也记不太清楚了。唉我真的很懒很废物。
明天随着其其的新歌重新开始。
本人研二,大学期间拿过区域赛银牌,然后硕士期间发了一篇VLDB。缺项目经验和实习经验。
找的实习是C++研发。
一方面考虑到是自己最右安全感的语言,另一方面想要职业寿命久一些:我的想法是想搞底层、越深入越好。
苏州CMD 软件工程师
微软的面试上主要是看数据结构和算法,面试官会仔细沟通算法的复杂度和详细思路。等沟通通过了再让你开始写。
一二面平行面,进了任意一面可进终面。
给一个数组,找到正好有k个奇数的区间数量。
尺取法。
#include
using namespace std;
const int INF = 0x3f3f3f3f;
const int NMAX = 10010;
int n, k;
int x[NMAX];
int r1[NMAX], r2[NMAX];
int main(){
while(~scanf("%d%d",&n, &k)){
//输入
for(int i=0; i<n; i++){
scanf("%d",&x[i]);
}
//找初始左端点的k个奇数
int cnt=0, r=0;
for(r=0; r<n; r++){
if(x[r]%2) cnt++;
if(cnt==k) break;
}
//无法找到k个奇数
if(r==n){
printf("无法找到-1\n");
continue;
}
//对每个左端点找正好为k个奇数的最右端点
memset(r1,-1,sizeof(r1));
int l=0;
printf("r1:");
while(l<n){
r1[l] = r;
cout<<r1[l]<<" ";
if(x[l]%2){
r++;
while(r<n &&x[r]%2==0)r++;
//已经不再找到k个
if(r==n) break;
}
l++;
}cout<<endl;
//对每个左端点找k+1,确定对0有没有
int tot=0;
printf("r2:");
int rr=r1[0]+1;
while(rr<n && x[rr]%2==0)rr++;
l=0;
while(l<n && r1[l]!=-1){
printf("%d ",rr);
tot += rr-r1[l];
if(x[l]%2){
rr++;
while(rr<n &&x[rr]%2==0)rr++;
}
l++;
}cout<<endl;
// for(int i=0; i
// if(r1[i]<0){
// break;
// }
// int rr=r1[i]+1;
// while(rr
// cout<
// tot+=rr-r1[i];
// }cout<
printf("tot:%d\n", tot);
}
return 0;
}
给一个map,其中有0有1,0是海岸,1是陆地。
离陆地最远的海洋是多远?
bfs把所有陆地放入其中。
#include
using namespace std;
const int INF = 0x3f3f3f3f;
const int NMAX = 1010;
typedef pair<int,int > P;
int mp[NMAX][NMAX],n,m;
int dis[NMAX][NMAX];
int dx[]={-1,0,1,0};
int dy[]={0,1,0,-1};
void solve(){
queue <P> q;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(mp[i][j]==1){
q.push(P(i,j));
dis[i][j]=0;
}
else{
dis[i][j]=INF;
}
}
}
while(!q.empty()){
P now = q.front();
q.pop();
for(int i=0; i<4; i++){
int nx = now.first+dx[i];
int ny = now.second+dy[i];
if(nx>=0 && nx<n &&ny>=0 && ny<m
&& dis[nx][ny]>dis[now.first][now.second]+1){
dis[nx][ny]=dis[now.first][now.second]+1;
q.push(P(nx,ny));
}
}
}
int mxdis=0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
mxdis = max(mxdis, dis[i][j]);
}
}
printf("%d\n",mxdis);
}
int main(){
while(~scanf("%d%d", &n,&m)){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
scanf("%d", &mp[i][j]);
}
}
solve();
}
return 0;
}
给出一些docker的启动顺序,问启动所有docker至少需要多久。
拓扑序。
上海flex。
二合一面,一共有快俩小时。
两个面试官轮流问计算机基础问题。包括:
也被问到了很多答不上来的,每一科都会问到知道的最深部分为止吧。
题目用的是leetcode答题系统。
一道是层序遍历二叉树
另一道是流的形式去找中值,用两个堆来实现(一个最大堆、一个最小堆)。
算法题:
1.手写最大堆、插入、弹出。
2.dijkstra
3.dp问题?是啥dp我忘了反正不太难吧。
随便聊了点有的没的。
题目是手写stack实现,用的指针方式。
leader说有上海base。
hr说并没有上海base。
当时一心只想要上海的base。是我动手拒的(sorry(实在是人还没被关够
体验感还行。也比较有礼貌。
但是问的知识面有些鸡同鸭讲,我的论文做的复杂度降低。
主要问C++11的特性。
代码:手写智能指针shared_ptr。
我被恶心坏了。
昨天加我微信约面试时间的时候,问了一句:你是女生?当时我就有种不太妙的感觉。
今天迟到一个多小时。
对着我的简历一条条打压我。
说我竞赛成绩不好、看着没啥优点、总结一下我的优点是我作为一个女生还算聪明。呵呵。
然后出了道very easy的字符串解析,做完就挂我。
fine。这个世界上人类就是有各种各样的。
感觉上海base hc不够的样子,我理解啦)
英特尔问过的没问过的问题所有基础知识都有问。
再加上了数据库方面的问题、建索引的策略……
这次准备的基本上都能答上。
题目:
1.大整数(字符串)相加
2.链表删除连续相同值
最后谈谈我的想法吧。
暑期实习其实对后面秋招还蛮重要的。如果在春招直接踏入996的生活,除了转正很难再做别的打算。虽然大部分人都会直接选择实习转正,但我不想。
英特尔我看了所有风评都很不错,那边会有专人一对一,带实习生入门,然后工作时间955不加班。而且也和我接触底层的想法相契合。
留下的话是著名养老院,福利不错。即使不留下,这段实习既能为秋招加点码,也不耽误准备。
(暑假自己还想再考个日语,攒钱攒语言攒业务能力,有机会潤就好了。