初面接|字节跳动后台实习一面凉经
2020-01-03 本文已影响0人
zilla
下午终于逮到图书馆有间研讨室空出来,进行自闭的初次面试。(吼,第一次就面字节……
总结一下就是,不知道准备什么,或者说要准备的太多根本来不及,看面经准备了MySQL为何索引用B+树的原因,结果问了ACID,说了原子性后开始发呆(丢人
复盘一下写个凉经,其实问的相对别的字节实习面经要简单,面试官并没为难我的意思。。。
很多问题还没再去查,下一篇再写。
自我介绍
问:自我介绍一下。
我:诚实的说我么得什么项目经验,刚考完研。简历上的课程项目都是临时学的。
问:你这写的15-16年通信工程,转过专业?
我:对的。
网络
- 在浏览器输入 URL 回车之后发生了什么
DNS解析,HTTP,TCP三次握手。
回答DNS解析过程期间(图书馆信号不好掉线 * 2 (´Д` ) - 为什么TCP建立连接是三次握手,断开连接是四次挥手?
数据库
- 题目如下:
字段:
id int 自增id
user_name varchar
age int
sex int 0 表示男,1表示女
is_deleted int 0 表示未删除,1表示删除
created_at timestamp 创建时间 默认 current_timestamp
1.插入一条数据 (tom, 18, 0, 0)
2.名字叫 tom,slice,Tony的记录
3.更新age在18-22之间的用户的is_deleted 为1
4.硬删除
然后我说sql语法忘记了(是的,前几天还想看sql语法呢,然后又去刷剑指offer了……
- 问:数据库事务的特性
ACID,然而我只想起来Atomic。(到这就凉了大概
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
数据结构、算法
问:你这上面写PAT满分,这是什么
答:浙大的程序能力考试
手撕代码
牛客这个线上的代码编辑,除了高亮就只有莫名其妙的代码补全了。。。基本就是txt。。。不能调试,自己起的变量名写混了。面试官也没给样例输入输出。
-
反转二叉树
我:是写函数还是建树也要写。
面试官:先写个函数吧。
- 最大连通区域
面试官:先说说思路
我:BFS吧 (神智不清瞎说,但感觉这题我ok
然后,我人坏掉了,瞎写,跟BFS不沾边(´・_・`)
面试官(大概看不下去了):你再说说你思路。
我(说着说着心态已崩,不知道该咋说,继续写了)
面试官:写完了吗?你这编译不过啊?你看不到编译信息吗?
queue的函数是front,当时写了top。。
然而,白板一样还要过编译QAQ,真的不适应,没输入没样例的……
最大#区域:
n*m
000#000
000#000
0000000
0##0000
00###00
00##000
-
当时写的 竟然根本没用curr 我人傻了
二维数组赋值 语法错误 - 回来改了一下(copy到clion,发现curr是灰的,我惊了……不知道下午写的什么鬼)
#include <queue>
#include <cstdio>
using namespace std;
const int MAX = 1001;
int arr0[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};
int m, n;
char mat[MAX][MAX];
bool visited[MAX][MAX] = {false};
int BFS(int i, int j) {
queue<pair<int, int> > mq;
mq.push(make_pair(i, j));
int cnt = 1;
while (!mq.empty()) {
pair<int, int> curr = mq.front();
mq.pop();
i = curr.first, j = curr.second;
for (int k = 0; k < 4; k++) {
if ((i + arr0[k][0] >= 0 && i + arr0[k][0] < m) &&
(j + arr0[k][1] >= 0 && j + arr0[k][1] < n)) {
visited[i + arr0[k][0]][j + arr0[k][1]] = true;
if (mat[i + arr0[k][0]][j + arr0[k][1]] == '#') {
mq.push(make_pair(i + arr0[k][0], j + arr0[k][1]));
cnt++;
}
}
}
}
return cnt;
}
int main() {
// 没给输入 就没写读入过程
int mcnt = -1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (!visited[i][j]) {
visited[i][j] = true;
if (mat[i][j] == '#') {
mcnt = max(BFS(i, j), mcnt);
}
}
}
}
printf("%d\n", mcnt);
return 0;
}
智力题
面试官:那问你道智力题吧。
- 有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒。
- 想到了海明码(其实是 xy爸爸tx面过这题,当时跟我说这题我想的就是海明码,所以直接就= =,其实就是普通的二进制编码啊啊啊啊啊啊啊啊啊啊啊)
- 酒有毒1,无毒为0
- 老鼠当校验位,排在1 2 4 8…… (2的n次方)位置,每个老鼠喝多桶酒(分组奇偶校验的赶脚)
然后让我详细说,突然失忆不记得海明码怎么编的了……
面试官:若只有第一只老鼠死了,是哪桶酒有毒
我:(思维混乱中,已呆逼)
面试官:那我们先到这吧(信号不好没听清)
我:啊?今天先结束了吗?
面试官:嗯,结束了,拜拜
我:拜拜