go语言一百道练习题
这里是一百道go语言面试题
极客李华
优快云,腾讯云,阿里社区内容合伙人、系统分析师、全网都叫极客李华,交流合作私信+。欢迎技术交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go语言面试题:grpc和http的区别
综上所述,gRPC和HTTP在不同的场景下各有其优势,使用时应根据具体情况来进行选择。如果需要高性能的服务之间通信,则可以选择gRPC,而在Web浏览器与服务器之间传输数据时则更适合使用HTTP。gRPC在性能方面优于HTTP。而且gRPC通过使用连接池,实现客户端与服务端的长连接机制,使得延迟较低,在高网络带宽时表现更好。HTTP使用文本基础的协议,而gRPC使用的是二进制协议,这意味着gRPC数据包更小,传输效率更高。另外,gRPC使用HTTP/2协议,支持多路复用,从而可以更好地处理并发请求。原创 2023-06-08 12:01:51 · 3764 阅读 · 0 评论 -
go语言面试题:如何把jwt和用户对应起来
另外,在开发过程中还需考虑JWT签名的安全性,在签发JWT和验证JWT时保持签名算法、加密算法等的一致,以确保JWT信息的完整性和安全性。当客户端向服务器发出需要认证的请求时,服务器会检查JWT是否有效,并从JWT中提取payload信息以获得用户信息。为了将JWT与用户关联起来,需要在生成JWT时将一些特定的用户信息(例如用户ID)作为JWT的一部分进行编码。总之,将JWT与用户关联起来需要在JWT里面传入用户相关的信息。在服务端的代码里解析JWT获取这些信息,就可以跟具体用户进行对应了。原创 2023-06-08 12:00:05 · 154 阅读 · 0 评论 -
go语言面试题:令牌桶算法原理
我们可以设置一个容量为 100 的桶,在程序初始化的时候放满 100 个请求,随着时间的流逝,桶里的请求会以一定的速度汇聚起来。用户每请求一次来,桶内的请求数就减1,当桶内请求数降到零时,没有剩余的请求令牌,此时新的请求将无法直接经过,而是等待下一次请求到来时,会先把桶内的一部分请求令牌补充回来再去消费。具体来说,令牌桶算法会在桶内放入固定数量的令牌,这些令牌以固定的速率自动回复。需要注意的是,令牌桶算法存在着令牌供应不足的情况,因此我们需要设置合理的令牌发放速率和桶容量参数,保证系统能够有效运行。原创 2023-06-08 12:01:32 · 262 阅读 · 0 评论 -
go语言面试题:令牌桶算法和其他限流方式的对比
固定时间窗口限流即某个时间段内只允许一定数量的请求通过,这种方式很容易造成流量的聚集,例如,平均每秒可以处理10个请求,10秒钟内却还有20个请求待处理,那么前10秒时间内会出现限制请求的时间和后面的间歇时间。漏桶算法会以固定的速率将请求输出到网络上,当网络拥塞时,由于上游发送的数据流量过大而无法承载,此时的漏桶算法对于域名下默认所有流量都进行等比例丢弃,该算法可能导致浪费网络资源并带来应用程序响应延迟甚至瘫痪。与之相反,令牌桶算法是以恒定的速率向令牌桶中添加令牌,当令牌足够多时,请求会得到及时处理。原创 2023-06-08 12:01:16 · 392 阅读 · 0 评论 -
go语言面试题:主键索引和唯一索引的区别
总之,主键索引是比唯一性索引更加严格限制的一种索引类型,常用于快速查找和关联操作,而唯一索引主要是为了数据表中的具有唯一性分约束列添加保证数据表数据完整性和正确性的索引,用于快速与更新操作。而主键索引除了唯一性属性之外,还应该满足非空属性,即主键列不能有重复的 NULL 值。在InnoDB存储引擎中,如果未将 PRIMARY KEY 或 UNIQUE 关键字分配给索引声明,则第一个非NULL唯一索引被用作InnoDB的主键索引。如果没有明确的理由,在对需要添加或修改约束的列进行索引时,最好使用主键索引。原创 2023-06-08 11:59:18 · 272 阅读 · 0 评论 -
go语言面试题:MySQL索引有哪几种
主键索引:在 MySQL 中,如果你没有为一个表设置索引,则系统默认采用主键索引作为该表的唯一索引,主键索引使用B-Tree算法,并保证要求自动进行排序。R-tree空间索引:R-Tree索引通常应用于 GIS 地图应用、物理存储空间的管理等场景,其通过四叉树算法和 B-Tree 算法结合起来将空间所有数据数据看成一个 n 维平面,用类似于 B-Tree 的技术处理效率较快。BTree 索引:BTree索引是一种平衡树而不是Hash方式实现,并且支持范围查询,为最常使用的索引类型之一。原创 2023-06-08 12:00:30 · 114 阅读 · 0 评论 -
go语言面试题:介绍一下B+树
叶子节点不存储指向记录的指针:叶子节点为所有数据的末端节点,在B+树中只有叶子节点才包含用户定义的所有数据信息,而非数据指针,所以每次查询都能够保证信息定位需要遍历的最少节点数目,减少I/O操作次数。基于以上特点,B+树适合于在磁盘等大容量存储介质上建立大型、稠密的索引,尤其针对范围查询、排序和聚类等操作的便捷性较好,因此广泛应用于数据库和文件系统中。内部节点不存储关键字的具体值:B+树节点内部仅存储键值的索引信息,而非整个键值信息,因此能够提高每个节点存储大量键值,提升了磁盘利用率和查询性能。原创 2023-06-08 12:00:21 · 114 阅读 · 0 评论 -
go语言面试题:简述bitmap的应用场景有哪些
布隆过滤器:用来判断一个元素是否属于集合。Web 日志分析:用来统计访问者信息。数据库索引:用来高效地进行数据查询。缓存位图:用来高效地实现缓存管理。图像处理:用来表示和操作图像数据。原创 2023-06-08 12:00:05 · 273 阅读 · 0 评论 -
go语言面试题:最长公共前缀
然后我们以该主导前缀的长度为基础,检查当前位置是否与所有其他字符串相符合。如果不完整并且我们没有找到新的前缀,则将当前前缀末尾截掉一个字符(在此代码中,我们首先通过假设第一个字符串为最长公共前缀(),则最终的返回应该是我们已经找到的最长公共前缀。当这个例程完成并且所有其他字符串都已经被检查(原创 2023-06-08 11:58:15 · 207 阅读 · 0 评论 -
go语言面试题:两数之和
循环遍历该传递进来的数组。最后,若遍历完了整个数组,仍未找到满足条件的数,则返回。在此代码中,我们首先创建了一个 map 变量。,用于存储数字对应的索引。原创 2023-06-08 11:57:53 · 164 阅读 · 0 评论 -
go语言面试题:为什么选择go语言
内存管理:Go 语言自带垃圾回收机制,并且采用了一些特殊的技术,例如允许使用指针但避免出现悬空指针等,从而增强了内存管理的能力,减少了开发人员处理内存相关事宜的工作。例如,在高并发的Web应用程序中,Go 语言被广泛应用,如微服务框架、云原生应用开发、区块链等。并发和高并发:Go 语言在设计之初就考虑了并发和高并发方面的问题,将其内置于语言层面上,在编写代码时容易实现并发,提升程序的性能。开发工具丰富:Go语言是开源的,所以有很多优秀的开发工具,例如Goland、Visual Studio Code等。原创 2023-06-08 11:59:09 · 157 阅读 · 0 评论
分享