大家好,我是王中阳背后的男人
先听 TA 的故事
某天下午,我突然被通知裁员。做了 6 年后端开发,月薪 18K,正攒钱想买个房子,怎么也没想到失业会砸到自己头上。收拾东西那天,看着同事们讨论假期去哪玩,我抱着纸箱走出了公司。
根本没心思做其他事,每天躲在出租屋刷招聘软件。投了几十份简历,要么已读不回,要么面试完没下文。印象最深的是面一家公司,技术聊得挺顺,最后 HR 问期望薪资,我说 “不低于 17K”,对方愣了下:“我们预算最多 14K”,比之前少 4K,房租、孩子奶粉钱都不够,我当场就懵了。
连续几场面试,不是卡在薪资,就是没下文。后来有家公司给了 12K 的 offer,我盯着手机整夜没睡:接吧,生活开支扛不住;不接吧,存款在一点点减少,难道真要妥协?
之后几天,我改简历、复盘项目里的坑,刷高频八股,还找做面试官的朋友模拟面试,练习如何把过去的项目经验讲清楚。
面第 12 家公司时,影响最深刻的就是面试官问 “高并发下怎么处理订单超卖”,我说的非常细,连排查 bug 的过程都提了,面试官很满意。最后谈薪资,对方说 “17K,试用期 8 折,转正调回”,虽没到之前的 18K,但至少不用大幅降薪。
收到通知那天,手都在抖。想跟正在找工作的朋友说:别盲目投简历,先补短板;遇到低薪 offer 别慌,给自己点时间。我整理了面试题,愿意分享,希望大家少走弯路,早点上岸!
下面分享一下他整理的面经:
北京畅聊天下\20-21k
一面
1、自我介绍
2、说说你主要在实习公司做了什么?
3、这个引入Token缓存机制是怎么做的?怎 么保证异步更新缓存的数据一致性?当时你接口的请求量有多少?
3、strcut数据类型能不能直接比较?
4、这个大文件上传和断点续传是怎么做的?
5、Grpc的优化拦截器的缓存策略,你的缓存策略是什么样的?
6、在公司里日志是怎么看的?做了ELK日志采集是是吧?这个你做的是什么?
7、如果说出现了错误,服务里面打error,你是怎么定位到关键的错误信息?
8、现在有个字符串,怎么判断字符串里面元素全部不相同?
9、给你个字符串,如何实现字符串的反转?
10、切片和数组的区别?切片由哪几部分组成?
11、channel有哪些种类?有什么区别?如果让你控制goroutine的数量,怎么控制?
12、Redis常用数据结构有哪些?项目里主要用的什么?
13、Redis设置过期时间的命令是什么?
14、TCP与UDP的区别?
15、说说TCP的三次握手和四次挥手?为什么?
16、Redis用的是哪一个库?
17、了解jwt吗?实现的原理?
18、kafka当时用的是哪个库?
19、知道二叉树吗?前序遍历是个什么样的遍历?
20、如果让你总结你在公司的成果和收获,你怎么总结?遇到了哪些关键问题?
武汉-北京思拓合众科技\8-12k 14薪
一面
1、自我介绍
2、make和new的区别
3、数组和切片的区别
4、map为什么无序?怎么有序?
5、函数内部申请的局部变量可以不可以返回?
6、说说内存逃逸?
7、panic怎么恢复?
8、golang的gc原理
9、说一下InnoDB的锁机制?都有什么类型和使用场景?在使用MySQL的场景下比如Select、Update如何触发这些锁的?死锁怎么产生?
10、过期删除和内存淘汰?基于全部数据的淘汰策略,未设置过期时间过期删除的一个键,会不会在内存淘汰中就给他淘汰掉了?
11、项目模糊排序怎么做的?如果说在第二页进行拖动排序拖到第一页,能怎么做?
12、分片上传怎么实现?怎么判断两个分片是同一个文件?
13、jwt的ip的安全校验的背景?为什么要做?怎么做的?
老板面
1、学过什么课程?
2、编程语言学过哪些?
3、大学期间有做过什么有挑战有成就感的事情?这件事情对你来说有什么意义?
4、go做过什么项目?
5、实习期间做了什么?有什么贡献?
6、平常学习提高自己的方式?获取知识的途径?
7、有深入学习过什么开源的项目代码?
8、看书的习惯?
9、空窗期有做过什么项目之类的?
10、后续的职业发展规划
11、ai毕设中主要是干什么?
12、ai工具来辅助开发?
13、公司的业务有了解么?
14、想找一个什么样的工作机会?
广东广起\6-11k 13薪
一面
1、自我介绍
2、GMP模型
3、数组与切片区别?切片的扩容?
4、内存泄露?如何避免
5、GC垃圾回收,避免GC压力过大怎么处理?
6、Mysql索引类型?创建索引的场景?
7、一个接口查询很慢如何排查?
8、redis地理位置?如何用redis实现找到三公里以内的最近的十个商家?
9、数据一致性怎么做?
10、什么原因导致kafka重复消费?如何解决?如何防止kafka数据丢失?
11、Linux怎么看日志更新?
12、如果服务器无法访问外网你如何排查? 有时候可以访问有时候无法访问?
13、硬件设备100M内存,需要大数据排序和去重,如何处理?【提示位图】
14、讲一下raft算法基本原理?
武汉蓝海智控\6-11k
一面
1、GMP调度模型
2、什么情况下内存逃逸
3、kafka+KLE为什么用消息队列?
4、jwt的token如何做的异步?
5、web基本框架用的什么?gin能做分布式的吗?
6、grpc拦截器缓存怎么做的?缓存怎么优化了一致性问题?
7、map构建映射表的需求?
8、ip地址校验的逻辑?
湖北格瑞曼\8-13k 13薪
一面
1、数组和切片
2、map的底层原理,map遍历是否有序,如何有序?
3、对关闭的channel进行读、写、关闭的情况,报panic的的原因是什么?(可能涉及到源码)
4、缓存雪崩、击穿、穿透
5、tcp三次握手、四次挥手
6、HTTP的状态码
7、token异步的操作如何做的?
8、map构建查询的做法?
9、远程调用的sql语句查询,发现执行时间很长,如何排查?
北京与你科技有限公司 base西安\12-17k
一面
1、数组和切片区别 channel的底层,有缓冲无缓冲channel区别 ,数组和链表的区别(在内存中),为什么查找和插入删除的时间复杂度不一样
2、内存泄漏怎么处理?GMP
3、 代码:for range 切片的坑, defer执行顺序,函数传参接口类型的 switch
4、mysql : 索引类型,为什么用B+树索引,主键索引和唯一索引区别,事务的全部
5、redis ,缓存三个问题,基本的数据类型,两种持久化机制,分布式锁怎么实现的,stream作用,原理
6、network全部
7、项目:Grpc缓存参数是怎么做的?token怎么异步存?
8、如何评价自己 ?
9、minio最大分片多少?minio如何配置?初始密码是多少?基于什么协议实现?
10、icmp协议在哪一层?
11、Ping用的什么协议?
天津和众汇富科技有限公司\7-12k 14薪
一面
1、数组和切片的区别
2、go怎么实现并发与同步?waitgroup使用场景?
3、互斥锁Mutex?场景:热点key允许少量穿透,但是不要影响业务?(不去锁但是也能平稳过渡,提前在缓存过期前进行一个异步的处理,提前去触发一个互斥锁,异步去拿数据和更新缓存,对于quest无感)
4、select底层和使用场景?
5、mysql索引优化?
6、联合索引最左匹配原则?
共济经济\10-14k
一面
1、kafka解决缓存一致性
2、Mysql底层数据结构怎么存?B+树存的主键索引,二级索引另外的文件存的,然后指向主键?
3、MVCC?undo log 文件大小太大可能是什么问题?
4、缓存三大问题
5、HTTP几个版本的区别?
6、go变量传递是值传递还是引用传递?append为什么要返回值?
7、接口QPS怎么测的?怎么调?最优的并发量与什么有关?
8、Minio分片怎么分的?单个分片能否做到续传?每个分片是否做分片指纹?
代码题:
输入一个文件列表 输出是自己写的一个文件读取这一批文本文件,合并成一个大的文件
输出:
1、合并按每个文件的行合并,行与行之间保持完整
2、执行时间尽量短,占用内存尽量低
3、程序需要正常退出
一起学习,打怪升级
需要简历优化、就业辅导、学习路线规划的朋友可以关注我,私信我
后面我还会更新更多跟go相关的文章,欢迎关注我一起学习。
想和我交流的朋友可以直接私信我,或者通过下面方式找到我:
微信号(常用):wangzhongyang1993
公众号:王中阳Go