Java面试系列

image

一面


一面面试官看着二十七八岁,文质彬彬,这哪里是写代码的,头发都飘起来了好么。上来就干项目,由于大家的项目都不太一样,所以对于项目部分我就说说我面试的时候经常遇到的问题

  • 描述下项目

一口是吃不了胖子的,描述之前先憋着气掂量掂量自己所说的东西能不能唬住自己,然后唬住面试官。

  • 项目中担任的角色

对于大多数的我们而言,就是开发的角色,同样的道理,角色对应相应的职务,阐述自己做的内容能引面试官上钩,拉钩上吊一百年不许变。

  • 在项目遇到什么困难

这三个问题,是不是可以拎着脚趾拇都可以想出来,除非不是你做的,哈哈哈哈哈。不慌,不是我们做的也不怕,我们必须知道有个网站叫做Github,大牛这么多,自己不是大牛,难道不会学学人家麦。Clone下来,搭建环境跑起来,开始调试修改,通过将模块拆分,进一步修改,这不就是你的项目吗,当然我不怎么建议大家这么操作啦。

项目被问的差不多了,开始怼基础知识,基础知识老四套,计算机网络,数据库,操作系统,数据结构

我看你简历中写着网络流量的还原,你应该对计算机网络比较熟悉?(注意哈,简历上写上去的东西,自己心里一定要有点B数),那我们说说计算机网络

  • 说说计算机网络中TCP的三次握手吧

首先 Client 给 Server 发送一个SYN包,Server 接收到 SYN 回复 SYN+ACK,然后客户端回复ACK 表示收到。

你这样回答肯定是不会让面试官满意的,那就加点配料,不放佐料的菜怎么香?那就详细的安排一下

首先客户端的协议栈向服务端发送SYN包,同时告诉服务端当前发送的序列号是X,此时客户端进入 SYNC_SENT状态

服务端的协议栈收到这个包以后,使用 ACK 应答,此时应答的值为 X+1,表示对 SYN 包 J 的确认,同时服务端也发送一个SYN包,告诉客户端当前我的发送序列号是Y,此时服务端进入SYNC_RCVD状态

客户端协议栈收到 ACK 以后,应用程序通过connect调用表示服务端的单向连接成功,此时状态为ESTABLISHED,同时客户端协议栈对服务器端的 SYN 进行应答,此时数据为Y+1

服务端收到客户端的应答包,通过accept阻塞调用返回,此时服务端到客户单的单向连接也建立成功,服务器将进入ESTABLISHED状态

这样是不是稍微有B格一点呢,而且还比较形象,当然为了加深大家对这个过程的印象,我再举个例子

***第一次握手:***小蓝给某女娃告白,说我喜欢你,然后我傻乎乎的等着回应

第二次握手:女生看我这颜值,秒回,自然就答应我啊,并回复我也喜欢你拉

第三次握手:我收到女生的回应说:“那晚上去吃火锅,看电影,理疗”

就这样在一起啦,那么后续是啥样呢?是不是得往下看看什么是四次挥手了(渣男石锤),非也,还在热恋期呢,专一的好吗。面试官会继续问你三次握手

面试官说:“那我问你,如果客户端发送的SYN丢失了或者其他原因导致Server无法处理,是什么原因?

这个场景非常常见,没有万无一失。在TCP的可靠传输中,如果SYN包在传输的过程中丢失,此时Client段会触发重传机制,但是也不是无脑的一直重传过去,重传的次数是受限制的,可以通过 tcp_syn_retries 这个配置项来决定。如果此时 tcp_syn_retries 的配置为3,那么其过程如下

image

当 Client 发送 SYN 后,如果过了1s还没有收到 Server 的回应,那么进行第一次的重传。如果经过了2s没有收到Sever的响应进行第二次的重传,一直重传tcp_syn_retries次。这里的重传三次,意味着当第一次发送SYN后,需要等待(1 +2 +4 +8)秒,如果还是没有响应,connect就会通过ETIMEOUT的错误返回。

说说四次挥手吧,哎,卑微的蓝蓝

第一次挥手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值