面试有被问到网络 IO 的问题,这玩意儿到底有啥用处?(理解它的必要性、使用场景等)
网上的博客都在说细节,就把它当作八股文的一部分,我想知道一些实际的用途
1
kenneth104 2022-08-27 10:28:49 +08:00
网络 IO ,这话题感觉很大?
是特指 sockets 套接字么? |
2
fengchen0vr 2022-08-27 10:29:00 +08:00 3
硬件方面,中断之类的会占用 cpu
软件方面,发包延时,队列 |
3
uiosun OP @kenneth104 面试官就问我网络 IO ,没有特指……所以我也不知道到底是 socket 、eproll 或者啥了
|
4
documentzhangx66 2022-08-27 10:37:54 +08:00
既然面试官没特指,那你就给他上一课,从网络被发明时讲起嘛,然后讲到各种网络协议、现代网络结构、各种网络硬件与软件,等等。
|
5
kenneth104 2022-08-27 10:38:24 +08:00
是挺笼统的问题,尝试在你认知内回答就好。。感觉不用硬顶着回答
|
6
wellsc 2022-08-27 10:40:22 +08:00
有点反智了
|
7
ryd994 2022-08-27 10:53:04 +08:00 via Android
如果你不知道有啥用,那就没啥用。计算机是一门实践技术,要用什么学什么。
|
8
bigbyto 2022-08-27 11:11:47 +08:00 via iPhone 4
IO 是很多东西的基础,不理解的话也很难理解其他框架,容易人云亦云。
比如 tomcat 是如何操作 web request 的,你不理解 io 模型,就不理解为什么要那样设计。 还有 kafka 为什么性能那么高?就是因为 zero-copy 和顺序 io 以及充分利用了 page cache 等等。 这是个基础,别因为是八股文就排斥。之前写过一篇 io 的,自认为还可以,有兴趣可以参考一下。 https://wiyi.org/linux-io-model.html |
9
bigbyto 2022-08-27 11:15:44 +08:00 via iPhone
再举个例子,tomcat 和 netty 一个是阻塞 io ,一个非阻塞(多路复用),让你去调整它们的线程池,不懂 io 的话,你就不知道怎么调,只能瞎蒙。
|
10
myd 2022-08-27 11:33:24 +08:00
线上系统偶尔会出现网络问题,不了解原理的话很难定位问题
|
11
darkengine 2022-08-27 11:59:22 +08:00 2
前端:大部分 UI 卡顿跟网络 IO 有关
后端:服务的并发、请求调度跟网络有关,随着分布式的发展,连存储都跟网络 IO 有关。 你说理解网络 IO 有啥用 |
12
Helsing 2022-08-27 12:05:35 +08:00 via iPhone
简单点说,网络 IO 设计的不好会影响网络吞吐量,进而影响访问速度,下游或用户就会发现服务访问慢,直接感受就是体验不好,最后就有可能导致用户流失。用户流失那钱就没了。
|
14
uiosun OP |
15
fkdtz 2022-08-27 12:44:20 +08:00
现如今的业务场景几乎没有只需要单机处理就能满足的,而且摩尔定律早已失效,提升单机性能已达极限,所以基本上都是分布式系统了。
网络 IO 之于分布式系统,就像文件 IO 之于单机系统。 利用 IO 的特点,发挥最佳性能,如果不理解 IO ,就没办法实现。 |
16
janus77 2022-08-27 12:51:50 +08:00
八股文确实是没用啊,不过是大部分基层工作没用,随着你技术的深入就会发现用处了。我也不知道他现在有什么用,但并不妨碍我继续学他
|
17
fox0001 2022-08-27 14:48:09 +08:00 via Android
1 )不知道你面试的什么工作和职位,很难判断。
2 )“网络 IO”这几个字很模糊,或者说范围大。或者问问面试官想要问什么? |
18
Jooooooooo 2022-08-27 17:28:15 +08:00
redis 为什么是单线程的?
|
19
akira 2022-08-27 18:04:15 +08:00
对 CRUD boy 确实没啥用。 一个公司里面 有那么 2 个人会就行了。
大部分公司没人会也没啥事。。。 |