注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
面试情况:公司 :tibco。
通过朋友内推拿到电面, 非标准话面试,无算法题目,地点芝加哥,面试人: product manager 叫 chris的一个 白人老头。希望对大家会有帮助。另外,希望大神可以帮我 参考一下答案,都是 面完之后自己 google后 自己的理解,希望 多多批评更正。
abstract :全程50分钟,前5分钟 暖场 和个人介绍, 后分钟 自己挑一个 项目介绍。最后 40分钟,全是 tcp和udp 知识。另外,帮我内推同学 是18年 summer的去的intern,面试的也是 tcp和udp ,但深度没有我这次问的这么多。可见 tibco真的很重视TCP/UDP,但自己当时面得一塌糊涂,就当自己学习了。
内容:
1. 举可靠protocal 和 非可靠protocal 各是什么的例子? tcp 可靠 udp 不可靠
2. 举个 实际应用的application for tcp & udp? Tcp : 电子邮件,http, messsager Udp : 语音电话,视频通话 . Waral dи,
3. 如何不看代码,从application外部就能区分 tcp 和 udp?(不确定) — 查看port number — 可以出现 数据丢失的情况,比如 视频或者电话卡顿 — 传输速度UDP > TCP — 点对点传输 tcp, muticast 或者broadcast 为 UDP
. Χ
4.TCP: 发送过程中 constumer发送之后,如何知道 发送成功了(3次握手连接 和 4次握手 断开必须会)? 在发送过程中,如果有一端 收到对方的数据包,一定会 发送 ack 置1 进行确认
. 1point 3acres
5. case 1 :sender 发送请求 不成功, case 2 :reciever回复acknowledge不成功,是同一种情况吗? 该 怎么办? case 1 和 case 2 属于 同一种情况 sender如果没有收到 ack确认, 会重新发送一次 数据
. check 1point3acres for more.
6. case 1 :sender发送请求 不成功,case 2 :server回复acknowledge不成功,如何设计去 重新发送机制 ?(待补充更正) 1. TTL(time to live),设置timer,如果超过一定时间未收到 ack,重新发送 timeout retransmit
7. reciver 如果收到两次 相同 的数据,他用什么方法来确认这两次相同的datagram呢? 每次的数据都有自己独特的sequence number,通过判断sequence number 来确定是否收到过该数据 ..
8. TCP 传送效率低,因为 每一次传输 都需要 等待 上一次的 ack,如果提高 发送效率? 采用流水线传输,也就是可以一次性发送多个分组,不必收到确认才发送下一个
9. TCP: sender 同时发送好几个datagram,比如同时发送datagram 1.2.3,reciever 什么时候确认,来确保有序,需要每发一次 都进行一次确认吗,如果不是,如果做?
收到的数据d顺序不确定,但必须等全部收到后,将第三个 sequence + 1 发送 作为 acknoledg number 来确认,相当于 3个数据只确认一次
10. TCP : 如何确认reciever 收到的数据是 sender 发送过来没有丢失的数据?(自己的理解,望更正) sender 发送数据时候,会 随机产生sequence number,比如 发送3个数据 sequence number分别是 3000, 3400, 3600,reciever 必须等到 三个数据都收到(通过判断 reveice 数据的sequence number) 从 而将 acknowledge number设置 为 3601 (告诉sender:我收到的数据 是这么多,你去看看有没有少 ), 并将 ACK( 告诉sender: 我收到了) 设置1 ( TIPS : ACK 和 acknowledge number 不同) 发送回给 sender。 sender 接到 返回的数据后 对比 应该有的sequence number (3600 + 1) 和 acknowlede number,如果相等,说明 对方接到数据,且 数据没有丢失。
. check 1point3acres for more.
11. UDP: 可以永久 不确认收到成功了吗?如何实现?( 当时 他给了个答案sub thread(只说了sub thread,其余的是自己的理解),自己还不是不懂,求赐教) 不是的, 需要确认。 使用 sub thread :1.可以增加心跳机制,每个一段时间进行一次心跳通信(heart beat),如果在该规定的时间内还没有收到心跳数据的话就认为掉线了。 2. 或者使用ping 判断我网络是否还在联通
12. tcp 和 udp 的 区别 ? . Waral dи,
tcp : 面向 连接 protocal 全双工(send的同时,可以recieve): 所谓全双工,半双工,单工是指面向连接时才有的说法 数据包 序列化(有序) 可靠传输— 接收确认(ACK) 流量控制(windowing):控制 发送快和慢 数据分段,因此 数据包大小无限制 数据恢复 TCP要求系统资源较多 byte stream形式发送 tcp只能支持点对点 头部开销20字节,但整个长度可变,因为 数据大小可控(每次发送,长度不固定) Udp: 不具备数据恢复 无连接 无序 不可靠传输,不能流量控制,没有 拥塞控制,因此网络出现拥塞,不能使主机的发送频率降低 不能数据分段,因此 数据包大小有限制 要求系统资源少 datagram形式 可以支持一对一,一对多,多对对,多对一(multicast broadcast) 头部开销少,只有8个字节 ..
|