斗鱼9.3 c++后台开发一面凉经

项目
webserver的应用场景是什么呢?
webserver的性能是怎么样呢?
线程池是怎么做的呢?
io epoll是在哪个线程里面?
为什么连接数过多会报错呢?
linux进程可以限制进程描述符的数量,要是此时已经达到上限,新的连接来到了,肯定会访问失败,你是怎么处理的呢?
如果你不处理,你的边缘触发还能处理吗?
有了解一些开源的比较优秀的c++web服务器吗?
你设计的这个webserver什么时候关闭呢?
你先发个数据,你再close,这个数据能发出给客户端吗?
close函数会暂停阻塞吗?(会有问题)
close_wait状态过多是因为什么问题?

c++
c++11里面share_ptr是怎么实现的
stl双端队列是怎么实现头部尾部插入事件复杂度是O(1),随机访问也是O(1),它是链表吗?
c++ 同类型的两个对象,把他们的内存按字节进行交换,这两个对象还可以使用吗?
构造函数调用虚函数会有什么问题?
虚函数表的构建到底是在构造函数的哪一步?
虚函数到底是什么时候就可以调用了,什么时候才能准备好呢?


总结:项目经验十分不足,被问麻了,还是要多回去把项目研究透研究懂,c++方面虚函数表的一个构建时间还是不是很熟悉,要再回去看看。



#面经##斗鱼#
全部评论
请问斗鱼的面试怎么知道挂了?会有感谢信吗?
点赞 回复 分享
发布于 2021-09-07 21:17

相关推荐

Web缓存是一种用于临时存储网页资源的机制,它可以提高网页加载速度和减少网络流量。浏览器会在本地存储已访问过的资源(例如HTML、CSS、JavaScript、图像等),当再次访问相同资源时,浏览器会尝试从缓存中获取资源,而不是重新下载。浏览器缓存的工作原理如下:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=b48bebe08e474db8b80b853b12bafd48当浏览器首次请求某个资源时,服务器会在响应中附带缓存相关的HTTP头信息,例如"Cache-Control"和"Expires"。浏览器会将这些资源以键值对的形式保存在本地缓存中,键是资源的URL,值是具体的资源内容。下次请求相同资源时,浏览器会检查缓存中是否有匹配的资源。 a. 如果缓存中存在匹配的资源,并且缓存未过期(根据"Cache-Control"和"Expires"头信息判断),则浏览器直接从缓存中获取资源。 b. 如果缓存中存在匹配的资源,但缓存已过期,则浏览器发送带有"Cache-Control"和"Expires"头信息的条件请求,即发送一个"If-None-Match"和/或一个"If-Modified-Since"头信息给服务器,用于验证资源是否有更新。如果服务器返回304状态码表示资源未更新,则浏览器从缓存中获取资源;否则,服务器会返回新的资源。 c. 如果缓存中不存在匹配的资源,则浏览器会发送完整的请求给服务器,并将获取到的资源保存到缓存中。
点赞 评论 收藏
分享
头像
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配图神器#
投递叠纸游戏等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
24
分享

创作者周榜

更多
牛客网
牛客企业服务