蚂蚁金服后端开发面试
大概一个半小时电面
-
自我介绍
-
数据库有哪几种引擎
-
MYISAM使用场景、优缺点
-
进程和线程的区别
-
进程间通信的基本方式
-
中断概念
-
协程
-
python中的async和aside
-
HTTP和HTTPS区别
-
HTTP和HTTPS的三次握手四次挥手有什么区别
-
手写代码(不能调试):评测题目: 有一个m*n的二维整形数组A,请按照顺时针方式打印出所有元素。我写的如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int>v;
int main()
{
int m,n;
cin>>m>>n;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cin>>a[i][j];
}
// 1 2 3
// 4 5 6
// 7 8 9
// 1 2 3 6 9 8 7 4 5
int s=0,e=m-1,s1=0,e1=n-1;
while(s<e&&s1<e1)
{
int x=s1,y=s1;
while(y<=e1) // right
v.add(a[x][y]),y++;
x++,y--;
while(x<=s1) // down
v.add(a[x][y]),x++;
x--,y--;
while(y>=s1) // left
v.add(a[x][y]),y--;
x--,y++;
while(x>s) // up
v.add(a[x][y]),x--;
s++,e--,s1++,e1--;
// s:LeftUpRow e:RightDownRow s1:LeftUpCol e1:RightDownCol
}
if(s==e)
{
for(int i=s1;i<=e1;i++)
v.add(a[e][i]);
}
else if(s1==e1)
{
for(int i=s;i<=e;i++)
v.add(a[i][s1]);
}
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
return 0;
}