首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   VDimos · 65 天前 · 3262 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    同样是考挥手,我觉得就是很合适的一道题
        2
    butterflydog   65 天前
    @ZRS 然后是不是就是怎么配置调优(手动滑稽)
        3
    ZRS   65 天前
    @butterflydog 倒没有...问完这个就问别的了
        4
    mhycy   65 天前
    考基础的题,就看对 TCP 了解有多少了,免得闹出个“粘包”笑话

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

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

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

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

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

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

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

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

    大部分背面试题的人应该只能答出那种“我要发消息给你了,我知道你要发消息了 balabala ”
    这题明明有很好的区分度啊
        22
    Arainc   64 天前
    @yhxx 哈哈,我就是这么问别人的
        23
    qakito   64 天前
    仅仅是暖场基础题吧;并不是所有公司都需要直接接触这么底层的通信
        24
    VDimos   64 天前 via Android
    @whywhywhy 对,我就是这个感觉
        25
    julyclyde   64 天前
    用于把那些
    用着 TCP 却一口一个“数据包”
    的人,筛选掉啊
        26
    mooyo   24 天前
    @yhxx 三次是为了协商 ISN,简化的话,如果是需要双向传输,三次必不可少,除非有别的途径可以协商 ISN。快速打开是啥,没了解过。断开 23 次应该是可以合并的,被捎带嘛。延迟确认也没了解过。。。不知道这个回答如何。。。
    TCP/IP 真的会问的这么细嘛。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4364 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 34ms · UTC 02:06 · PVG 10:06 · LAX 19:06 · JFK 22:06
    ♥ Do have faith in what you're doing.