面试

tcp为什么要四次挥手:TCP协议采用四次挥手(Four-Way Handshake)来确保可靠地终止一个连接,原因主要包括以下几点:

全双工通信的需要:TCP连接是全双工的,意味着数据可以同时在两个方向上传输。因此,每个方向的连接关闭都需要独立进行。当一端完成数据发送任务后,它会发送一个FIN(Finish)标志来终止这个方向的连接。四次挥手确保了两个方向上的连接都能被正确且独立地关闭。

确保数据完整性:在四次挥手过程中,当一端发送了FIN请求断开连接后,另一端可能还有数据需要发送。因此,它会先回复一个ACK确认收到断开请求,然后继续发送剩余数据,直到自身数据发送完毕,再发送自己的FIN包。这样可以确保双方的数据都能够被完整地传输,不会因过早关闭连接而导致数据丢失。

确保双方都准备好关闭:第一次挥手是客户端请求断开,第二次挥手是服务器确认收到断开请求。但此时服务器可能还在发送数据,因此需要等到数据发送完毕后再发送第三次挥手(服务器的FIN包)。客户端在收到服务器的FIN后,发送最后一个ACK,表示已经准备好关闭连接。这样确保了双方都明确知道对方已经没有数据要发送,可以安全关闭连接。

防止旧数据混淆:四次挥手的最后阶段还包括一个等待时间(TIME_WAIT状态),在此期间,连接不会立即释放,以防最后一个ACK包在网络中丢失,需要重传。这有助于确保不会有旧的数据片段在新连接中被错误地接收。

综上所述,TCP四次挥手是为了确保在关闭连接时双方的数据传输完整,连接的关闭是有序且可靠的,同时也为可能的重传留出了时间,以此来维护数据的一致性和连接的稳定性。

list,set, map:List(列表)

特点:List是一个有序的集合,可以包含重复元素。每个元素都有一个索引,从0开始,可以按照索引访问元素。

常用实现:ArrayList, LinkedList, Vector等。其中,ArrayList提供了快速的随机访问,但插入和删除效率较低(尤其是在列表前面或中间操作);LinkedList适合频繁的插入和删除操作,但随机访问较慢。

应用场景:当需要保持元素的插入顺序,或需要通过索引来访问元素时,使用List。

Set(集)

特点:Set是一个不包含重复元素的集合,即每个元素最多只能出现一次。它没有索引,不能通过索引来访问元素。

常用实现:HashSet, LinkedHashSet, TreeSet等。HashSet提供最快的查询速度,但不保证元素的迭代顺序;LinkedHashSet保持插入顺序;TreeSet对元素进行排序,要么自然排序,要么通过比较器Comparator。

应用场景:当你需要确保集合中元素的唯一性时,应该使用Set。

Map(映射)

特点:Map是一种键值对的数据结构,每个键(Key)都是唯一的,对应一个值(Value)。Map中的元素是成对出现的,键不能重复,但值可以。

常用实现:HashMap, LinkedHashMap, TreeMap, Hashtable等。HashMap提供了快速的访问速度,但不保证顺序;LinkedHashMap保持插入顺序或访问顺序;TreeMap按键自然排序或定制排序;Hashtable是线程安全的,但已逐渐被ConcurrentHashMap取代,因为后者在并发操作上表现更好。

应用场景:当需要通过特定的键来查找、存储或删除关联的值时,Map是理想的选择。

总结来说,选择使用List、Set还是Map,取决于你的具体需求:是否需要保证元素的唯一性、是否需要有序访问、是否需要键值对存储等。

hashmap和hashtable的区别:HashMap和Hashtable在Java中都是用来存储键值对的数据结构,但它们之间存在一些关键差异,主要体现在以下几个方面:

线程安全性:

Hashtable:是线程安全的,它通过在方法上同步(synchronized)来实现,这意味着在多线程环境下可以直接使用Hashtable而无需额外的同步措施,但这也使得它在单线程环境下的性能不如HashMap。

HashMap:非线程安全,如果在多线程环境中不加控制地使用HashMap,可能会导致数据不一致的问题。为了在多线程环境下安全使用,可以使用Collections.synchronizedMap()方法来包装HashMap,或者使用更现代且高效的ConcurrentHashMap。

支持null值:

HashMap:允许null键和null值,尽管推荐尽量避免使用null键,因为这样会降低哈希表的性能。

Hashtable:既不允许null键也不允许null值,尝试插入null会导致NullPointerException。

继承关系和接口实现:

HashMap:继承自AbstractMap类,并实现了Map接口。

Hashtable:继承自较老的Dictionary类,同样实现了Map

全部评论

相关推荐

1:自我介绍2:介绍实习3:Kafka用的是什么版本 是Zookeeper维护的还是KRaft维护的4:Kafka为什么要有ISR列表 他的作用是什么5:消费者组的Coordinator是分布在哪儿,是怎么选举出来的6:Kafka的生产者你是如何保证不丢失消息的 At Once,AtLeast Once是什么7:Kafka的消费者组你是用的是不是自动提交8:Kafka消费者组有没有可能重复消费 你有没有做相关的防止重复消费机制9:Zookeeper如何避免产生脑裂10:这些集群是在虚拟机部署的还是K8s部署的,有没有CI/CD流程,答是在公司服务器部署的11:看着这活儿这么牛逼,不像是给实习生做的啊。爆笑➕解释12:RedisCluster的槽位是什么原理13:有没有给key设置ttl14:Redis的keys和scan的区别是什么15:Redis的持久化你是用的什么,为什么要用RDB+AOP混合持久化16:keepalived底层如何实现的17:所有的集群如果要扩容的话怎么办18:权限模型是你自己设计的话,介绍一下19:学校成绩排名【TP-Link联洲】2025届校招启动啦!!✅关于联洲3大体系:研发、制造、营销6大业务版块:家用网络、消费电子、商用解决方案、运营商网络、APP软件服务、自研云平台12年Wi-Fi产品出货量全球第一41家海外销售公司、产品远销170+国家和地区2000+产品热销全球✅薪资福利🤩超高薪酬+丰厚年终+固定调薪=多多MONEY! 🥰班车全城覆盖+年度体检+健身游泳=享受FREE!😋节日红包+产品折扣+丰富礼品=幸福感MAX!✅招聘岗位10大职类, 2000+HC:研发类、IC设计类、营销类、米哈游TCL、产品类、市场类、制造类、供应链类、财务类、人事行政类、内审风控类,欢迎投递✅工作地点:深圳、上海、成都、海外(欧洲、北美、亚太、南美、中东非)✅投递通道:https://career.tplinkglobal.com/campus/jobs?shareId=ac94514e-9607-43c0-8fc7-001a7c7d72b8&shareSource=2推荐码:EVB2T2使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态
TP-Link联洲国际
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
面试的过程中感慨了平台的重要性,之前做的东西都太表层了,有时候可能一个平台才可能会有这些实际的应用场景二轮技术面(面试官职位应该比较高,并不会问八股文,全程问项目,和非常底层的知识,和一些整体的思考,奈何自己水平不够,我会附上我当时的回答,简单的记录一下给各位牛友参考)1. 自我介绍    我喜欢简单的自我介绍,就说了一下自己毕业时间,掌握哪些技术,公司参与过公司内部使用的系统,也参与过面向用户app的服务端开发工作,然后说了本次的求职岗位2. 独立负责这个项目的时候,你为什么要使用spring boot架构?    回答侧重点:理论上市面上最成熟的架构,本身支持自动配置减少自动配置的工作,可以很方便的集成其他的框架,并且可以自己定义一些配置3. 使用了redis的什么能力?    (redis是可以实现很多场景,但是自己直接触过缓存,希望自己未来有机会可以提升一下自己这方面的技能)只使用过他的缓存(然后本来想讲缓存的一些要点,但是想了想没讲,因为感觉没什么用,面试官想了解的应该是我是不是使用redi解决过 会话管理-分布式锁-排行榜-消息队列 的知识点 不过这些都是要契合项目说的 不可能凭空捏造)4. 缓存不一致的场景    (面试官几乎每次都强调了要契合项目说)没有出现,但是自己做了一个兜底,就是写了一个接口去主动删除缓存5. redis的一致性保障    回答了更新策略:是更新数据库再更新redis缓存;事务支持:使用redis的事务来确保一致性(只粗浅的看过,面试的时候压根想不起来只简单的说了一下这两个知识点)6. redis的可靠性    只回答了数据持久化 RDB和AOF    RDB:在指定的时间间隔内将数据以快照的方式保存到磁盘中    AOF:记录Redis数据库在执行写操作命令,生成一个文件(因为本身没有问redis数据持久化,所以我没有回答他们之间的区别,只是简单的介绍了一下概念)7. 从整个集群上的架构呢    (已经开始听不懂了)8.  redis的读写操作是不同的节点还是同一个节点9.  慢查询10.  用过消息中间件吗11.  历史老代码优化场景菜鸟集团丨2025届校招官方内推启动【公司介绍】菜鸟孵化于阿里巴巴全球最大的行业电子商务生态系统中,现已成为电商物流的全球领导者,全球第一的跨境电商物流公司【岗位方向】研发类、算法类、产品类、数据类、物流类、运营类、市场拓展类、职能类【工作地点】杭州为主,深圳、香港、北京也开放需求;区域物流岗(物流园区办公):东莞、珠海、厦门、漳州、杭州、威海【内推渠道】https://jsj.top/f/fjZDnI【内推码】CN003【备注】内推码在「校园大使内推人」栏填写,欢迎私戳跟简历进度哦~填写此链米哈游接后,同学会在近期收到一封内推确认邮件,通过邮件确认后才算内推成功、才能进入菜鸟校招流程❗️大家投递完可以在评论区打上姓名缩写+岗位,我来确认有没有内推成功喽
菜鸟集团
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
评论
5
7
分享
牛客网
牛客企业服务