面试感想,当程序员至少应该懂点网络知识

2015-04-05 01:49:52 +08:00
 geeti
面new grad,问了他几个比较基础的网络知识,居然都不知道。
1. ARP原理,包括arp reply, gratuitous arp
2. TCP如何作flow control
3. Demo一个UDP Hole Punching的例子

感想,不了解网络的程序员不是好码农
15751 次点击
所在节点    程序员
117 条回复
yangff
2015-04-06 00:08:34 +08:00
sigh
jedihy
2015-04-06 00:21:41 +08:00
@geeti TCP Header里面的window是通告窗口,advertise window,不是sliding window。这个字段是16位的=2个byte。
如果没有中间公网主机,UDP穿墙基本穿不了。
这些东西对于OS kernel dev 确实是需要知道的。
Andiry
2015-04-06 00:30:33 +08:00
@sallowdish 本科都没毕业当然是秒答了,等你工作个几年再来回答试试。
sinxccc
2015-04-06 00:41:24 +08:00
常年工作在二层三层的路由器码工表示问题 2 和 3 都得先想想才能回答,而且把握也不是十足╮(╯_╰)╭
geeti
2015-04-06 01:28:13 +08:00
@liruqi 在mountain view,非google.
geeti
2015-04-06 01:34:26 +08:00
@damngood 呃,demo就是大致说一下机制的意思。。。你理解成了implement
geeti
2015-04-06 01:38:46 +08:00
@e1eph4nt 国内气氛如此。浮躁,功利。
geeti
2015-04-06 01:47:11 +08:00
@zeayes 招new grad都这样。两到四轮电话面试,6-8轮onsite面试
jarlyyn
2015-04-06 02:47:04 +08:00
楼主62天里换过公司么?

https://www.v2ex.com/t/167461#reply7

感觉对面试者的要求程度和对自己的偏差程度很大啊。
JackWindows
2015-04-06 03:07:23 +08:00
我觉得都挺简单啊,我本科刚毕业,数学系的,这些知识都是平时看着玩学来的。我大一的时候学过ccna,但是现在证书已经过期了,而且我认为ccna学到的内容根本不足以回答这三个问题;ccna是以配思科交换机为主的,真正的计算机网络还是要靠自己学。
1. arp原理就是第一次找人的时候喊一句人名,然后那个人就跑出来应答一下嘛
2. tcp流控就是靠window机制嘛,window决定单次连续传输的数据量,一开始挺小,然后指数增加,遇到丢包之后减半,最后进入线性增长模式。当然这是标准的拥塞控制,还有其他各种变种。
3. udp协议的nat打洞很简单啊,预测下nat src port增长规则就好了啊,比如iptables的默认nat规则是下一条流映射到的src port加1,知道这个之后让另一方直接往预测的端口发包就可以了。当然这个还跟不同的nat实现有关,nat根据实现还分很多种模式,最难打洞的应该算是symmetry的吧。
q397064399
2015-04-06 08:07:19 +08:00
1.arp属于二层协议,不涉及相关网络开发,二层根本无需了解,osi还分了7层,实际上只有4层协议,给应用程序程序员用的就是tcp udp,你招个javaee 然后说 我们要你精通 tcp/ip协议,这tm是扯犊子
2.tcp window 大小 不学网络工程相关的基本上不知道
3.nat穿透 不同的类型nat完全不一样
xiparos
2015-04-06 08:11:24 +08:00
程序员也分很多种 +1
geeti
2015-04-06 08:51:40 +08:00
@jarlyyn 真服了。有什么关系么?题又不是我出的,只是我随机从题库指定给我的category里挑。我觉得挺基础,但面试的人却完全不懂,感慨一下咋了?公司所有员工(入职1年以上)每天半小时属于面试时间。
geeti
2015-04-06 08:56:05 +08:00
@jarlyyn 另外我那个帖子里是个很傻逼的问题么?会就会,不会就问,怪里怪气的有意思?
coolcfan
2015-04-06 09:08:25 +08:00
一直看到 OS Kernel Dev 才明白……
建议补充一下,把职位写上……
fgwww
2015-04-06 09:13:16 +08:00
不会面试就别面试了。就跟去问java程序员c++模版差不多的感觉
deepreader
2015-04-06 10:28:55 +08:00
作为一个new grad,我就是来长下见识而已。
fullstack0xyz
2015-04-06 11:22:54 +08:00
做底层的对网络不应该很熟悉么

非科班的野生web程序员,大概翻过(没看完)TCP/IP详解卷一,自顶向下计算机网络,第三个问题答不上,前两个还是能扯到点上。

另外,夹杂点专业术语名词也没啥问题吧,难道问你http协议的时候说,来给我讲讲“超文本传输协议”?
Andiry
2015-04-06 11:38:33 +08:00
OS kernel dev 应该了解的知识应该是内存管理,同步,调度,中断,驱动框架,文件系统,DMA,MMU/IOMMU这些吧。这么多方面的内容,随便问点什么也比什么http协议有用。
phoeagon
2015-04-06 11:43:26 +08:00
@geeti 滑动窗口快速启动aimd

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/181636

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX