腾讯云后台技术一面挂
#面经### 1.自我介绍
## 2.实习和项目经历
1.项目目的是什么?
2.项目双阶段流程是怎么做的?为什么
3.如果要实现用户级别隔离的长期记忆该怎么做?
>我答得是入库,抽取知识图谱三元组,拼接上下文
4.k8s了解的多吗
5.平时写代码都怎么进行测试?都有哪些测试方法?重构一个系统如何保证用户的感知不变?
> 测试了解的不多,实习的工作有专门的测试,答了下:发灰度,然后回归测试,前后端联调用的apifox之前写好的一些请求集,还有请求重放
## 3.平时ai写代码怎么样保证正确性?
> spec驱动开发,然后还会让ai写测试
1.追问spec怎么写的:
> 我用的openspec工具,我认为让aispec最重要的是和ai交流逐步去完善spec的过程,我会在提示词里面专门加上让ai有不确定的东西和我讨论的内容,一般cursor会变成选择题的plan模式,claudecli之类的会停下来和确认
2.ai写好的东西怎么验证:
> 首先让ai自己写测试验证,给ai一些fewshot构造测试集,先把最基本的测试集合过了,然后我会让ai构建mvp,先保证能跑,然后再在mvp上逐步实现spec里面提到的各种todo,我认为能跑是最基本的要求,如果是前后端系统,跑起来后我会自己手动试一下相关的功能,检查下数据库什么的
> (现在想下可能再开始就建立一套验证标准就比较好,比如一些量化指标,让ai去达到)
## 4.go相关
1.go的goroutine讲一下:
> 触发我的八股背诵连招了,协程、gmp、调度、chan通信都背了下,面试官打断说ok我知道你会了
2.协程为什么比线程轻量?
> 协程是用户态的,切换不需要在内核态和用户态转换,节省了很多资源
> (感觉答少了)
3.如果让你实现一个协程(不用在意语言,谈思路),你会怎么做?
> 1.我认为既然协程是用户态轻量级的线程,最重要的就是调度器了,因为用户自主决定什么时候切换才是真正的自主
> 2.其次是清理机制,用完的要及时清理占用,这样可以保证并发性
> 3.资源分配系统,每个携程都需要从进程中拿到自己资源,所以资源的高效分配也需要
> 这里记不太清怎么答得了,我感觉对协程的理解大部分来自于go的goroutine,我回答的也都是go里面的一些机制,面试官让我自己实现,我大部分都是go的有什么,我答什么吧,也不能全部答成go的,很拧巴)
面试官提示:如果有个网络调用进来了要怎么做?
> 4.回答中断,要系统级别挂起等待中断,也可以用多路复用机制,比如维护多个socket链接,谁好了通知调度器
追问go的io多路复用怎么实现的的知道吗?
> 5.我回答我不太了解具体的,我只知道go维护了一个interface,把mac、linux(epoll),和windows的多路复用相关的功能都实现了那个interface,用那个interface来多路复用机制。底层的机制我不清楚,面试官说已经很好了
4.用过哪些web框架?你认为web框架和普通的请求处理最大的区别是什么?
> 1.我用过gin和python的一些框架,我认为首先web提供了更高性能的路由,相比普通的请求处理,性能更高,其次就是强大的中间件机制
追问都用过哪些中间件?
> 2.比如鉴权,jwt中间件,限流熔断的中间件,链路追踪中间件
追问redis和mysql中间件用过吗?
> 3.我回答我写的一般都是微服务框架,web框架一般只做路由,和rpc调用,和数据库接触的部分一般是rpc来实现的(好像redis也是中间件,这里应该说错了)
## 5.用过mysql说说索引吧
> 回答的聚簇索引和非聚簇索引区别,怎么样建立索引,索引下推,索引失效,索引回表,所以底层b+树,b+树和b树区别
## 6.手撕
[LCR 059. 数据流中的第 K 大元素](************************************)
我忘了python的堆咋定义了哈哈哈,ez题没撕出来,面试官和我都笑了,问了下思路结束了,他说和那边讨论下,如果加面的话考你aicoding
## 7. 七点半面试完大概九点半收到挂的邮件
## 2.实习和项目经历
1.项目目的是什么?
2.项目双阶段流程是怎么做的?为什么
3.如果要实现用户级别隔离的长期记忆该怎么做?
>我答得是入库,抽取知识图谱三元组,拼接上下文
4.k8s了解的多吗
5.平时写代码都怎么进行测试?都有哪些测试方法?重构一个系统如何保证用户的感知不变?
> 测试了解的不多,实习的工作有专门的测试,答了下:发灰度,然后回归测试,前后端联调用的apifox之前写好的一些请求集,还有请求重放
## 3.平时ai写代码怎么样保证正确性?
> spec驱动开发,然后还会让ai写测试
1.追问spec怎么写的:
> 我用的openspec工具,我认为让aispec最重要的是和ai交流逐步去完善spec的过程,我会在提示词里面专门加上让ai有不确定的东西和我讨论的内容,一般cursor会变成选择题的plan模式,claudecli之类的会停下来和确认
2.ai写好的东西怎么验证:
> 首先让ai自己写测试验证,给ai一些fewshot构造测试集,先把最基本的测试集合过了,然后我会让ai构建mvp,先保证能跑,然后再在mvp上逐步实现spec里面提到的各种todo,我认为能跑是最基本的要求,如果是前后端系统,跑起来后我会自己手动试一下相关的功能,检查下数据库什么的
> (现在想下可能再开始就建立一套验证标准就比较好,比如一些量化指标,让ai去达到)
## 4.go相关
1.go的goroutine讲一下:
> 触发我的八股背诵连招了,协程、gmp、调度、chan通信都背了下,面试官打断说ok我知道你会了
2.协程为什么比线程轻量?
> 协程是用户态的,切换不需要在内核态和用户态转换,节省了很多资源
> (感觉答少了)
3.如果让你实现一个协程(不用在意语言,谈思路),你会怎么做?
> 1.我认为既然协程是用户态轻量级的线程,最重要的就是调度器了,因为用户自主决定什么时候切换才是真正的自主
> 2.其次是清理机制,用完的要及时清理占用,这样可以保证并发性
> 3.资源分配系统,每个携程都需要从进程中拿到自己资源,所以资源的高效分配也需要
> 这里记不太清怎么答得了,我感觉对协程的理解大部分来自于go的goroutine,我回答的也都是go里面的一些机制,面试官让我自己实现,我大部分都是go的有什么,我答什么吧,也不能全部答成go的,很拧巴)
面试官提示:如果有个网络调用进来了要怎么做?
> 4.回答中断,要系统级别挂起等待中断,也可以用多路复用机制,比如维护多个socket链接,谁好了通知调度器
追问go的io多路复用怎么实现的的知道吗?
> 5.我回答我不太了解具体的,我只知道go维护了一个interface,把mac、linux(epoll),和windows的多路复用相关的功能都实现了那个interface,用那个interface来多路复用机制。底层的机制我不清楚,面试官说已经很好了
4.用过哪些web框架?你认为web框架和普通的请求处理最大的区别是什么?
> 1.我用过gin和python的一些框架,我认为首先web提供了更高性能的路由,相比普通的请求处理,性能更高,其次就是强大的中间件机制
追问都用过哪些中间件?
> 2.比如鉴权,jwt中间件,限流熔断的中间件,链路追踪中间件
追问redis和mysql中间件用过吗?
> 3.我回答我写的一般都是微服务框架,web框架一般只做路由,和rpc调用,和数据库接触的部分一般是rpc来实现的(好像redis也是中间件,这里应该说错了)
## 5.用过mysql说说索引吧
> 回答的聚簇索引和非聚簇索引区别,怎么样建立索引,索引下推,索引失效,索引回表,所以底层b+树,b+树和b树区别
## 6.手撕
[LCR 059. 数据流中的第 K 大元素](************************************)
我忘了python的堆咋定义了哈哈哈,ez题没撕出来,面试官和我都笑了,问了下思路结束了,他说和那边讨论下,如果加面的话考你aicoding
## 7. 七点半面试完大概九点半收到挂的邮件
全部评论
相关推荐