有谁能帮忙写个Java练习吗?高手了解一下

首选要选对底层的传输协议,峩们程序中用到的自定义的协议都属于应用层的协议。

传输层的协议现在可以选择 TCP协议,或者UDP协议

UDP协议,会存在楼主所说的那些担憂比如,丢包、先后包次序颠倒等现象

TCP协议,相对好些它正常情况下是不会丢包的、先后顺序也不会颠倒,但是读取数据的时候,要注意粘包和半包的处理

推荐使用TCP协议作为承载协议来传输数据,因为它是有链接的可靠的传输协议。

应用层协议可以自己定义協议的数据结构。

比如:发送数据包的时候包结构分为 包头、包体和包尾三个部分。三个部分依次进行发送发送完毕,作为一个包的整个内容

包头存放 包体长度、包序列号(用于区分是否是相同的包,每个包前后逐个加一构成一个序列)、包类型(这个可以没有)。

包体存放传输的数据(如果包头中没有包类型数据那么数据区最好有标明数据类型的信息,这样接收端好处理)

包尾存放固定长度嘚校验码(这个可以没有,因为TCP传输数据是可靠的)用于校验数据是否在传输过程中被更改了或传错了。如果校验码不是固定长度的那么,包头中要添加包尾长度的数据字段

基本上,一般的通讯协议都这么定义数据结构

其余部分,就是传输过程中的一些处理细节了

比如:发送数据后是否要求对方做出应答(一般都要有应答包,这样可以相互协作)应答包的超时是多长时间,如果超时是否进行重傳重传时序列号不变(序列号在重传时起作用,接收端可以判断是否是重传包)重传几次算传输失败等等。

大体形式就是总共20个题测试可鉯自己编写,最后根据总得分所在不同区段得出测试结果,最好能有漂亮的界面

有人说这只能是大企业或者互联網企业工程师才能拿到也许是的,小公司或者非互联网企业拿两万的不太可能是码农了应该已经转管理。还有区域问题这个不在我嘚考虑范围内,因为除了北上广深杭其他地方也很难达到。

还有人提到这个水平不止2w其实工资是跟面试表现有关的,也跟其他综合水岼有关比如你是985,top10或者研究生学历,也或者懂点node懂点大数据等等,或者表达能力强击中面试官痛点都会加分。如果你达到我说的沝准起薪就是2w,有其他优秀的表现还会在这个基础上加分

但纯JAVA方面待遇是比较吻合的。还有SSH真的不是我要黑2w水平的面试几乎很少问SSH嘚用法,要问也是问架构和设计原理等例如mybatis是如何管理session和cache的。spring里面有哪些你熟悉的设计模式你怎么理解和应用的,如何在应用中透传參数等

其实互联网相关的知识去互联网公司后很容易接触,并不是什么难点我司很多刚来的大学生在半年内都能把一些中间件系统摸嘚很明白,并不是说有多难只是接触少,对未知的东西感到害怕疑惑而已我在这里可以给那些想学习这方面的同学提供几本书,这几夲书对互联网的知识能很快入门和了解全景不是广告。

  • 大型网站技术架构-核心原理与案例分析@李智慧大牛的书

  • 大型分布式网站架构-设計与实践。作者:陈康贤

  • 大型网站系统与java中间件实践作者: 曾宪杰(原淘宝技术,现在蘑菇街)

  • 然后再推荐一个网站并发编程网 - ifeve.com这个網站的知识绝对够你面试一个阿里P7,京东T3-2腾讯T3-1。

我其实不怀疑我说的这些技能树能拿到25K或者30K+的可能但现在互联网相对来说还是比较泡沫。

首先两万的月薪在BAT实在太普遍了一般是高级工程师和资深工程师的职位。在阿里是p6左右在百度是t5左右,腾讯是t2-3左右京东是t3-1,美團是p6左右其他的我不了解。这种级别是他们主要码农层级加班多,能解决大部分问题但对系统的整体架构能力和深入分析瓶颈的能仂还需要培养。

其次掌握的技能树主要有三个方面:


第一个是基础比如对集合类,并发包IO/NIO,JVM内存模型,泛型异常,反射等有深叺了解,最好是看过源码了解底层的设计比如一般面试都会问ConcurrentHashMap,CopyOnWrite线程池,CASAQS,虚拟机优化等知识点因为这些对互联网的企业是绝对偅要的。而且一般人这关都过不了还发闹骚说这些没什么用,为什么要面试举一例子,在使用线程池时因为使用了无界队列,在远程服务异常情况下导致内层飙升怎么去解决?你要是连线程池都不清楚你怎么去玩?再举一例由于对ThreadLocal理解出错,使用它做线程安全嘚控制导致没能实现真的线程安全。还有遇到内存泄露怎么排插问题怎么优化系统性能。所以作为一个拿两万的JAVA程序员这点基础是要囿的

第二你需要有全面的互联网技术相关知识。从底层说起你起码得深入了解mysql,redisnginx,tomcatrpc,jms等方面的知识你要问需要了解到什么程度,我可以给你说个大慨首先对于MySQL,你要知道常见的参数设置存储引擎怎么去选择,还需要了解常见的索引引擎知道怎么去选择。知噵怎么去设计表怎么优化sql,怎么根据执行计划去调优高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分離还会垂直与水平拆分,所以这个也有经验的成分在里面然后redis几乎是必须的技能,而nginx和tomcat几乎都是JAVA互联网方面必配至于rpc相关的就多的詓,必须各种网络协议序列化技术,SOA等等你要有一个深入的理解。现在应用比较广的rpc框架在国内就是dubbo了,开源的还有spring cloud相关技术栈鈳以自行搜索。至于jms相关的起码得了解原理吧一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka你能对我说的都有研究,阿里p7都不是太大问题的

第三就是编程能力,编程思想算法能力,架构能力首先2W程序员对算法的偠求我觉得还是比较低,再高级也最多红黑树吧但是排序和查询的基本算法得会。编程思想是必须的问你个AOP和IOC你起码的清清楚楚,设計模式不说每种都用过但也能了解个几种。编程能力这个我觉得不好去评价但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统得有一个明确的思路和方向。

这以上就昰我说得2w水准如果你运气好,面试表现好3w+也有可能哦。

画风一变话说我们做了个小程序员,专给程序员用的里面有各种独门秘籍。

这是一个非常魔性的小程序有你熟悉的那些IT大佬的直播,有刷屏有社群,有源代码有资料包,有志同道合好友

不多说了,反正莋为码农的我刷的津津有味比抖音更上瘾

营长悄咪咪的奉上【热门Java课程】

我要回帖

 

随机推荐