腾讯Java后台面经

本文记录了一次腾讯的Java后台面试经历,面试重点涉及计算机网络的七层协议、三次握手四次挥手、HTTPS、慢启动算法;操作系统中的线程与进程、Linux命令;数据结构的栈、队列、哈希表、红黑树、快速排序和跳表;以及数据库的SQL基础和InnoDB与MyISAM的区别。虽然面试中遇到了一些知识盲点,但整体收获颇丰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午,突然收到腾讯的电话面试,心想:“不是3、4月份投的简历吗,,,现在我还有机会被捞,管他,面了再说”
由于腾讯本身不是Java的主场,而且本身是一面,问的都是基础,所以面试基本没有问到Java、JVM等详细的知识。面试大体问题如下:

计算机网络

  • 讲下七层协议:讲得还ok,大体说了下每层的功能等

  • 三次握手、四次挥手:由于之前认真看过,所以讲得也算流畅,详细说了下过程
    面试官问:“四次挥手最后B给A请求的等待时间(是什么时间)”
    我:“emmmmmmmm,不知道”
    后查询发现还是自己掌握得不好,其实答案也很简单,如下:

    TCP关闭连接用四次握手来实现,即A--->B Fin, B--->A ACK, B--->A Fin, A--->B ACK,为什么要这样?
    A--->B Fin, B--->A ACK ,A属于主动关闭方,收到B的ACK后,A到B的方向连接关闭,即half shutown ,
    这时A不能再发送数据了。这种状态下B还是可以单向发送数据的,B的数据发送完毕,也做关闭动作了:B--->A Fin
    A--->B ACKB收到ACK,关闭连接。但是A无法知道ACK是否已经到达B,于是开始等待?
    等待什么呢?假如ACK没有到达B,B会为FIN这个消息超时重传 timeout retransmit ,
    那如果A等待时间足够,又再次收到FIN消息,说明刚才A返回的ACK没有到达B,于是再发送ACK,
    直到在足够的时间内没有收到FIN,说明ACK成功到达。
    这个等待时间至少是:B的timeout + FIN的传输时间,为了保证可靠,采用更加保守的等待时间2MSL。
    

    按照《趣谈网络协议》的形象说法:
    断开的时候,我们可以看到,当 A 说“不玩了”,就进入 FIN_WAIT_1 的状态,B 收到“A 不玩”的消息后,发送知道了,就进入 CLOSE_WAIT 的状态。
    A 收到“B 说知道了”,就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值