时间线:24.7.8电话约一面 7.12一面(当天通知过) 7.16二面(隔天过)7.18三面(隔天过) 7.22hr面
本人:qs50内大学准大四cs 无文章 无科研 无实习 未学过计网
项目都是课程设计(数据库+密码学)
文章为小hs转载,格式可能有点混乱,作者是本人。本文所有回答都是现场作答,并非答案,请斟酌观看。
字节后端一面
+1 小哥哥,气氛很好,全程笑谈。共 65min 40 聊天 25 代码。
下面是流程:
自我介绍
·你有一个加密项目,说一下对称加密非对称加密区别
·详细说明 rsa 加密流程
·知道 sharedkey 吗,有什么特点
·golong 线程安全吗 答:加锁
·在那个环境加锁:答:读写
·死锁了解吗
·数据库 part:表结构讲一下
·索引设计思路
·慢查询了解吗
·怎么优化慢查询
·联合索引概念,三个 key 联合索引命中问题
·两个 key 联合索引命中问题
·计网:tcp 和 udp
·缓存工作原理
·数据结构:链表和数组区别
·OS:进程切换
算法题:单链表反转,请使用递归
简单题,递归即可
全程无痛点,考察均为基础知识,多背八股文即可
模棱两可的点面试官会引导,小问题不会也无伤大雅。
字节后端二面
面试官感觉是组长小哥哥,很有实力。全场 70min 拷打 45+20 代码+反问 5。
下面是流程:
自我介绍,介绍到项目时打断直接开问
·项目二(加密技术):你是怎么实现加密的?答:文件上有 aes+rsa 密码上有 hkdf(背诵准备好的 hkdf 介绍笔记)(面试官了解 h 不了解 kdf,详细说明 argon2id,hmac 附带说明)
·如何实现 aes+rsa?答 rsa 加密 aes 的密钥
·aes 与 rsa 区别(本质是对称非对称区别)(背诵区别 easy)
·扩展:你说 rsa 速度很慢,有没有具体衡量标准? 答:我不知道具体数字,但是可以从加密时间,加解密速度衡量。回应:只是附加,不知道没关系
·继续你的项目:数据库项目,mysql 隔离级别
·脏读解决方法
·你提到 nextkeylock,怎么实现底层原理 (这个跳度有点大,一下没反应过来)答:锁 key,gaplock 锁区间
·索引 b+树结构介绍
·数据库的各种锁(聊了十分钟)
·聊一下 os:进程切换
·进程通信六方法
·进程线程区别(全是背诵十分 easy)
·你说自学计网,简单考一下:http 状态码
·三次握手
·http 协议
·客户端服务器怎么交换密钥(交叉问:答通过数字证书数字签名)
·说过程
·算法题:删除链表倒数 kth 节点
答 双指针便利后修改 kth 节点指针返回头
10min 不到写完,飞书界面太小看不全代码输出导致调试十分钟(太抽象了)(一直显示不出最后几位数,给我急坏了)(中等偏简单的算法)
反问:组里情况
二面考察更多跟着自我介绍和简历走,每个流程都有覆盖(指简历上每一门课)。气氛活跃轻松,面试官是将来 leader,考的内容都在意料之内,也很简单。
字节后端三面
三面面试官一看就很有资历,前两面感觉都是+1 +2 的同学面试,气氛也很和谐。三面纯纯压力面,面试官十分严肃,对我的回答也是不置可否。但是同时对于一些设计方面的知识会引导你,感觉他的考察重心在于个人现场学习能力。对于不太了解的话题会让你尝试。
这次面试最深刻印象的点在于真的就是拷打到底。各位同学如果没有对某个知识衍生的东西很了解,就要思考一下是否要提这个知识了。比如面试里我提了一个幂等性我不怎么会,就被追问了十分钟甚至还有 callback 环节
具体流程如下:
·自我介绍
·项目深挖,项目介绍,项目衍生(如数据库,网络)项目包含数据库,加密,少部分计网
·数据库高并发设计,如各种锁,缓存设计(很大坑)
·数据库优化(设计,sql 优化,索引优化等)
·模糊搜索怎么实现 我:(不是 like 就完事了吗)
·数据库数据结构 衍生题,存不了的外部数据怎么找 top100 索引:此题不应用最小堆(或者是我想不到怎么在堆里找索引)应该用双链表加哈希存储 rank,方便插入或者删除和寻找。(后来发现是 LRU 的意思,完全没理解)
·数据结构 内存存不下的很多整数如何找不重复:答双位图(一个存第一次一个存重复)回应:双位图还有其他解可以思考
·加密(本人项目有密码学所以才考)加密原理
·围绕数据库的加密(我比较擅长的加密方法直接没考好崩溃)
·token 怎么保证不被伪造
·token 怎么保证加密或者截取后不能造成很大影响,从前后端分别考虑(已经在往计网靠了)答前端 uuid ,时间戳,后端 uuid,数据库(完全是瞎蒙) 我还嘴欠提了幂等性
·计网 幂等性如何实现 我:?
·计网 怎么防止消息队列信息丢失
·计网 怎么保证前端操作到达后端,如果不用消息队列呢
·计网 服务器重复请求,怎么幂等性解决(我真该死)
·计网 生成 uuid
算法: 找到两个有序数组的中位数,并要求时间复杂度为O(log(m+n)) 答:二分法 二十分钟才写完
本次面试持续一个半小时,拷打 70 分钟+20 分钟代码。面完人是懵的,各位同学如果不了解的点尽量还是藏一藏,不知道什么时候面试官给你 callback 就完了
总结
总的来说,一二面考察基础知识,难度不高。三面考察交叉设计,对我来说十分难,而且是压力面。有幸通过面试,十分开心。希望大家拿到合适的offer!