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