一下是我的建议,也是随便聊聊吧:
因为我说的不一定对,可能也有很肤浅的地方。
本人做JAVA差不多6年了
现在在一家大型公司 负责带人做研发和面试新人。
作为过来人,曾经熬夜看书记笔记,敲代码,深知IT的辛苦,不想大家错了方向。
之前有说法JAVA已死。
实话实说JAVA现在确实走下坡路了,特别是web方向 下坡路很严重。
所以在对JAVA开发选择方向上确实需要慎重。
因为JAVA原来的SUN已被Oracle收购,Oracle对JAVA的发展确实不够支持
因为他基本是专注于自己的数据库产品赚钱。
而且其他的语言近年来突飞猛进。
所以现在只会做JAVA收入确实比以前低了不少。
但目前来说JAVA还是热门职业,但已绝对不算高薪【付出和收入比例】。
【关于框架和面试】
现在常用框架不外乎SSH, JBPM, Ibatis, Hadoop.
ssh现在有点像鸡肋吧。
我最早参与联通网上营业厅项目,用的struts1,漏洞太多。
后面后期改为strut2 成本很高,结果爆了一个ONGL的注射漏洞 。
移动联通电信全部都遭殃了,呵呵。
所以现在大型项目基本不感冒这些框架了 一般都自己写框架。
但从另一个方面也说明SSH也有用武之地,比如快速开发小型web项目。
总之框架会用就行,SSH被淘汰是不久的事,重要的还是原理和项目经验。
这里一说要说很多,框架这个东西水很深,不是纯学术的东西。
记住,对于框架来说,我们是用户。把开发人员说成用户?
虽然这样说很别扭,但确实是那样。
因为研发框架本身不能盈利的,这些研发基金会靠什么?
我们用它的框架做项目,我们是他们的客户,核心技术上就依赖它。
项目从一个框架转换到另一个 付出的成本是巨大的 框架基金会可以变向盈利。
像webwork团队搞的Xwrok开始没火,就借助strut1的团队名声,搞了个Struts2出来,谁知道ONGL漏洞是不是故意留下的呢?呵呵。
又如JBPM4吧,好像是主要研发人员和团队闹别扭,跳槽到另外公司又搞出JBPM5,完全不一样的东西。
【关于面试SSH】
SSH已经非常普遍了。
面试的内容,这虽不是我们一家之言,
但公司最想是你参入项目的经验有多少,掌握有多少,学习能力?
这个是公司招人的共性。
SSH一些面试方向:
struts2 你能讲到底层数据传输机制ValueStack 会觉得你掌握足够了。
hibernate 你能讲到对其优化,封装映射临时对象, 怎样使用缓存分页最有效率 其中一个,我也不会再问,算精通了。
spring 无非 IOC和AOP原理,它的MVC的话,web项目基本会用strut2代替。还有个整合其他框架。
其实整合问题这个蛮BT的,因为整合版本问题,我自己都要弄很久,但是问到主要是想了解你的项目经验。
JBPM 这个东西,也没什么说的,没工作经验的可以
网上找个现成项目,自己花一周重做一遍即可。
这是一家之言,但SSH框架内容就这么点 不离其中。
【Hadoop】
这个目前还比较火吧。淘宝都用它。其实跟SSH一个样,就是个框架。
如果同样的时间学习SSH和Hadoop。
Hadoop绝对是能轻松找到工作,而且待遇高于SSH。
现在时间是2013.11,是绝对轻松找到开发工作,待遇相对高于web开发。
所以准备学框架的学生,再特别深入学SSH意义不是太大,可以考虑直接Hadoop
人才较缺,原因,SSH是web方向,JAVA Web 在走下坡路。
而分布式,大数据,数据挖掘,云计算现在较流行。
难点:知识内容并不比SSH难,主要是好教材少,硬件配集群麻烦,也是人才较缺的原因。
【Android】
Android移动市场占有很高,学起来很简单 现在学找工作没问题(3年内) 待遇不差。
但是不能常青,Android碎片化目前是没有解决方案,再这样下去 路线接近Symbian,陨落只是不到5年的事。
这部分面试 就简单多了。
如你没有项目经验,你可做个APP放商场,我们看到完整的应用。即使这个APP相当简单。
其他移动发展方向:
html5 现在还不成熟,大项目没法用,慢。不用太深入,fackbook都在抱怨了么?
WP: 这个值得了解,没有大的硬伤,而且看看背后的公司是谁。
IOS: 这个目前好处多多,公司会给你配苹果电脑,手机,ipad。
目前是中薪以上高薪以下。
Hybrid:混合开发,目前我们项目的解决方案,因为移动终端多样化,不止是手机电视,包括车载终端,大客户的特种移动设备。 待遇可观。
说了一些看似和Android没关的,但实际相关性很大,面试时,你除了android 就算只了解这些,加分很大的,因为以后市场变化谁都说不清,公司是以市场盈利为目的,招你进来都会让你学习其他语言 你有这个意识,会给人印象深刻。
【数据库】
mySQL最好不要弄了,用oracle代替。
有几次 问到没工作经验的应聘者关于oracle数据库,我还得到:电脑太卡所以用mySQL的答案。
记住,MySQL被oracle收购来,就是准备弄死的。
oracle学习优化,花费精力不到你学一门JAVA框架1/2的时间,而有优化能力对你应聘JAVA工作是开绿灯的。
这不是我一家之言,跟同城软件负责招聘的交流过,都是很注重额外优化能力。
大项目上线遇到最多的问题,始终是负载,承载能力,说白了大部分就是数据库承载。
过年发短信不是要堵塞么? 双11支付不是要卡死么?
只能oracle,没有替代方案,目前没有,几年内也很难有。
nosql 虽然在高并发处理能力上非常优秀,但是也有碎片化的趋势,因为下面的具体产品
没有统一标准。
安全性较于oracle,低太多,银行,通信等行业不敢用,用在新浪微薄还行。
而且oracle主要就是JAVA编写的,目前又是JAVA的母公司。
所以学JAVA千万不能忽略oracle。
【面试注意的】
当面试问到你,不知道或记不到的内容,千万不要回答,“我学过忘了或者不知道。”
因为从我们的角度公司没法评估你,甚至对你的能力产生疑问。
因为有时我能感觉出来,其实应聘者了解这部,但可能学的不深,忘了。
最好的方式: 也是我们最愿意听到的,如问到一个你不太清楚的问题,你不清楚其实关系不大,你可以回答相关的。SSH只要你学过,内容其实都过了一遍,回答你擅长的,越详细越好,即使相关性不大,但是会给人印象很好。
一个例子,我让一个应聘者说说JAVA设计模式,按标准应该说要能至少了解10多种才算过关。
对方可能知道点但了解不多,就讲了单例,工厂,观察者。
但是这位面试者把观察者模式说的很详细:适用于那种情况,添加删除观察者,容器是否需要同步,怎样notify,JDK有提供支持类。
其他设计模式却说不出来,但是这样 我认为也过关了。
以后做项目,代码研究仔细点,边做边看花几天时间,相信这样的人也能弄透彻。
记住,虽然面试是可以找捷径的,就是尽量展示自己会什么?
初次工作者,毕业生 尽量不要说 “我可以学,了解一些”,是的,因为听到太多这种回答。
审美疲劳吧,应聘者应该说点不一样的。因为求职的确实多,也不乏滥竽充数者。
从我内心来讲,我觉得才毕业的大学生有许多优势,有激情,动力,同时年轻记忆能力好,也容易管理 薪资要求不高。
缺点就是缺乏工作经验,项目经验。经验是没法找捷径的,必须得通过时间堆起来。