面试的时候考 TCP 三次握手/四次挥手这个问题的价值在哪里? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VDimos
V2EX    问与答

面试的时候考 TCP 三次握手/四次挥手这个问题的价值在哪里?

  • /li>  
  •   VDimos 2019-08-18 22:51:08 +08:00 5916 次点击
    这是一个创建于 2244 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。 现在的互联网公司面试,都喜欢提一个 TCP 三次握手 /四次挥手的问题。可是这种问题且不说以后是否能不能用到,也不提记忆留存率有多高,光网上搜索“面试题”基本都能看到这个问题。那么面试官没考虑过这个问题吗?面试者很容易就能猜到这个面试题,也能随便从网上搜到答案对答入流。 如果想考察 TCP 的问题,这个问题光问三次握手 /四次挥手几乎没什么价值,更多的核心知识比如 TCP 数据报组成、TCP 慢启动 /拥塞避免 /快速传输 /快速恢复 /窗缓存等等等等,更能考察面试者对 TCP/IP 协议的了解程度。 如果是想考察对网络的了解,那这个范围就更大了,三次握手这种问题完全问来无意义。 如果想考察面试者的见识,那么这个问题似乎更没价值了,因为这个问题几乎都被问烂了,似乎成为共识了。 所以,是不是说,大家的面试题很大程度上都开始趋同了?还是说,这些面试官的思维固化了?或者说句比较冒犯的话,面试者的技术不高?(可是国内大公司也喜欢问)

    26 条回复    2019-09-28 17:55:18 +08:00
    ZRS
        1
    ZRS  
       2019-08-18 23:01:18 +08:00
    正如你说既然是一道烂大街的题,为什么不拿来考呢?就是考基础啊,而且真的有效。

    我前天接到的一个电话问题:TIME_WAIT 出现在 TCP 连接的什么状态下,为什么要这么做,要等多久

    同样是考挥手,我觉得就是很合适的一道题
    butterflydog
        2
    butterflydog  
       2019-08-18 23:05:12 +08:00
    @ZRS 然后是不是就是怎么配置调优(手动滑稽)
    ZRS
        3
    ZRS  
       2019-08-18 23:07:16 +08:00
    @butterflydog 倒没有...问完这个就问别的了
    mhycy
        4
    mhycy  
       2019-08-18 23:10:51 +08:00
    考基础的题,就看对 TCP 了解有多少了,免得闹出个“粘包”笑话

    TCP 还有这类看起来简单实际回答巨麻烦的题目
    “ A、B 机器正常连接后,B 机器突然重启,问 A 此时处于 TCP 什么状态 ”

    之前写了个回答
    https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/21#issuecomment-518486351
    0ZXYDDu796nVCFxq
        5
    0ZXYDDu796nVCFxq  
       2019-08-18 23:12:13 +08:00
    就跟高考要考三角函数一样
    另外好的面试官会追问的,背题就露馅了
    singerll
        6
    singerll  
       2019-08-18 23:12:34 +08:00 via Android
    我见过有的研发甚至不知道七层和四层是啥。接个负载均衡都不知道该怎么沟通
    iwtbauh
        7
    iwtbauh  
       2019-08-18 23:16:59 +08:00 via Android   1
    @mhycy #4

    你这是宕机,不是重启。重启之前系统会关闭已建立的 TCP 连接。
    misaka19000
        8
    misaka19000  
       2019-08-18 23:20:22 +08:00
    因为面试官只知道三次握手
    mhycy
        9
    mhycy  
       2019-08-18 23:24:16 +08:00
    @iwtbauh 意外重启并不会
    poplar50
        10
    poplar50  
       2019-08-18 23:28:45 +08:00 via Android
    就单纯属于面试开场题 你肯定会 暖个场
    zsdsz
        11
    zsdsz  
       2019-08-18 23:34:55 +08:00 via Android
    想试试你的武功如何 当然要先试试内力啊 不能单看招式
    gbin
        12
    gbin  
       2019-08-18 23:36:00 +08:00   1
    因为如果国内的大厂也像北美大厂那样单纯考算法和设计,估计人都找不到,只能考一些稍微需要花时间去掌握的基础,不至于太难,也不至于太简单。
    gamexg
        13
    gamexg  
       2019-08-19 00:06:36 +08:00
    由浅入深一步一步来了解面试者实际面试速度更快

    如果连这个回答错误,那么慢启动等可以不用问了,证明 tcp 协议完全不了解。
    如果会,那么继续深入,可以一步一步的确定对方了解的内容。

    反过来,
    如果开始就问高难度的,
    那么你不好分辨正好没了解这部分、用的不多忘记了还是 tcp 完全不了解?
    还需要再转回三步握手确认。
        14
    CEBBCAT  
       2019-08-19 02:59:22 +08:00 via Android
    我也觉得是分层次递进地问。考察的目的不是考倒,是考验
    chibupang
        15
    chibupang  
       2019-08-19 03:08:54 +08:00 via Android
    chibupang
        16
    chibupang  
       2019-08-19 03:11:35 +08:00 via Android
    一上来就问 Paxos,手写 LRU 红黑树那后面问啥呀?
    ericbize
        17
    ericbize  
       2019-08-19 07:20:21 +08:00 via iPhone
    之前我也觉得没什么用, 直到上次网络出现问题, 我领导 用 Wireshark 分析包, (没有基础,你连三次握手都不会分析好吗)
    HuHui
        18
    HuHui  
       2019-08-19 08:06:33 +08:00 via Android
    有一部分是用来区分科班和非科班的
    murmur
        19
    murmur  
       2019-08-19 08:28:53 +08:00
    有些游戏公司不用标准 TCP,会用那种介于 UDP 和 TCP 之前的自定协议提升并发,但是绝大多数还是只是为了筛人
    whywhywhy
        20
    whywhywhy  
       2019-08-19 08:43:31 +08:00
    工作用什么,将来用什么,就问什么好了。

    面试造航母,进去拧螺丝都没资格,只能天天擦桌子,问些工作上用不到的东西,有啥意义呢,结果一群人专门为了“面试”而努力。

    面向面试编程。
    yhxx
        21
    yhxx  
       2019-08-19 09:17:27 +08:00
    其实有很多可以问到的点啊
    比如,握手阶段为什么一定需要 3 次?能不能简化一点?快速打开有没有了解过?
    断开阶段第二次和第三次能不能合并?有没有听过延迟确认?

    我觉得抛开 TCP,这也是一个挺不错的考察思维能力的问题
    要做到可靠的传输,最少需要几次交互

    大部分背面试题的人应该只能答出那种“我要发消息给你了,我知道你要发消息了 balabala ”
    这题明明有很好的区分度啊
    Arainc
        22
    Arainc  
       2019-08-19 10:23:37 +08:00
    @yhxx 哈哈,我就是这么问别人的
    qakito
        23
    qakito  
       2019-08-19 11:17:08 +08:00
    仅仅是暖场基础题吧;并不是所有公司都需要直接接触这么底层的通信
    VDimos
        24
    VDimos  
    OP
       2019-08-19 11:31:56 +08:00 via Android
    @whywhywhy 对,我就是这个感觉
    julyclyde
        25
    julyclyde  
       2019-08-19 14:12:53 +08:00
    用于把那些
    用着 TCP 却一口一个“数据包”
    的人,筛选掉啊
    mooyo
        26
    mooyo  
       2019-09-28 17:55:18 +08:00
    @yhxx 三次是为了协商 ISN,简化的话,如果是需要双向传输,三次必不可少,除非有别的途径可以协商 ISN。快速打开是啥,没了解过。断开 23 次应该是可以合并的,被捎带嘛。延迟确认也没了解过。。。不知道这个回答如何。。。
    TCP/IP 真的会问的这么细嘛。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1053 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 23:07 PVG 07:07 LAX 16:07 JFK 19:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86