什么是基础扎实,什么是一个项目

自我上次分享了自己的春招经历以后,也是收到了一些朋友的私聊,我自己算是话比较多的类型,分享了不少经验给他们,26届马上要参加秋招或者正在找实习的同学如果有困惑可以尽管来找我聊聊。

言归正传,这几天毕业季,一直在收拾东西,也在为6月底的入职做准备,偶然看到了我之前收藏的学长发的帖子,实在难得,发出来与大家共享:

什么是基础扎实?

用Linux C++方向举例吧,同时会附上基础的作用。

计算机网络--什么是TCP,什么是UDP。

教科书上会这样写“TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议""UDP是无连接、不可靠的、基于数据报的传输层通信协议"。

TCP还会介绍下超时重传、拥塞避免、流量控制这三个保证可靠的相关机制。再者还有一个滑动窗口。

上面的这些内容你大可以在教科书和几乎任何一篇八股文中找到,并将其背诵,然后去参加面试。这基本算是及格线了,如果你连这些内容都不知道,面试言的印象分就会打折扣。

如何落地呢?就拿王者这种moba游戏举例吧。

TCP通过上述机制保证了传输可靠。但是,古尔丹,代价是什么呢?客户端向服务器发送了向上移动、向下移动、发送集合信号、使用了技能、给队友点了赞和给队友发了条消息以示问候等等,这些可以看成一个个独立的消息。

你按以上顺序将这些消息通过TCP发送到服务器端,有序的机制会保证这些内容按顺序交付上层,如果其中某些字节丢失了,TCP会帮你重发这些字节。假设恰巧向下移动这个消息的相关字节丢失了,但给队友点赞这个消息的相关字节服务器已经收到了,然而由于前面的相关字节存在丢失,点赞这个消息的相关字节即使服务器已经收到了,服务器也没法拿到其相关数据,必须等到丢失的字节重传完成,才会交付上层。TCP重传向下移动这个消息丢失的字节,会导致后续所有消息都被延迟交付给服务器上层。导致延迟的出现。

即使重传一个字节,在30ms的延迟下,至少需要35ms左右的时间,甚至是100ms的更长的时间。相当于你比对面多了35ms到100ms的瞬间延迟。如果重传的这个字节又丢失了,时间将会翻倍。谁也不想在你越塔强杀对面的时候出现卡顿吧。

如何解决上面的问题?

使用UDP替换TCP,额外通过一部分代码来使得UDP的可靠性达到项目的要求。UDP是基于数据报的协议,意味着每次发送消息,服务器都可以独立的收到,不受在其之前发送内容的影响。试想下如果你将向下移动这个消息发送了两次,只有一次丢失了,另一次到达了,刚才提到的额外延迟就消失了。在moba游戏中延迟比流量消耗更加重要。当然实际可能要更加复杂。

从问题的提出到问题的解决,需要对TCP和UDP的相关机制有足够的的了解。如果你能够实现一个可靠的UDP协议,不敢说会超越多少人,至少能秒杀只背诵八股文的人,你的排名就会上升。

什么是一个项目?

这里就用Java举例。Java最常见的项目是xx后台管理项目,一般会使用Springboot框架进行开发。数据库管理可以使用Mybatis或者SpringJpa。然后在其上堆砌业务代码就能实现一个基础的后台管理项目。这属于入门水平。

之后你可以通过引入更多的组件来让你的项目更加完善,使用redis、RabbitMq等等。最终你的项目集成了四五个组件,功能上来看是一个完善的后台管理项目,这属于及格水平。

那么差距在哪里?如果仅仅是能跑,大家都可以跑起来。当出现问题的时候,你能不能快速又准确的定位到问题在哪里,知道如何进行修复?项目性能瓶颈后,如何通过优化这些组件或替换组件,来使得项目的性能更上一层?换言之我感觉差距是在对这些框架和组件的熟悉程度上,你对其越熟悉,出现问题的时候解决就更快。体现在面试中就是你为何以及如何使用这些组件,有没有遇到什么问题,怎么解决的。

最后复述—下我是一只IT小小鸟中的一段话。倘若没有这些基础,仅仅会用这个工具、那个框架,充其量也不过是个IT民工,今后的发展必定受到制约,选择只有三条:a.做—辈子IT民工;b.将大学欠下来的债补上;C.改行。

这些基础在本文指的就是计网知识和对组件的熟悉程度。如果你不了解这些而是仅仅会用,那么你将来在解决问题的时候,欠下的熟悉程度终究是要补回来的。如果不去解决,那就是把晋升机会给了同事,把毕业机会给了自己。

遇到一个问题,询问其他人解决,属于入门水平。

遇到一个问题,自己搜寻资料解决,属于及格水平。

遇到一个问题,知晓其发生的原因并做记录,二次发生后解决更加快速,属于优秀水平。

遇到一个问题,知晓其背后发生的根本原因,从源头解决,自然是更加优秀。

卷王?学校不教?

感觉大家看完上述描述,可能会感觉了解上面的人是个卷王吧。是他们让面试的难度越来越高。如果你有这样的感觉,会怎么做呢?两手一摆,太卷了,你们卷吧,我打游戏去了?学校不教这些,所以我不了解这些,然后面试被这些卷王卷没了?

这里我再说一下高效能人士的七个习惯中的一段话。我们面对的问题可以分为三类:可直接控制的、可间接控制的和无法控制的。就面试要不要卷这个问题上。如果你是某公司的老板,大可以直接给自己发一个offer。或是你认识一些人,这些人可以让你避开卷就能拿到offer。如果这两个都没有,那就属于无法解决的问题,也就是说卷是必须的。对于无法解决的问题最好是坦然接受,抱怨和逃避是没有办法解决的,反而会让你的心态变差,最后拿到与不卷相对应的结果。

#面试##实习##秋招#
全部评论

相关推荐

评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务