十月最新,小红书面试经历,问答超详细!

一面


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

  • 描述下项目

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

  • 项目中担任的角色

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

  • 在项目遇到什么困难

这三个问题,是不是可以拎着脚趾拇都可以想出来,除非不是你做的,哈哈哈哈哈。不慌,不是我们做的也不怕,我们必须知道有个网站叫做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,那么其过程如下

TCP重传

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

说说四次挥手吧,哎

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个月学习Python的详细计划: 第一周: - 第1天:基础知识学习,包括数据类型、变量、运算符、表达式、条件语句和循环语句。 - 第2天:继续学习Python基础知识,包括函数、模块、输入输出和异常处理。 - 第3天:学习Python面向对象编程,包括类、对象、继承和多态。 - 第4天:练习基本的Python编程技能,完成一些练习题和小项目。 - 第5天:学习Python常用的数据结构,包括列表、元组、字典和集合。 第二周: - 第6天:深入学习Python列表,包括列表的操作、切片和迭代。 - 第7天:学习Python元组,包括元组的操作、切片和迭代。 - 第8天:学习Python字典,包括字典的操作、方法和迭代。 - 第9天:学习Python集合,包括集合的操作、方法和迭代。 - 第10天:练习使用Python数据结构,完成一些练习题和小项目。 第三周: - 第11天:学习Python函数的高级用法,包括函数的参数、返回值和装饰器。 - 第12天:学习Python模块的高级用法,包括模块的导入、命名空间和包。 - 第13天:学习Python文件的操作,包括文件的读写、追加和删除。 - 第14天:学习Python正则表达式,包括正则表达式的语法、匹配和替换。 - 第15天:练习使用Python高级语法,完成一些练习题和小项目。 第四周: - 第16天:学习Python网络编程,包括Socket编程和HTTP协议。 - 第17天:学习Python多线程编程,包括线程的创建、锁和信号量。 - 第18天:学习Python数据库编程,包括SQLite和MySQL数据库。 - 第19天:学习Python GUI编程,包括Tkinter和PyQt。 - 第20天:练习使用Python进行网络编程、多线程编程、数据库编程和GUI编程,完成一些练习题和小项目。 这是一个初学者的学习计划,如果你已经有一定的Python基础,可以根据自己的需要进行调整和修改。另外,学习计划只是一个参考,最重要的是坚持学习,不断实践和探索。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值