背景
- 公司:深信服
- 部门:云计算部
- 第几面:一面
- 方向:后端开发
- 语言:Go
- 投递渠道:Boss
- 面试时间:2024.9.29 19:30
- 面试方式:线上(showmebug.com)
总体情况
面试时间大概持续1小时,前半小时聊项目,后半小时八股+算法。面试工具是showmebug.com浏览器在线面试工具。
面试官没开视频,语音听起来比较年轻,比迅雷的面试官更积极,思维更活跃,比较喜欢就着你的回答内容进行追问。
项目
- 说一下项目框架,请求从客户端开始的流程(我回答:客户端请求 -> CDN加速 -> 阿里SLB -> Nginx -> 网关层做鉴权和全链路日志 -> 微服务的实例节点)
- 你提到CDN加速,CDN加速只对静态资源有效,对你们短链接应该是没太大帮助的,这你知道吗?(其实这里面试官说的不大准确,腾讯的ECDN其实能对动态资源加速,但没跟面试官作过多纠缠)
- 还有你提到了SLB,SLB是什么有什么作用?SLB是做负载均衡的,有了解SLB调度策略吗?
- 你们微服务框架是什么
- 介绍一个你做的项目吧
- 开始问我写的第一个项目的难点&重点
八股
- go的切片数据结构是什么
- channel在什么情况下会panic
- goruntine的数据结构是什么?能简单讲一下吗?换一个问法吧,为什么goruntine能够使用channle去做安全的并发呢?
- 你们在go语言上遇到比较多的问题什么?(回答:内存泄漏,之前有个问题就是把map定义到了全局变量里面,然后有协程不断往里面加数据)
- 如果我给你这个全局变量的map不停的写,然后再不停的删,会泄漏吗?(回答:还是会泄漏,因为删除map里面的值,只是把bitmap里面的元素key-value置空,并不会回收内存空间)
- 如果遇到这种情况应该怎么解决呢?(回答:把map放到方法里面,就相当于变量存在栈里,这样方法结束的时候变量就被回收掉,不需要等待GC了)
算法
给一个字符串,找出“重复单词”的个数(不区分大小写)。“重复单词”的定义是连续两个单词是一样的,比如:“cat CAT dog”,1个重复;“cat dog cat”,没有重复。
题目做出来了, 但是测试用例有一些没过,我问面试官哪些用例没过,有可能漏了一下情况,我再看着改一下。面试官说不用了,你也差不多做出来了
其他
- 你觉得最自豪的一件事是什么?
- 你有什么要问我的吗?