目的涌现研发实习生golang面经

## redis
### 都用过哪些指令?具体一些
我的项目中redis除了分布式锁的使用,就剩下一个验证码的存储了,所以我就说了加key、设置key过期时间的
### 分布式锁的流程

问:拿不到锁的业务怎么办?

> 如果别的业务拿不到锁就会自旋or进入队列等待和超时。

问:这样的话,会导致并发性能降低,有什么解决方法?

> 我不会,瞎说的:用乐观锁和版本控制降低锁的颗粒度。这里同学告诉我setnx就是乐观锁TAT

问:redis怎么实现乐观锁?

> 依旧不会,于是让我讲了mysql的乐观锁

## 项目

拷打了很久的项目,甚至让我投屏演示项目,我的docker有个一直卡着没启动好,耽误了10分钟,而且我投屏投错了,让面试官看着空白划鼠标了5分钟,汗流浃背了,好在最后启动成功了,挑了一个接口让我详细讲下如何写的。

### 服务发现&负载均衡
用的consul和nacos实现的,我自己写了个轮训的算法实现负载均衡,问我还有什么算法,我答了加权,保持最小连接数,urlhash,iphash,最短连接时间

### 链路追踪怎么实现的?怎么找到性能瓶颈怎么解决?
用的Jaeger,当时死活想不起来叫什么。
找到瓶颈后,如果是路由方面的瓶颈,尝试考虑扩容,如果是数据的瓶颈,尝试redis存储热点数据

### 测试和保证系统稳定性怎么做的?
用的接口管理平台,接口管理平台自带一个压测

### grpc+protobuf相比传统的http+json优势在哪?
grpc可扩展性很强,再多台服务器部署扩容几乎是无痛的,只要做好服务发现和负载均衡。
而protobuf相比json传输效率和压缩性能更强

### jwt相比cookie+session优势在哪?
我只说出来了jwt的优势,没说出cookie+session的劣势。

### 讲一下gmp?协程和线程的区别
gmp我讲完后,觉得我只是解释了3个词语分别是什么,没有讲到精髓。我又补充了窃取g,以及p队列初始化和流程,下来查看笔记觉得少答了抢占式调度吧
我提到协程锁用户级轻量的线程,切换性能更高,并发性更强,并且由用户调度,对内核无感

## 实习经历
问我了都做了什么?在实习的不同阶段都有什么不同收获,我没理解面试官的意思,把项目讲到比较细节的部分,他打断我说主要说阶段性的,以周或者月为单位。我就聊了下。

## 总结
依旧没有按照顺序写,想到什么写什么。
拷打了很多项目,我发现我很多时候,用到了xx技术,只是单纯看的教程和找的代码用到了,并不清楚为什么要用,以及相比于同类技术的优缺点在哪,这也是我接下来一个思考的方向,面试官给到了一些压力,也让我认识到了我的不足,八股方面特别是redis的,感谢面试官。
全部评论
uu拿到这家offer啦没呢
点赞 回复 分享
发布于 12-16 08:51 天津

相关推荐

12-12 21:52
武汉大学 Java
点赞 评论 收藏
分享
一、 技术深度问题A. 关于“身份识别与访问管理”项目系统部署与架构:这个系统的部署方式是怎样的?(本地部署、Docker部署等?)请描述一下这个服务的整体架构。JWT 技术细节:能简单说一下 JWT Token 的构成是什么样的吗?JWT Token 的头部(Header)一般包含什么内容?JWT Token 的载荷(Payload)部分,反解出来后一般会有什么内容?从一个业务逻辑上理解,要实现用户认证,这个 Payload 里应该放什么内容?加密算法为什么要放在 Payload 里?(面试官指出这是不合理的,意在考察理解深度)数据库设计:请说明用户表、角色表和权限表的库表设计,都有哪些字段?为什么要在用户表里存一个 Token?既然已经有 JWT Token 了,为什么还要把 Token 存在数据库里?你库表里面存的 Token 是什么信息?和 JWT Token 是什么关系?(面试官追问)这个 Token 存的是什么信息?技术选型与对比:有了解或使用过 Casdoor 或 Casbin 这类开源方案吗?B. 关于“校园社交平台”项目项目功能与设计:请说一下这个平台主要做了什么,流程是怎样的?登录方式用的是什幺?除了创建用户和发送文章,这个项目还有别的补充说明吗?比如库表设计或交互流程?帖子、文章和评论的库表是如何设计的?它们之间如何关联?有实现多级评论(评论中再评论)的功能吗?C. 通用技术问题(系统、数据库、语言)问题排查与性能优化:假设你开发的一个 API 接口,单个请求返回时间长达 4 秒,你会如何定位这个问题?如果发现是函数中查询数据库缓慢,又该如何定位?Docker:能简单说一下 Dockerfile 一般包含什么内容吗?有了解基础镜像(Base Image)吗?Go 语言底层:在 Go 语言中,对 map 执行 delete操作,如果 key 不存在,会有什么现象?如果 key 存在,删除后会立即释放内存吗?Go 语言中的 interface 能直接比较吗?Go 语言并发与上下文:对 context有了解吗?能简单说一下它一般用在什么地方吗?能举例说明会把什么数据存进 context里吗?数据库/SQL 优化:能说一下一般如何优化 SQL 语句吗?
查看28道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务