HTML5技术

万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 左潇龙(3)

字号+ 作者:H5之家 来源:H5之家 2016-10-31 16:00 我要评论( )

因为基本要求达标以后,公司主要挑选人才的标准其实就是可选要求这一部分,在之前《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》这篇文章中,LZ曾经提过差异性这个词,其实这一部分

  因为基本要求达标以后,公司主要挑选人才的标准其实就是可选要求这一部分,在之前《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》这篇文章中,LZ曾经提过差异性这个词,其实这一部分就是差异性的体现。

  接下来,LZ就带大家看看,到底都有哪些可选的要求。此外,LZ要提前说明的是,这些可选要求,没有必须会和必须不会的内容,尽可能多的了解,总是不会错的。

  

  1)Spring、Mybatis框架

  框架这部分其实不用多说了,spring和mybatis框架的原理和源码,如果你可以非常精通的话,那么这一定能成为你巨大的优势。

  如果你是专门做WEB开发的Java后端猿,那么spring和mybatis框架基本上你是肯定要用的。精通Spring和mybatis框架不仅为了面试,对于你日常开发也有巨大的帮助,你可以做很多架构上的优化,为你的战友省去很多重复性的工作。

  关于Spring框架,最核心的当然是IOC,其次便是AOP、MVC这两部分了。好好研究这三部分的源码,会让你从大部分程序员当中,脱颖而出。至于mybatis框架,主要还是关注它如何实现动态SQL。

  而且,待你研究透彻以后,你完全可以自己尝试去造轮子,说不定能得到意想不到的收获。

  

  2)Linux服务器

  这一部分其实原本是运维应该精通的部分,但是作为一个Java后端猿,如果你可以精通linux服务器,那么对你排查线上问题,是有很大的帮助的。

  大部分程序员都只知道一些常用的Linux命令,对于Linux系统本身的文件系统、网络以及IO等等,是完全不了解的,这其实也包括LZ自己。但是,LZ见过身边有一些程序员,对于Linux玩的非常熟练,这不光光体现在多会几个命令,而是对整个Linux系统的了解。

  可以预见的是,这些人在排查问题的时候,往往会更容易找到问题的根本。因为程序问题往往并不是最难解决的,异常这东西见多了就都知道怎么回事了,大不了看看源码也总能找到原因。最难解决的是环境问题,而环境问题无非就是操作系统层面的问题。

  而显然大部分情况下,Java运行的操作系统都是Linux。

  

  3)数据库优化

  说完Linux,紧接着LZ要说的就是数据库了,这原本应该是DBA应该精通的部分,但作为一个Java后端猿,数据库基本上也是最经常打交道的了。

  而且大家都知道,一个应用的性能瓶颈,往往都出现在数据库这一端,因此,一个Java后端猿如果可以精通数据库的话,那么对于你工作的实际帮助,也是非常大的。

  相信不少人都碰到过SQL过慢的情况,这个时候,如何通过加索引、SQL分析和优化的手段,将SQL的执行时间优化到一个可接受的范围内,其实还是比较考验人的。

  反正,这玩意儿LZ是半斤八两的水平,基本的优化是没有问题的,但稍微复杂一些的就不行了。

  所以,这一部分足够成为你的优势,体现出你的差异性。

  

  4)消息服务

  除了Linux和数据库以外,消息服务也是当今互联网公司里,必不可少的一个组件。

  常见的消息组件比如rabbitMQ、activeMq,包括一些其它的开源消息组件,比如rocketMq。这里面任何一个,如果你可以精通其原理的话,也会成为你有力的竞争条件。

  其实消息服务的重点,无非就是如何保证最终一致性、消息的顺序,包括消息事务等等这一类的问题。

  虽然LZ本人对此不是很了解,但LZ很确定,这一部分如果你可以有自己独到的见解的话,一定会大大增加你的成功率。

  

  5)缓存服务

  说了消息服务以后,相信缓存服务大家也一定不陌生了。

  常见的缓存比如memcached、redis这两个,如果你能搞清楚其中一个的话,也会给你加分许多。毕竟现在的互联网应用,缓存也是必不可少的了,因此如果你能完全hold住缓存这一部分,那么你的差异性也就有了。

  在缓存服务当中,有几个问题也是比较常见的,比如缓存满了怎么办,缓存的实时性如何处理,内存结构如何规划,分布式的情况下如何处理增删节点时缓存的命中问题等等。

  

  6)负载均衡器

  负载均衡器,这是最后一个可选要求了。

  常见的负载均衡器就两种,一种是软负载均衡,比如nginx、Apache、lvs这一类的。另外一种则是硬件负载均衡,常见的主要就是F5。

  这两种方式各有优劣,其中硬件负载均衡如要用于简单应用、大访问量的场景,而软件复杂均衡则主要用于复杂应用,较小访问量的场景。当然了,两者还有一个不得不考虑的区别是,硬件复杂均衡一般都是非常贵的,而软负载均衡则基本上没有任何成本。

  在负载均衡器方面,也有一些问题是比较常见的。比如如何保持会话,如何做流量控制,负载均衡策略都有哪几种,如何检查后端服务器的健康状态等等。

  

  7)小结

  好了,到这里,可选要求就说的差不多了。

  细心的猿友会发现,这6个要求其实对应的就是Java后端开发中,最常接触到的一些东西。比如spring、mybatis框架和数据库,这基本上是个Java程序员都接触过吧。

  其余四个包括Linux服务器、消息服务、缓存服务以及负载均衡器,也是一样的,大家在实际工作当中,应该或多或少都接触过这几个东西。

  但是真正能对其中一个非常了解精通的人,相信并不会太多。也正因为如此,如果你做到了,才可以体现出你的差异性,这或许会是你拿下offer的重要筹码之一。

  但是,LZ这里必须要再强调一下的是,这几样东西大多数人或多或少都会有一些了解,包括上面LZ提到的问题,不少人也都知道答案。

  然而,光知道答案是远远不够的,这并不足以成为你的优势,你需要对这些问题有着深刻的了解,以及有着自己独特的见解,才足以让它成为你的优势。

  

三、加分要求

  

  最后一个便是加分要求了,加分要求虽然不如基本要求和可选要求重要,但它也与可选要求类似,往往拿下offer的最终原因,正是这些看似不是必要要求的部分。

  接下来,LZ就带大家一起来看一下,都有哪些可以加分的部分,这一部分其实在之前那篇文章《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》中已经提到过,这里就再详细说一下。

  此外,LZ要强调的是,这些加分要求中,在某些特殊情况下,可能会成为基本要求。

  

  1)数据结构与算法

  这一部分内容不用多说了,大家都懂的。精通数据结构与算法,绝对会成为你的一大亮点。

  因为大部分程序员的这一部分基础都不太好,包括LZ本人,面试的时候如果问到算法一类的问题,LZ基本上就两个字:不会。

  以前LZ还看过Java集合框架的一些源码,对于一些常用的数据结构还有一定的了解。但是现在,LZ已经基本上忘光了,就连最基本的冒泡排序,可能LZ都不一定能写的对。

  因此可以预见的是,数据结构与算法绝对是非常加分的一项。而且,在你面试一些与算法相关的职位时,这个加分要求还可能会成为基本要求。

  

  2)计算机操作系统

  计算机操作系统原理,是非常底层的内容。

  这部分内容比较难,里面讲的都是一些最基本的底层原理,例如内存、指令、系统IO等等。LZ之前也研读过一本关于操作系统的书,也写了一系列文章,地址是。

  不过LZ看的还是不够全面和深入,如果你可以将操作系统研究透彻的话,那么在面试的时候,你完全可以以此作为突破点,展示你的亮点。

  

  3)计算机网络

  其实网络这一部分,对于程序员来说还是比较重要的。

  LZ最近正在做的事情,就经常会碰到一些网络上的问题,虽然很多时候,这些问题其实可以找专门的网络人员去解决,但如果你自己对此不够了解的话,对于你的工作还是会造成很大的障碍。

  而且,要想精通TCP/IP协议,如果对计算机网络不了解的话,还是很难真正理解的。

  因此,计算机网络部分如果你可以精通的话,这也绝对会成为你的一个加分项。

  

  4)熟练使用一种脚本语言

  脚本语言在很多时候是很方便的,而且也非常实用。

  LZ最近就被迫正在使用Python做很多事情,其实用了以后你会发现,虽然Java也可以实现同样的目的,但确实选择合适的语言,会帮你节省大量的精力。

  因此,如果你可以熟练使用一种脚本语言,比如Python、shell等等,这也必定会成为你的加分项。

  

  5)你的github和博客

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 猫哥网络编程系列:HTTP PEM 万能调试法 - 猫哥_kaiye

    猫哥网络编程系列:HTTP PEM 万能调试法 - 猫哥_kaiye

    2015-12-19 18:54

  • 跟我来了解HTML5是什么

    跟我来了解HTML5是什么

    2014-11-17 18:29

网友点评