写点什么

一天约了 4 个面试,复盘一下面试题和薪资福利

作者:王中阳Go
  • 2023-03-03
    北京
  • 本文字数:6288 字

    阅读完需:约 21 分钟

一天约了4个面试,复盘一下面试题和薪资福利

除了最新的面经分享,还有字节大佬的求职面试答疑,告诉你关键问题是什么?少走弯路。另外本文也汇总了 6 份大厂面试题:字节、腾讯、小米、腾讯云、滴滴、小米游戏。 希望对大家有帮助。

前言

昨天我的交流群里,有位宝藏群友分享了自己的面试经历:一天约了 4 个线上面试,收获满满。


为大家分享了面试题和每个公司给出的薪酬范围。


简单说下这位群友的情况:3 年开发经验,最近 2 年做 Go 语言开发,还有 1 年 Java/PHP 工作经验。手撕 CSAPP 选手,每天打卡分享手写的学习笔记。


注意:是每天手写笔记学习!每天+手写!



也有群友反馈,有人海投 200 多份简历没人回复,boss 直聘上都是已读不回。对比宝藏群友一天约 4 个面试可以说是云泥之别。


很重要的一个原因,就是简历不行。或者你海投的公司都不靠谱,如果你海投 200 家都是已读不回,大概率不是这 200 家公司的问题......

我的经验分享

这是我之前找工作和简历优化的经验总结,希望对大家有帮助:


【求职复盘】我是怎么做到面试一次就拿到offer的?


【简历优化】怎么引导面试官提问自己准备好的问题?


【简历优化】如何在简历中最大化体现出自己的学习能力?

群友面经分享

再次感谢宝藏群友的分享,给了大家刷题的方向、市场的薪酬行情、更重要的是给了大家信心


在求职市场哀鸿遍野的情况下,还能做到一天能约到 4 个面试,不说别人,起码给了我很大的信心,对市场还是看好的。(如果这篇文章能给 10 个人带来信心,我就心满意足了)


(相同的事情,不同的人看会有不同的反馈:比如对于这件事情我是看到了市场的信心,还是有不少公司在招聘的,并且待遇不差,要求确实不低,没有像网传中说只读不会连面试机会都没有那么悲观;有的群友看到面试题的反馈是太卷,会的不多;有的群友看到的反馈是找开发岗位,Docker CNI 的实现都要考吗.....)

20K-30K 深圳

Docker 底层、多阶段构建、原子指令你怎么理解、CSP 和 Actor 分布式模型的区别、内存对齐、Channel 和 select 的基本用法、赋值你认为有多少条汇编指令、比较出名的开源项目 pr、Redis 持久化、GMP 模型、一致性算法

13-20K * 13 深圳

3 个算法题,暴力 1 道,2 道有思路,一个贪心、一个动态规划、一个冒泡。聊异步、业务、持久化

13-20K * 13 厦门

TCP 粘包怎么解决、同步控制 waitgroup 、数据库索引优化、TCP 如何实现可靠性、队列,树,栈的应用场景和区别、TCP 在 linux 中一些参数的含义、一些十进制转换二进制、十六进制、如何定位死锁,链表简单题

16-20K 上海

战争迷雾怎么实现、共识算法、Channel、Make 和 New 的区别、GMP、数组类型算法、UDP 实现可靠协议、分布式模型、Panic 没被 Recover 怎么处理、切片扩容、Docker CNI 的实现、数据落盘怎么做的、Lua

总结

看到这里大家心里应该有个数了,可以看看自己的期望薪资,再看看目前市场上考察的这些知识点,查漏补缺。


也欢迎大家私信我,或者关注我的公众号 程序员升职加薪之旅,后面会持续更新面试题、面试复盘相关的文章,希望对大家有帮助,更欢迎大家的投稿分享。


需要做简历指导的也可以关注公众号,加我微信。

大厂面经

受高启强的影响,我也在读《孙子兵法》,分享这段话给大家:求其上,得其中;求其中,得其下,求其下,必败。


映射一下目前互联网的就业市场,道理简单明了:如果你想进中厂,就要做进大厂的准备。如果你想找到月薪 1W+的工作,就需要做月薪 1W5+的准备。如果你的目标就是找到工作,起码要做冲洗中小厂的准备。如果你的目标就是找个小公司混日子,大概率找不到工作。


为了更好的帮助到大家,我还整理了网络上很有价值的大厂面经:字节、腾讯、滴滴、腾讯云、小米、小米游戏。


希望对大家有帮助,建议收藏,并且转发给好朋友。


下面先分享一下我 学习小圈子 里字节嘉宾关于求职面试的答疑,大厂更看重的是什么? 给大家指指方向,少走弯路。

有问必答

提问

大佬好,最近我要去面试试水了,想问一下 有没有关于 java 或者 go 遇到的生产案例分享 最好是关于 jdk 或者第三方包的 bug,容易加分。感谢!

回答

你是面校招还是社招?一般面试官会根据你的简历中项目经历、实现细节来展开逐层递进,你说的生产案例最好还是自己实战经历过的,不然很容易就发现不是你的项目或者会被打上项目参与不深入的标签。


每一次面试都尽量准备充分,不要抱着水水的心态,大公司面试都会留痕和面评的,如果你是想丰富下面试经验,建议你先找一些小公司或者不太想去的公司面一面找找感觉,自己心仪的公司和岗位一定要准备充分再去发起面试流程!

星友

我是属于社招,一般面试官会问处理过的最亮的技术点,目前是游戏平台后端开发 但实话实说 所用技术和闪光点太普通。


不是项目造假的意思,就是准备几个生产上处理过的几个难度较高的技术问题

嘉宾

建议你可以仔细盘一盘负责项目的文档、代码等资源,即使很多东西不是从 0 到 1 自己做的,也可以借鉴和领悟下其中的技术实现细节;平时也可以多写写技术文章,输出些自己工作内容中有技术特色的地方。

星友

我负责的项目就是我从 0 到 1 弄好的,包括文档和代码,里面确实没有拿高薪的技术亮点。

嘉宾

技术亮点是客观的项目经历,除非面试官也做过类似东西,能和你产生互动否则是不太感兴趣和深入聊的,技术栈是共同语言也便于考察个人技术能力,面试的时候也要学会主导话题,扬长避短多聊自己的优势点。说到“拿高薪”,这里说一句大白话:有多大本事拿多少钱。能力和薪资是正相关匹配的,一家公司招聘人才的能力模型会参考专业知识、工作阅历、个人性格等多方面,而面试的招聘过程双向是有信息差的,最终影响你薪酬水平的是面试结果(带有信息差的能力评价)+ 你当前的薪资水平、职级(自身当前的社会客观能力反馈)+ HR 可操作的涨幅空间。

星友

理解,谢谢大佬的诚恳的解答,我还是从技术栈下功夫,这样和面试官的共鸣会高一些,也不再执迷于某个技术亮点。

嘉宾

不客气,加油!技术栈扎实绝对没问题💪


重点干货已经加粗标记了,上面这个问答建议再看一遍,很经典的问题。


以下面经来自网络,感谢大佬们的分享,非本人,我只是做了面经的搬运工,希望对大家有帮助。

字节面经

一面

自我介绍+算法题:


  1. https://leetcode-cn.com/problems/find-peak-element/

  2. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 3. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/


问答


  1. 索引,倒排索引,切词,如何根据 doc id 有没有出现某个 token

  2. 服务高可用是怎么做的

  3. MySQL 可重复读、读提交区别、原理

  4. 爬虫 URL 去重,设计存储结构(FST,前缀树+后缀树) MySQL (a,b,c) 索引,几条 SQL 走索引的情况

  5. 思考题:概率 p 生成 0,1-p 生成 1,如何 1/2 概率生成 1

二面

算法题:


  1. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/

  2. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/

  3. https://leetcode-cn.com/problems/coin-change-2/


技术问题


  1. 讲一下 es 索引的过程

  2. 切词怎么切,切词算法,降噪

  3. 让你带应届生,怎么带,

  4. 有什么工程经验可以分享

  5. Redis 缓存淘汰有哪些

三面

自我介绍


算法题:


  1. https://leetcode-cn.com/problems/first-missing-positive/


技术面


  1. 文章下面的评论,按点赞数排序,SQL 怎么写

  2. 把所有评论放到内存里,怎么设计数据结构,存储并排序

  3. select * 会有什么问题

  4. 缓存热 key 怎么解决

  5. 职业发展

  6. 领导如何评价你

  7. 项目难点,亮点

滴滴面经

一面

  1. 介绍项目

  2. 问我为什么选择 GO,看我有 Java 从业经历。

  3. 介绍一下 java 和 go 区别,我猜是让我说一些他们的不同点,go 比 java 哪里好。我说了一些 特性 3.1 问我协程比进程好在哪里? 我自己顺便说了进程线程 协程三者关系 4. 问我想从事什么

  4. 项目中有 bloom 介绍了一下怎么使用的,精度,损失

  5. GPM 模型

  6. redis 使用模式 主从 哨兵 巴拉巴拉

  7. 接着聊项目,然后问了算法

  8. 渐进式的聊面试,很轻松

  9. 问我能不能接受看 php? 反问时候,聊了一下 GORM,应用情况。他们的 go-spring,还有他们的夜莺系统。因为看过一点点所以想问问。有培养体系,教我如何写 GO(这个我很欣慰),说有大佬内部课程。

二面

  1. 自我介绍(面试官也不看我,一脸严肃我特害怕。然后自我介绍磕磕绊绊的)

  2. 问我看源码吗?

  3. 问了问 GC 发展史,都怎么玩的 每次优化了啥

  4. 问了问我 go 内存 优化了那些东⻄(这题我忘了咋问的了)

  5. 问了一下我项目里 nodejs 升级为 java 为啥会快了那么多。 6.问了红黑树特性,哪个数据结构用到了。我介绍了一下 红黑树 一些特性 比如 平均查找时间 低 插入删除需要 左旋右旋调平衡。 我想到 java 里 hashmap 用到了这个结构 7.问了一下 map 的底层结构 顺便介绍了一下 sync map

  6. 找出两个大文件交集

  7. 算法 leetcode 两棵树 b 是 a 子集那道题思路 怎么做 dfs 然后比较 值和 指针

  8. 聊了一下 我的项目 召回相关的 和 nodejs java 迁移 效率提升问题

  9. 聊了一下 go-spring 夜莺 还有 didi 有个 写 sql 的 github 项目 想问一下应用情况。问我能不能 接受 看看 php 之类的

  10. 问了问我为啥离职

腾讯面经

一面

  • 算法题二选一

  • https://leetcode-cn.com/problems/permutations/

  • https://leetcode-cn.com/problems/sorted-merge-lcci/

  • MySQL 隔离级别

  • MySQL 锁

  • MySQL 存储结构(b+树)

  • 索引 回表 是什么

  • 消息队列,rabbitmq

  • rabbitmq 如何保证可靠性(生产者可靠性、消费者可靠性、存储可靠性) - rabbitmq 几种模式

  • es 索引的过程

  • 线上是如何分表分库的,用什么做分表分库的策略,跨表查询

  • MySQL 如何同步到 es

  • 线上 Redis 用的是什么模式

  • 缓存热 key 怎么办

二面

  • 介绍项目

  • defer 、go 继承,手写快排

  • 登录流程,JWT、session、cookie

三面

  • 缓存一致性

  • Redis key 统计

  • Redis 单线程,io 多路复用

  • 算法题 https://www.nowcoder.com/practice/35119064d0224c35ab1ab612bffee8df

  • Redis slowlog 原理

四面(面委)

  • 项目为主

  • tcp quick_ack 、 nodelay ,socket 编程

  • 职业规划

  • 为什么换工作

五面(GM)

  • 项目

  • go 协程机制

腾讯云

这个面经来源于网络,这位朋友主要技术方向是 k8s、容器、云计算。


有服务上云的实践经历,了解 cicd 基本流程,求知意向是容 器研发、基础架构研发、运维研发之类的(主要还是研发方向)。

项目方向:

项目的话我不多说什么,就是自己的项目细节自己肯定清楚,如果项目中不是自己做的部分,建议不要在简历上写太多,写清楚自己做了什么,容易被抠细节问,项目一般都会抠细节,特别细的那种!!!

语言栈:

因为主要语言栈是 go,所以一般都比较少问 python。

golang

1、gin 框架路由怎么实现的,具体正则怎么匹配?限流中间件怎么实现? 2、go 的 slice 与数组的区别,slice 的实现原理,源码? 3、golang 的协程调度,gpm 模型。协程调度 过程中的锁。 4、golang 的 channel 实现,channel 有缓存和无缓存,一般会直接撸码 (三个 goroutine 顺序打印)。 5、golang 的关键字 defer、recover、pannic 之类的实现 原理。 6、sync 包里面的锁、原子操作、waitgroup 之类的。 7、make 和 new 的区别, 引用类型和非引用类型,值传递之类的。

python

1、python 多线程、多进程。 2、python 的装饰器怎么实现的?

操作系统

1、进程、线程、协程间的区别以及他们间的切换之类的,有时候会问到语言级别的协 程。 2、io 复用、用户态/内核态转换 3、awk 命令 4、linux 查看端口占用 5、top 命 令,free 命令中的各个参数表示什么,buff/cache 都表示什么?

k8s & 容器:

1、简单聊一下什么是云原生、什么是 k8s、容器,容器与虚机相比优势。 2、k8s 组 件,pod 创建的过程,operator 是什么? 3、docker 是怎么实现的,底层基石 namespace 和 cgroup。 4、k8s 的 workload 类型,使用场景,statefulset 你们是怎么用 的? 5、limit 和 request,探针,一般怎么排查 pod 问题,查看上次失败的 pod 日志。 6、sidecar 是什么,怎么实现的? 7、pv,pvc,动态 pv 怎么实现 8、k8s 的声明式 api 怎么实现的,informar 源码。 9、cicd,发布模式。 10、svc 的负载均衡、服务发现, ipvs 与 iptables。 以上基本是会被问的点(虽然有一些问题我也不是很熟),另外很多 会被问 k8s 的网络之类的,因为我比较菜,这块被问的比较少。

计算机网络:

1、tcp 三次握手四次挥手,为什么不能是两次握手,三次挥手?握手和挥手过程中的状 态。 2、time_wait 作用,为什么是 2msl,close_wait 作用,time_wait 过多怎么办? 3、http 请求的过程,浏览器输入网址请求过程?dns 解析的详细过程? 4、https 与 http 的区别,https 第一次服务端回传是否加密? 5、tcp 与 udp 区别,tcp 怎么保证可靠性。 6、http 请求头、分隔符、⻓连接怎么实现

数据库:

1、mysql 的事务,事务使用场景。 2、mysql 的索引,什么情况下索引失效,聚簇索引 与非聚簇索引,索引的存储 b+树与 b-树区别。 3、join 的内外连接,最左匹配原则。 4、redis 的数据结构,hmap 怎么实现的,持久化怎么做,go 操作 redis 的方式。 数据库 方向有被问到,我基本没答上来(一般都告诉他只会基础,开发直接使用 gorm)。

数据结构与算法:

1、倒排索引和 B+树 2、判断链表是否有环,时间复杂度要求 0(1) 3、LeetCode 上合并 区间的题 4、leetcode 的股票买卖的题 5、二叉树的最近公共祖先 6、有序数组合并 7、什么是平衡二叉树、最小堆 8、大文件的 top10 问题 9、golang 实现栈、队列

其他:

1、git 的相关操作,合并 commit,合并之类的。 2、场景设计(比较多)

小米面经

一面

  1. innodb MVCC 实现

  2. b+树是怎么组织数据的,数据的顺序一定是从左到右递增的么

  3. ⻚分裂伪代码,b+树的倒数底层层可以⻚分裂么

  4. 合并 k 个有序链表

  5. redis 的 hashtable 是怎么扩容的

  6. select poll epoll,epoll 具体是怎么实现的

  7. GMP 是怎么调度,channel 是怎么收发消息的,channel 的 recq 和 g 是怎么建立关系的

  8. innodb 二次写是什么

  9. undo 里面具体存的是什么

  10. b+树节点具体存的是什么

  11. mysql 一⻚最大能存多少数据

  12. myisam 和 innodb 索引上的区别

  13. innodb commit 之前,redo 的 prepare 然后 binlog commit,然后 redo 再 commit 有什么缺点?5.6 之后是怎么优化的? 14. redo 和 binlog 的区别

  14. 读锁和写锁区别

二面

  1. 蛇形打印二叉树

  2. myisam 为什么不支持事务,如果要支持事务要怎么做

  3. 函数只能返回 1-7 的随机数,请用这个函数返回 1-5,要求平均 4. 聊项目

三面

  1. go 的协程调度和 os 的线程调度有什么区别

  2. 只有写锁实现读写锁

  3. go 的调度是怎么实现的

  4. go 的网络 IO 为什么快?还有优化空间么

  5. epoll 为什么这么快,还有优化空间么?如果要你实现一个网络 IO 应该怎么实现

  6. 设计一个每秒 80 万 qps 的过滤器

  7. 过滤器用 redis 实现,宕机期间数据怎么恢复

  8. 设计一个下单 扣减库存的分布式应用,请求超时了怎么办,一直重试超时了怎么办

  9. 数组 A1 2 和数组 B2 3 是一个关系圈,A 能通过 2 找到 3,数组 A1 2 和数组 B2 3 和数组 C 3 5 也是一个关系圈,给一个二维数组求关系数

小米游戏面经

一、 介绍连接池项目

  1. 介绍连接池常用的参数,最大连接数,最小存活数这些意义,为什么要有这些

  2. 当链接超过最大连接数怎么处理,等待有空闲连接还是创建一个继续给出,比较两者的优劣

  3. 连接池清理链接的逻辑,如何优化的

  4. 当连接池中有一些链接不可用了怎么办,如何保证这些连接的可用

  5. 当出现下游某个实例挂掉了,连接池应该怎么处理

  6. 对比 mysql redis http 连接池的实现

二、 介绍负载均衡算法

  1. 介绍平滑负载均衡算法,实现

  2. 当出现下游出现不可用,负载均衡算法怎么处理

三、 介绍聊天室项目

  1. 介绍实现原理的,互相通信的逻辑

  2. 聊天室服务端如何把消息下发给用户

  3. 介绍 websocket 包的字段

  4. 当有用户掉线怎么处理

四、 redis 相关

  1. redis 的数据结构

  2. 各个数据结构的操作

  3. 各个数据结构的使用场景

  4. 如何保证 Redis 的高可用

  5. 当有一个 key 读取的频率非常高怎么办

五、 算法相关

  1. 介绍快速排序 优先队列的实现

总结+鸡汤

就业环境再好,也有人找不到工作。


就业环境再差,也有人能找到工作。


要么学历🐂🍺,要么技术🐂🍺,要么都🐂🍺。


如果学历无法改变,请让技术🐂🍺,其他的都是扯淡~


一起学习

我的文章首发在我的公众号: 程序员升职加薪之旅,欢迎大家关注,第一时间阅读我的文章。


也欢迎大家关注我,点赞、留言、转发。你的支持,是我更文的最大动力!

发布于: 刚刚阅读数: 2
用户头像

王中阳Go

关注

靠敲代码在北京买房的程序员 2022-10-09 加入

【微信】wangzhongyang1993【公众号】程序员升职加薪之旅【成就】InfoQ专家博主👍掘金签约作者👍B站&掘金&CSDN&思否等全平台账号:王中阳Go

评论 (1 条评论)

发布
用户头像
除了最新的面经分享,还有字节大佬的求职面试答疑,告诉你关键问题是什么?少走弯路。另外本文也汇总了6份大厂面试题:字节、腾讯、小米、腾讯云、滴滴、小米游戏。 希望对大家有帮助。
刚刚 · 北京
回复
没有更多了
一天约了4个面试,复盘一下面试题和薪资福利_Go_王中阳Go_InfoQ写作社区