贝壳golang9.17凉经
自我介绍
一.channel底层原理?
答:channel有几个重要的字段:
1.buf指向底层的循环数组,只有设置为有缓存的channel才会有buf
2.sendx和recvx分别指向底层循环数组的发送和接收元素位置的索引
3.sendq和recvq分别表示发送数据的被阻塞的goroutine和读取数据的goroutine,两个都是双向链表结构
4.sendq和recvq的结构为等待队列类型,sudog是goroutine的一种封装
二.channel是如何发送数据的?
答:1.首先看看recvq是否为空,如果不为空,直接从recvq队头取出一个goroutine,将数据发送过去,并唤醒goroutine
2.如果recvq为空,则将数据放入到buffer中
3.如果buffer满了则将goroutine放入sendq队列中,并将当前goroutine置为waiting状态
三.golang中如何拼接字符串?哪种效率最高?
答:
1.在已有字符串数组的场合,使用 strings.Join() 能有比较好的性能
2.在一些性能要求较高的场合,尽量使用 buffer.WriteString() 以获得更好的性能
3.性能要求不太高的场合,直接使用运算符,代码更简短清晰,能获得比较好的可读性
4.如果需要拼接的不仅仅是字符串,还有数字之类的其他需求的话,可以考虑 fmt.Sprintf()
四.介绍下项目的主要内容?
五.单点登陆怎么实现的?
六.说说你对Elasticsearch的了解?
七.说说平时是怎么优化程序性能的?
八.说说对kafka和zookeeper的了解?
九.项目中你是怎么使用kafka的?
十.说说DevOps自动化工作流你是怎么搭建的?
算法:
一、判断链表是否有环?
二、算法三数之和?
一.channel底层原理?
答:channel有几个重要的字段:
1.buf指向底层的循环数组,只有设置为有缓存的channel才会有buf
2.sendx和recvx分别指向底层循环数组的发送和接收元素位置的索引
3.sendq和recvq分别表示发送数据的被阻塞的goroutine和读取数据的goroutine,两个都是双向链表结构
4.sendq和recvq的结构为等待队列类型,sudog是goroutine的一种封装
二.channel是如何发送数据的?
答:1.首先看看recvq是否为空,如果不为空,直接从recvq队头取出一个goroutine,将数据发送过去,并唤醒goroutine
2.如果recvq为空,则将数据放入到buffer中
3.如果buffer满了则将goroutine放入sendq队列中,并将当前goroutine置为waiting状态
三.golang中如何拼接字符串?哪种效率最高?
答:
1.在已有字符串数组的场合,使用 strings.Join() 能有比较好的性能
2.在一些性能要求较高的场合,尽量使用 buffer.WriteString() 以获得更好的性能
3.性能要求不太高的场合,直接使用运算符,代码更简短清晰,能获得比较好的可读性
4.如果需要拼接的不仅仅是字符串,还有数字之类的其他需求的话,可以考虑 fmt.Sprintf()
四.介绍下项目的主要内容?
五.单点登陆怎么实现的?
六.说说你对Elasticsearch的了解?
七.说说平时是怎么优化程序性能的?
八.说说对kafka和zookeeper的了解?
九.项目中你是怎么使用kafka的?
十.说说DevOps自动化工作流你是怎么搭建的?
算法:
一、判断链表是否有环?
二、算法三数之和?
全部评论
贝壳还有go吗
这还凉?
本科还是硕士呀老哥
都答上来了也凉凉了吗
相关推荐
![](https://static.nowcoder.com/fe/file/oss/1716965564844UEBJN.png)
![](https://static.nowcoder.com/fe/file/oss/1716965585666UBBME.png)
深信服
| 校招
| 14个岗位
点赞 评论 收藏
分享
![](https://static.nowcoder.com/head/header0001.png)
点赞 评论 收藏
分享