2022年最新3月Go面经(凉)
首发公众号:《2022年最新3月Go面经(凉)》
又到了金三银四跳槽季,作者君最近也面了几家公司,特此分享一份Golang岗位的凉经,希望对大家有所帮助。
通过最近的一些面试,我发现一些规律:
- 很多公司要等到3月份初才打开招聘窗口:遇到的如泛微,字节等等。
- 很多公司内部系统技术栈转型升级,释放一批Go的岗位,如得物APP(Python->Go),人人视频(Java->Go)等等。
PS1:最近上海疫情严重,全市居家隔离得有一个多月嘞,希望一切顺利,尽快解封!
PS2:一面都是电话,二面需要去现场。
历程
- 万向区块链,一面过,二面凉
- 趋动科技,一面过,二面凉
- 上海好说,一面过,二面过
- 商米,一面+二面同时(2.21 10:30),没下文。可能薪资给不到,或其他原因。
- 人人视频,一面+二面同时(3.4 14:00),一面过,二面凉
- 字节跳动,一面(3.9)完成,算法没答出来也过了,二面(3.16)凉,各种系统设计没回答上来,最后一道代码写出来了但是有bug运行不正确😭
- 英语流利说,一面凉(3.9,考验系统设计,场景题)
- 微盟,一面(3.17)凉,和岗位不太匹配,对方关注cicd和k8s容器开发
微盟——高级容器工程师
2022.3.17 一面 40分钟
- 项目情况,项目的技术栈,链路追踪的技术栈,用到grpc的那些特性了(trace,metahead,promethus都支持)?
- CI/CD你知道原理吗?公司有这样的平台,大致是如何实现的?
- 有接触过除了mysql之外,非关系数据库比如mongodb这类的存储系统吗?
- 网关对内有哪些保护措施?如何识别一个陌生请求,并且过滤?通过remoteIP方式吗?
总结:和岗位要求不太匹配, 不到40分钟匆忙结束。
字节——飞书部署工程师
一面
2022.03.09 1小时左右
- 自我介绍 17:05 - 18:10
- GMP说一下
- channel的应用场景和原理
- go有哪几种内存分配方法?new和make有什么区别?
- go是如何实现面向对象的?
- interface原理说一下
- 熟悉那些中间件?
- redis持久化有哪几种?
- redis集群有哪几种?
- redis大key如何解决?
- 分布式
- 限流有哪几种?
- 分布式环境下如何排查问题?
- 如何确保链路中都有traceId?通过技术手段log中间中
- 简单介绍下im 的架构
- 短链接和长链接的区别
- 说一下https 的认证,更换了tLs
- 最近遇到的最难的问题和解决办法
- kafka 丢失说一下,怎么解决
- kafka 调优你知道哪些
- 最后一道算法题:最长回文子串,说一下大概解题思路(马拉车和动态规划),答错了,用双指针解法一通乱说,也给过了。
二面
2022.03.16 50分钟左右
- 自我介绍
- 说一个你觉得最重要的项目?
- im未读技术如何设计?多少个人已读这种,如何设计呢?
- rpc你有在用,那么如果让你设计一个rpc框架,你如何设计?提示:怎么实现客户端远程调用服务端的代码呢?
- redis用了什么架构?分片集群的大概原理?部署了多台,怎么觉得如何存储呢?
- 一个有1亿url的文件,如何找出重复的url?
- 如果要做一个微博信息流系统,让你来设计,你如何设计?
- 写代码(10分钟内),比较2个字符串版本号,删除true/false,那个大
“0.1” > “1.0” : false
“1.1” > “0.0.0.100” : true
“2.1” > “1.0.0”: false
总结:凉,着重考验系统设计能力,总共有5轮左右。。。
英语流利说——高级go 工程师
2022.03.09 一面 硬挺了50分钟左右
- im 架构
- 一道算法题:找到只出现一次的元素。给一个数组,其他数字出现3次,只有一个出现一次,找到它。说你的思路。。。。升级:现在要设计rpc接口,有100万个数字,并发为1,你能怎么优化?……升级:多个并发,你如何设计?有哪些能优化?……升级:k8s 用过吗?如何规划内存?
- 一道redis题:以天为单位,记录登录用户id,统计连续登录的用户。redis 用什么数据结构?1k 的时候,接口如何设计?10k 的时候呢?
- 一道mysql题目:短链网址,如何设计表结构?key 怎么生成?
- 一道mysql题目:插入10条,删除8,9,10,插入一条,重启mysql id 是多少?主从如何同步?binlog 啥问题……undo/redo 用处
- 现场又出了一道:群里面未读计数 怎么做?假设500人的群。扩散写如何优化?没答出来。
总结:视频面试,上来发了一个在线word,里面有4道题,让你现场解,说思路和实现。现在回想都感觉还很紧张,也确实没思路,凉的很厉害,被虐的体无完肤,只想赶紧结束。
人人视频——高级Golang工程师
一面
2022.03.04 50分钟
- 一道笔试题,找至少3处漏洞(找了9个)
- gmp简单说一下每个代表什么
- 如果要你实现一个线程安全的sync.map,你有哪些思路?
- 未读计数有哪些难点?
- gorm框架让你设计,从使用层面,你会怎么做?
- 支付和交易或者抽奖有接触过吗?现在有个场景:抽盲盒,假设一个人连续抽8发就成为霸主,这个订单只有他能支付。但是他可能会分几次抽。如果这个时候,有个人直接付款下单了,霸主就很不爽,你有什么好的思路?
- restful有了解过吗?如果现在要修改一个用户昵称,如何设计url以及使用http的那个方法?
- http 3.0有了解过吗?
- redis持久化机制和刷盘时,还有部分在内存中,redir会怎么办?
- linux启动后台进程,有哪些方式?说了3种
- 看log的命理你?在文件中如何查找,/,如果内容太大,内存放不下怎么办?grep和awk
- 你会主动了解周边的业务吗?
- 有自己负责的开源项目或者参与过哪些开源项目?
二面
2022.03.04 40分钟
- 自我介绍
- 听你说k8s了解过,说一下都有哪些组件?svc server都是干啥的?pod和容器什么关系?
- redir几种基础数据结构都是如何实现的?他们基于什么?说一下你怎么的高级数据结构?
- 布隆过滤器的原理和应用场景。
- 你说缓存击穿和穿透,说一下。
- 限流算法有哪些?go包自带的是基于啥?滑动窗口和一般的限流有什么区别?
- 知道熔断的原理吗?
- 微服务治理说说你的理解?提了链路追踪和监控。
- mysql如果你看执行计划,你一般会关注哪些?提了耗时,sql和索引……
- kafka中消费失败了怎么办?重新消费,一直失败呢?wtf?
- kafka消息丢失有哪几种方式处理?说了3种,有个至少一次,ack,其他没答上来
- kafka集群,分区之间如何rebanlace?……
总结:一面面试官很友好,诚恳,把岗位的背景介绍了一下,他们想要找有电商支付、抽奖经验的人,所以知道二面会尬聊,后悔为啥没直接撤退,浪费大家时间,事实证明被虐之后狂补Kafka作业,意外的有收获。
商米——Golang后台开发
第一个面试官
2022.02.21 (一面,1小时03分钟,2人同时)
开场白,自我介绍,聊项目,问Golang问题,MySQL问题,对微服务怎么看,其他问题等等。
- 你刚刚说到使用了Gin框架,说一下它为什么那么快?
- Goroutine你怎么理解?
- Goroutine为什么占用那么小内存?
- 刚刚提到GMP调度,简单说一下?
- 逃逸分析知道吗?什么情况下会逃逸分析?
- slice和数组的区别?slice动态扩容说一下?
- map的实现原理能简单说一下吗?
- 如何实现线程安全的map?使用互斥锁和Sync.Map,为什么那么快?
- 遇到过内存泄漏吗?举例说一下?说了goroutine泄漏和channel泄漏
- context包的主要作用是?超时,通信,级连取消。
- 如何取消多个goroutine的执行?
- Golang的最佳实践会总结吗?
- Go反射有了解过吗?说说原理和作用?
第二个面试官
- 过去的项目中,那个你成长最快,挑战最大,成就感最高?
- 在技术层面可以说说?
- 刚刚又说到管理TCP,那么说一下你们是怎么管理TCP的?
- 现在有一个场景,服务器负载2万TCP链接再也上不去,你怎么分析?
- mysql现在有一个sql执行比较慢,说一下你知道的所有可能导致慢的原因?
- 会到TCP,你们可客户端通信使用的协议是?TLS(TCP)+Protobuf
- tcp粘包问题怎么解决?协议头+Length,根据Length拆Body即可
- TLS是保障云的安全还是端的安全?
- 对于微服务怎么看?什么是微服务?
- 一般会遇到哪些问题,或者微服务要注意什么(有点忘了原问题)?
- 你在xxx呆了有小三年,说说你的加入给团队带来的改变或者新技术?
- 你的职业规划?
- 你刚刚说忘技术专家方向发展,那未来1-3年,你希望哪些方面有提示?
- 你的下一份工作,你希望公司具备哪些特质,比如创业公司、传统公司、经济基础?
- 你们一般项目的开发流程是什么样的?
- 持续发布是xx+jenkins那一套?
- 你从xxx离职的原因?
- 还有什么想要了解的?
- 说一下你负责模块的业务价值?
- 你目前的薪资?
总结:没下文,可能薪资给不到,或其他原因。BOSS上问原因也不回,感觉是刷KPI的。。
万向区块——高级工程师
一面
2022.02.16 50分钟
开场白,自我介绍,了解我的基本情况。
- go
- channel有哪些应用场景,有哪些要注意的坑?
- map有什么要注意的?说了线程安全、ok访问、遍历不能动态扩容的问题
- 很复杂的对象如何初始化?比如map的value 是一个结构体,里面又有map,以次类推。回答提供一个New 函数实现。估计是想问反射
- slice切片和数组有什么区别或者用法上有什么要注意的?
- slice扩容的规则是什么?原来的数据会怎么样?
- context有什么用?context包源码看过吗?有哪些方法证明给我看,withValue有什么用?
- 精度问题有遇到过吗?
- mysql调优
- where a=int and b=int and c=int order by d,怎么建索引?可以同时使用2个索引吗?
- innodb存储引擎有什么特性?
- 问我不关注调优,只关注高可用。问了几个高可用问题。怎么搭建主从?
- 我前面说了分库分表,问你是如何分库分表?在这种情况下,多个表的聚合查询要怎么做,有什么思路(不能借助其他组件,就在mysql上实现)?
- 事物隔离了解吗(有4种)?
- mvcc听过吗(想问幻影读)?
- redis
- 现在有个场景,一个key内容很大(几十M),一个key是热点,你如何优化?
- 如何优雅的删除这个大key?
- kafka
- 消费者和消费组的区别?
- kafka接收消息和rabbitmq有什么区别?
- 消费者从kafka接收消息是主动拉pull,还是kafka推送?
- docker
- 用在哪些地方?怎么用的?
- add和copy指令有什么区别?说本质没有区别
- k8s(一个没答上来)
- api server有什么用?
- master节点包含哪些组件
- grpc
- grpc用过吗?如果要新增一个接口,说一下你通常的流程?
- grpc是基于什么协议?
- 离职原因?
- 目前薪资和期望薪资?
- 目前公司加班吗?
二面
2022.02.22 50分钟
- go做题20道,大部分凉。在这里可找到:《105道Go语言面试题》https://www.topgoer.cn/docs/gomianshiti/mianshiti
- 手写一道mysql题,一张user表,一张签到表,每个人签到一次,有一条记录。手写SQL,把所有用户最早的签到时间打出来。
总结:凉。面试官拿笔记本打开一个Word,给了一张纸,一题一题过,每一题再白纸上写一下答案或者思路,被虐的很惨,撤退的心不在焉,幸好带了口罩,哈哈。。
趋动科技——Golang
一面
2022.02.07 30分钟
开场白,自我介绍,问一下项目情况
- 项目中遇到最有挑战的问题是什么?
- grpc有用到嘛?你们一般是怎么用的?相比http,性能有改进吗?
- 服务发现,你们是怎么做的?我回避了这个问题,说还是人工配置的。
- 听完你的项目描述,你更多是做一些运维和性能调优的工作,没有业务功能的开发吗?
- go
- channel的场景和作用?读close的channel会怎样?write呢?
- 除了channel,你能列举一下其他会引发panic的情况吗,比如map?回答了线程安全问题
- 实际项目中,您能列举一下要主动抛出panic的场景吗?回答说比如初始化mysql连接失败,http中严重的逻辑错误,给前端返回错误提示
- context包能简单说说吗,有哪些作用?回答了超时控制和多个routine取消
- mysql
- 如果你遇到一个sql查询很慢,你会怎么去做?回答看解释器,再分析慢再那里。然后优化sql(比如不要使用联合查询),分库分表。建立索引等等
- 联合索引你能介绍一下吗,还有它们的执行顺序?
- datetime和timestamp有什么区别?timestamp有什么限制?什么时候到期?怎么解决?
- docker一般是项目中怎么用的?说用来做编译环境,写dockerfile,然后通过docker compose单机编排,快速启动调试环境。
- k8s了解吗?回避了,对方就没怎么问
- 你还有什么想了解的吗?问了团队主要做什么产品以及是否会有Code Review和技术分享,面试总共有几轮。
- 你的职业规划是什么?说继续从事微服务分布式开发,如果有机会接触到k8s就更好,对这一块感兴趣。
二面
2022.02.22 1小时
1.聊项目,聊产品,吹牛逼,40分钟。
2.目前薪资,期望薪资。凉!
总结:凉,2人面试,总体面试难度简单,面试官给我的感觉可能不是搞技术的,问的不深。同时,公司相关基础设施都有了。最近又有一轮融资,资金方面不用担心。主要的业务是为AI开发做基础设置,加速AI训练,To B行业,995工作制。
关于作者
如果觉得文章写得还不错,欢迎关注公众号:《Go和分布式IM》