不同的软件公司对于技术人才的要求各不相同。这里稍微简述一下。
1. 互联 公司
2.电商 络
3.金融企业
4.数据处理
5.重构
6.框架开发
第一类:互联 公司。
典型例子:饿了么(非公共平台项目组),大多数中小型创业型公司,万达,万科,浪莎,德邦等等。
这类 络公司的项目由于大多数都是局域 应用,例如办公室OA,邮件平台,信息平台,政务平台,CRM,ERP等等。
这类项目对于安全以及性能的考量比重比较小,有的甚至不考虑PV的测试。所以常规的SSH、SSM框架足以应对这样的需求,而且公司也一般都有成型的框架。其业务相对来说也比较简单,但是其对前台的功底具有一定的要求;比如说jquery、AngularJs、aligeJS以及一些UI框架,EasyUI,EXTjs等等。绝大多数情况下也要求对于页面有设计功底,能够按照低保真原型来绘制出HTML页面;这类公司往往不会招聘专业的UI,都是程序员进行客串。
对于数据库要求会基本的PL/SQL编程,写写包,触发器,存储过程,函数,以及SQL的优化方案。
这类公司虽说对于技术的要求偏向于前台,但是其最大的特点是对于代码没有太强硬的规范,也就是说在写后台业务的时候可以按照自己的设计来,这对于程序员来说是最具磨练性的;这类公司的好处是可以让你在短时间内从“流水式”编程向真正的抽象思维编程进行转变,把设计模式,高性能API方案带入自己的设计中。
发展方向:PM,架构师,全栈工程师。在这类公司呆一段时间,你会在整个WEB项目技术层面上都有极大的进步,js脚本,UI设计,后台框架设计,业务实现,数据库实现等等。
不足:这类公司项目开发流程一般都缺乏规范性。不一定有开发文档,需求文档等等。
面试要求:会以项目经验为主,问很多你在项目中的角色,项目需求,如何实现;谈谈在项目中遇到的问题,以及如何解决等。技术层面会问一些基础的Java知识,一般不会太难,都是比较常见的API。
注意点就是,详细阐述自己所负责的项目模块,项目流程,表现出你对该项目业务已经相当熟悉。
第二类:电商 络。
典型例子:支付接口开发;相当多的外包公司都有这类项目
这类项目对于安全性,性能的考量十足,其项目上手也具有一定的难度。普遍采用了分布式架构,而对于分布式架构并不是很了解的人很难快速地熟悉整个架构情况。这类公司对于技术人员的要求普遍较高,尤其是对java的底层以及部分框架的原理;要求员工能够写出十分正规并且可读性高的代码;除此以外对于算法也有一定的要求。数据库这块一般都有专业的DBA进行开发、调优和维护。参与的并不多。
其难点在于业务相当的复杂,并且对于性能的要求比较苛刻,会对代码进行反复地测试,反复地修改。
发展方向:产品经理、PM、架构师,安全工程师。这类公司对于你在代码上的规范整洁十分有帮助,他们会对已有的代码进行反复的review,而且薪资客观!
不足:加班多,需求变更多,上线繁琐有时候节假日需要无偿加班;甚至是在半夜如果数据出问题了需要及时到场检查。由于其几乎纯后台平台的开发,对于前端,数据库的接触就比较少,技术进步比较局限
面试要求:基础,基础,还是基础!他们往往会问得很深,集合框架,常用API都会问其原理,算法实现。尤其是在多线程这块,大型平台的高并发线程调度往往是他们的热点;线程调度,分布式通讯等等。
第三类:金融企业
典型例子:各大银行项目组。
这类公司对于人才的要求比较均衡,前台后台数据库都希望你会,但是要求不会过于苛刻。他们的项目相对于传统的web项目来看,也无非就是业务上更加复杂了点并牵扯到相当多的数据处理、 络通讯以及中间件的使用,例如MQ,Luncence、Slor、redis、dubbo等。如果你对于这些中间件的部署以及应用十分了解或者感兴趣,那么这类公司将会很适合你。
其难点在于对于新框架的学习速度;这类项目往往都会用到一些中间件框架,会对其进行监控,调优。有的框架甚至非常冷门,这就十分考验你对于新事物学习的速度,越快掌握,你在项目组的地位就越快提升!并且,这类项目组十分看重人才。好的一点就是,加班少,几乎没有强制性加班
发展方向:产品经理、PM、架构师。
不足:项目单一,往往一个项目不断地修改维护,有时候也会修改一些老掉牙的代码,其维护工作往往多于开发工作。
第四类:数据处理中心
典型例子:Ebay的大数据项目组Ebay在上海的大数据处理项目组几乎人尽皆知,环境好,福利好;唯一的不足就是对于英语和技术的要求极高。最好的项目组要求能跟印度人熟练交流专业英语,注意这里我说的是专业英语!对于技术的要求几乎是对于底层的掌握,不仅仅是对Java,对Javascript的要求也极高,甚至有的项目组对于C++、C、Shell都有要求。
面试难点在于他们面试的时候会结合实际问题进行面试,让你写一个小demo完成一个功能,即便是最简单的功能,新人和老手写出来的东西是完全不一样的。他们面试偏向底层原理以及设计原理;没有扎实的基础很难过关。
发展方向:PM、CTO、大数据
面试要求:须精通Java底层实现,有良好的抽象思维和设计思想。英语熟练,最最起码能读能写,因为邮件和文档都是纯英文的。
第五类:重构
典型例子:这类项目组很少,一般只有一些大公司内部才有这类项目组会对于一些老项目进行代码重构,重析。例如会将一些基于jdk1.4的项目按照jdk1.7的新特性进行重构,所以这类项目组都是需要你有极其扎实的基础,设计基础等,并且对于前端也有要求。
发展方向:产品经理、PM、架构师
不足:重复地学习和分析项目需求,这对于大脑也是个负担。大量文档需要编写,对于基础的要求以及对抽象思维的要求都很高。没有实际的开发经验很难上手
面试特点:还是基础!对于不同的情况使用不同的API来性能调优,设计模式,抽象思维都有很高的要求。主流框架需要你对它们的性能有一定的了解。
第六类:框架开发
典型例子:华为,中兴,思科,阿里,百度这类公司就有点大喘气的,他们对于技术人才的要求不是一般的高,当然我说的是比较好的项目组。他们要求技术员工具有扎实的基础,能掌握灵活的设计模式,性能调优,甚至要求掌握JVM的底层原理,要求编写出高质量的代码。
不足:加班多
面试特点:偏向于算法实现和数据结构。这两类普遍都是重难点,给你一个场景,让你选择使用哪种数据结构来进行处理,原因是什么,能带来哪些好处和不足?以及内存上的分配是怎么样的等等。Java上偏向于底层,问的框架不是很多,反而是底层API的特点,以及代码规范来考察你对API的掌握情况。类似于反射,多线程问得很多,经典的题目就是“如果实现有效的线程调度”,“如何防止死锁”等等。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!