上海某小厂,go后端面经

自我介绍

问项目

golang的锁机制如何解决缓存穿透?用的什么锁?Mutex

用etcd做了什么,怎么实现的?

服务发现用的什么协议/etcd服务器和程序如何通信?tcp协议

为什么不用HTTP协议?可靠性

TCP和HTTP的区别?

项目类似于redis,实现了redis中的那些类型?string

redis有哪些数据类型?用过哪些? string,list,set,sort set,hash 分布式锁、消息队列

sort set的底层是什么?跳表

了解过跳表吗?没有

rabbitmq做过哪些东西?是1个生产者对多个消费者吗?

详细讲解分块上传、断点续传的过程

进度是按照分片块数还是分块大小?

python有接触过吗?

全是针对项目,几乎无八股

全部评论
没算法题吗
1 回复 分享
发布于 01-22 22:00 山东

相关推荐

头像
01-21 00:23
已编辑
深圳大学 golang
博主目前是一名Go语言从业者,现在某独角兽企业担任后端开发工程师,6年编程经验,将近2年的Go语言大型微服务项目开发经验。目前专注于Go语言领域的程序逻辑/架构设计/项目实践等。今天想和大家聊聊适合Go语言开发者的从业选择,帮助牛友们更有针对性地投递目标岗位,提高求职效率。一、Web后端开发在Web应用的架构体系里,后端开发是支撑整个系统稳定运行的关键支柱。Go语言凭借其出色的网络编程能力与高效的运行速度,成为Web后端开发的理想之选。Go语言拥有丰富的标准库,能够轻松实现HTTP服务器的搭建,极大地提升开发效率。例如,使用Go标准库中的 net/http 包,几行代码便能构建出一个简易的HTTP服务器。同时,诸多成熟的Web框架如Gin、Beego等,进一步简化了开发流程,让开发者能够将更多精力投入到业务逻辑的实现中。这些框架不仅具备高效的路由系统、中间件支持,还拥有良好的扩展性,能够满足不同规模Web应用的需求。写过Go语言入门项目bluebell的小伙伴应该对这部分有所体会。在实际应用中,像字节跳动等众多互联网企业,其部分核心业务的后端服务便是基于Go语言开发,以应对海量用户的高并发请求,确保服务的稳定与流畅。这也是我目前所从事的方向。二、网络编程网络编程领域,Go语言的优势尤为显著。其内置的轻量级线程goroutine和用于实现并发安全数据传输的channel,使得开发者能够轻松编写高效且并发性能卓越的网络程序。无论是开发网络服务器、客户端,还是实现网络协议,Go语言都能游刃有余。例如,在开发即时通讯应用时,通过goroutine可以轻松处理大量用户的连接请求,利用channel实现消息的高效传递与同步,确保消息的实时性与准确性。而且,Go语言对TCP、UDP等常见网络协议的原生支持,使得开发者能够方便快捷地构建各类网络应用,如分布式系统中的节点通信模块、网络爬虫程序等。许多大型网络服务提供商,利用Go语言开发的网络组件,高效地处理着全球范围内的海量网络流量,保障网络服务的稳定与高效。三、中间件开发中间件作为连接不同软件组件的桥梁,在现代软件系统架构中起着不可或缺的作用。Go语言凭借其高性能、低内存占用的特性,在中间件开发领域占据了重要地位。开发者可以利用Go语言开发出功能丰富的中间件,如缓存中间件、消息队列中间件、日志记录中间件等。以缓存中间件为例,通过使用Go语言开发的高效缓存算法和数据结构,能够快速地对数据进行缓存与读取,极大地减轻数据库的压力,提升系统整体性能。消息队列中间件则可以借助Go语言的并发处理能力,实现消息的可靠异步传输,确保系统在高负载情况下的稳定运行。在企业级应用开发中,这些基于Go语言开发的中间件能够无缝集成到现有系统架构中,优化系统流程,提高系统的可维护性与扩展性。比较知名的用Go语言实现的中间件有etcd、docker、kubenetes等。这里推荐一下极客兔兔七天系列教程,极客兔兔的七天系列项目涵盖了Web框架、分布式缓存、RPC框架和ORM框架,包括我之前推荐过的bitcask项目,对有志于从事基础架构或中间件开发的小伙伴来说都是非常不错的入门项目。四、区块链区块链技术作为一种新兴的分布式账本技术,正在全球范围内引发各行业的变革。Go语言因其高度的安全性、出色的并发性能以及对分布式系统的良好支持,成为区块链开发的热门语言之一。在区块链项目中,Go语言被广泛应用于区块链底层协议的实现、智能合约的开发以及区块链节点的构建。例如,以太坊的Go语言客户端Geth,为以太坊网络的稳定运行提供了坚实保障。Go语言开发者可以参与到区块链核心算法的优化、共识机制的实现以及跨链技术的研究等关键工作中。随着区块链技术在金融、供应链、医疗等领域的深入应用,Go语言在推动区块链技术创新与落地应用方面发挥着至关重要的作用,拥有广阔的发展空间。五、游戏开发在游戏开发领域,Go语言虽然不像传统C++那样广为人知,但它正凭借自身独特的优势逐渐崭露头角。特别是在游戏服务器端开发方面,Go语言展现出了巨大的潜力。Go语言的高性能和高效的并发处理能力,使其能够轻松应对大量玩家同时在线时产生的高并发请求。通过goroutine和channel,开发者可以高效地管理游戏中的各种资源,如玩家连接、游戏状态更新、数据存储与读取等。同时,Go语言的跨平台特性使得开发出的游戏服务器能够在不同的操作系统环境中稳定运行。一些新兴的游戏工作室已经开始采用Go语言开发游戏服务器,以提升游戏的性能和稳定性,为玩家带来更加流畅的游戏体验。此外,在开发一些轻量级的网页游戏或者游戏辅助工具时,Go语言的简洁性和快速开发特性也能发挥重要作用。比较知名使用Go语言作为游戏开发语言的游戏厂商有腾讯、网易、叠纸游戏等。以上就是我总结的五个Go语言学习者适合从事的大方向。之所以写这篇文章,主要还是看到网上许多小伙伴不清楚Go语言相较于其他编程语言的优势,自然也就不知道Go语言在实际工作中的应用领域。明白了Go语言的优势和应用领域,大家就可以找到自己感兴趣的领域,专注地去学习相关领域的专业知识了。等到大家以后在自己的领域有所心得,回过头来往往会发现:选择方向的意义要远远大于编程语言的选择。掌握一门编程语言往往只是敲门砖,真正让我们成为一名合格开发者的,是对于行业的深刻认识和自己独到的理解,这才是我们身为软件工程师的核心竞争力!#牛客AI配图神器#
投递叠纸游戏等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

更多
牛客网
牛客企业服务