扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
如果这 10000行代码都是自己手写出来的 那应该还行了 现在大部分毕业生 都达不到这水平了,如果包括大部分代码都是由软件自动生成,那就不大清楚了哦 嘿嘿
十多年的云安网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整云安建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“云安网站设计”,“云安网站推广”以来,每个客户项目都认真落实执行。
不过如果有基础了还是要到公司里去跟着写的
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助。
专业技能
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。
2.熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组 件以及MVC架构模式进行Java Web项目开发的经验。
3.对Spring的IoC容器和AOP原理有深入了解,熟练的运用Spring框架管理各种Web组件及其依赖关系,熟练的使用Spring进行事务、日志、安全性等的管理,有使用Spring MVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验,熟悉Spring对其他框架的整合。
4.熟练的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,对Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理以及性能调优等有深入的理解。
5.熟练的使用HTML、CSS和JavaScript进行Web前端开发,熟悉jQuery和Bootstrap,对Ajax技术在Web项目中的应用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验。
6.熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQL和PL/SQL进行数据库编程。
7.熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。
8.熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。
9.熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和Enterprise Architect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。
说明:上面罗列的这些东西并不是每一项你都要烂熟于心,根据企业招聘的具体要求可以做相应的有针对性的准备。我个人觉得前6项应该是最低要求,是作为一个Java开发者必须要具备的专业技能
项目介绍
本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。
说明:上面的描述中,E通常指Spring(Java企业级开发的一站式选择);F最有可能是jQuery库及其插件或者是Bootstrap框架,当然如果要构建单页应用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G显然是MVC(模型-视图-控制),最有可能的实现框架是Spring MVC,除此之外还有Struts 2、JSF以及Apache为JSF提供的MyFaces实现,可以使用JSP作为MVC中的V,也可使用模板引擎(如Freemarker和Velocity)来生成视图,还可以是各种文档或报表(如Excel和PDF等),而Servlet和自定义的控制器是MVC中的C,当然Spring MVC中提供了作为前端控制器的DispatcherServlet;J通常是事务脚本,K应该是AOP(面向切面编程)技术,L目前广泛使用的有memcached和Redis;M的选择方案很多,最有可能的是Hibernate和MyBatis,也可以两种技术同时运用,但通常是将增删改交给Hibernate来处理,而复杂的查询则由MyBatis完成,此外TopLink、jOOQ也是优秀的持久层解决方案;底层的数据存取传统上是使用关系型数据库,可以是MySQL、Oracle、SQLServer、DB2等,随着大数据时代的来临,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大数据存取方案(如GFS、HDFS等);项目的开发模型P可以是瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RAD模型等。
项目开发流程
1.可行性分析 可行性分析报告 / 项目开发计划书
2.需求分析 需求规格说明书
1.OOAD(用例图、时序图、活动图)
2.界面原型:帮助理解需求、业务层设计时推导事务脚本
3.设计 概要设计说明书/详细设计说明书
1.抽取业务实体(领域对象):类图、E-R图(概念设计阶段)
2.分层架构:确定各层的技术实现方案(具体到使用的框架、数据库服务器、应用服务器等)。业务层设计:事务脚本模式(事务:用户发送一次请求就是一个事务;脚本:一个方法或一个函数;事务脚本:把一次请求封装为一个方法或一个函数;事务脚本模式:一个事务开始于脚本的打开,终止于脚本的关闭)。业务层涉及的对象本有 三种类型:事务脚本类(封装了业务的流程)、数据访问对象( DAO,封装了持久化操作)、数据传输对象(DTO,封装了失血/贫血领域对象),三者之间的关系是事务脚本类组合(聚合)数据访问对象,这二者都依赖了数据传输对象
3.正向工程(UML类图生成Java代码)和逆向工程(Java代码生成UML类图)
4.数据库物理设计(ER图转换成表间关系图、建库和建表、使用工具插入测试数据)
4.编码 5.测试 测试报告 / 缺陷报告
1.单元测试:对软件中的最小可测试单元进行检查和验证,在Java中是对类中的方法进行测试,可以使用JUnit工具来实施。
2.集成测试:集成测试也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统进行测试。
3.系统测试:将已经确认的软件、硬件、外设、网络等元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
4.验收测试:在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
5.交付和维护 用户手册 / 操作手册
项目管理
版本控制:CVS/SVN/Git
自动构建:Ant/Maven/Ivy/Gradle
持续集成:Hudson/Jenkins
系统架构
负载均衡服务器:F5、A10
应用服务器:
HTTP服务器:Apache、NginX(HTTP、反向代理、邮件代理服务器)
Servlet容器:Tomcat、Resin
EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere 数据库服务器:MySQL、Oracle
第三方工具(插件)应用
图表工具:基于jQuery的图表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
报表工具:Pentaho Reporting、iReport、DynamicReports等。
文档处理:POI、iText等。
工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
作业调度:Quartz、JobServer、Oddjob等。
缓存服务:EhCache、memcached、SwarmCache等。
消息队列:Open-MQ、ZeroMQ等。
安全框架:Shiro、PicketBox等。
搜索引擎:IndexTank、Lucene、ElasticSearch等。
Ajax框架:jQuery、ExtJS、DWR等。
UI插件:EasyUI、MiniUI等。
富文本框:UEditor、CKEditor等。
面试提问
项目是为哪个公司开发的?
项目的投入是多少?
有多少人参与了项目开发?
整个团队中,测试人员、开发人员、项目经理比例是多少?
项目开发了多长时间?
项目总的代码量有多少?
你的代码量有多少?
项目采用了怎样的开发模型或开发流程?
项目的架构是怎样的?
项目的技术选型是怎样的?
你在项目中承担了怎样的职责?
是否经常开会或加班?
项目完成后有哪些收获或是经验教训?
项目中最困难的部分是什么?
如何解决团队开发时遇到的各种冲突?
明:对于没有实际项目经验的,可以在前程无忧、智联招聘、拉勾网等网站上搜索招聘Java程序员的公司,找到他们的官方网站了解他们做的项目,查看项目的详细介绍,然后尝试完成其中一部分功能,最好请教一下高人看看自己的设计和代码是否恰当,这样相当于积累了一定的项目经验。
面试时可以反问面试官的问题
我注意到你们使用了X技术,请问你们是如何解决Y问题的?
为什么你们的产品使用了X技术而不是Y技术?据我所知,X技术虽然有A、B、C等好处,但也存在D和E问题,而Y技术可以解决D和E问题。
我对您说的X技术不是太熟悉,但我感觉它是一个不错的解决方案,您能多讲讲它的工作原理吗?
你们团队是如何进行项目规划的?一周会有几次例会?每周的代码量大概是多少?
就X问题我能想到的解决方案目前就只有Y了,请问您会怎么解决这个问题?
录用谈判
要理直气壮的提出具体的待遇要求
开出比预期稍高的价码
不要只盯着薪水(很多公司更愿意就薪水之外的条件做出让步)
使用最合适的方法(可以尝试在电话或E-mail中谈判待遇)
自我评价
学习能力(搞IT行业的人需要不断的了解新的技术、工具和方法)
团队意识(相比个人英雄主义,IT行业更倡导团队合作)
抗压能力(很多IT企业的工作强度相对来说还是比较大的)
自学编程,免费获取精品IT教程以及资料,搜索:黑马程序员
网页链接
很多网友问我学习Java有没有什么捷径,我说“无他,唯手熟尔”。但是我却很愿意将?
自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!?
要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就力图?
使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,?
这也就是Sun?ONE(Open?Net?Environment)体系。J2SE就是Java2的标准版,主要用于桌?
面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Jav?
a2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。J2SE开发?
桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初?
学者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又?
最好学的就是J2EE了。J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,Java?
Mail等。要学习起来可不是一两天的事。?
那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟?
悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快?
去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP?
。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户?
端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全?
取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的?
,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中?
嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean?
可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是?
Enterprise?JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它?
是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(?
也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程?
序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你?
如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子?
邮件的程序,你就得看看Javamail了。?
好了,对Java和J2EE有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈?
兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ct?
rl+V,也不用劳您老大架再亲自把它?再输一遍吧,再说直接复制还不用怕出错,何乐而?
不为呢!还有就是要经常上一些好的Java编程文章,有好的文章要Cut下来,有问题尽管?
问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的Java方面的编程网?
站:?
CSDN论坛?中国最有名的技术论坛,《程序员》杂志就是他们出?
版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分?
;?
Java研究组织上面有很多原创文章,高手还是挺多的;?
?
Java开发者?那里Java资料比较全;?
java.com.cn?看这域名就知道有多牛,注册用户快接近一万?
了,同时在线人数也在一千左右,人气很旺的;?
IBM的开发者网络
永远的蓝色巨人;?
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?
?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知?
道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除?
了一些散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验,?
而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧(如果?
是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公?
司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦!?
还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合?
理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(?
对不起,偶最近《金装四大才子》看多了)。学Java必读的两个开源程序就是Jive和Pe?
t?Store。Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多?
先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访?
问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平?
时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用?
户的感受,这就是我们与国外软件的差距所在)。Jive的资料在很多网站上都有,大家?
可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后?
就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员?
关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本?
—J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive?2.1版本基础上改编而成,?
全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发?
团队在不断升级。你可以访问banq的网站去下载。Pet?Store(?
宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威?
性,想学J2EE和EJB的朋友不要错过了。有意思的是,Pet?Store还经常作为各大J2EE厂?
商的产品性能的比较标准,就连微软也曾作过一个Pet?Store试图证明.NET性能比J2EE优?
越,可见Pet?Store的例子有多么深入人心。?
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一?
个项目经理,号称Java很简单,只要三个月就可以学会。其实说这种话的人就如当年小?
日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了?
Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级?
程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的?
是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正?
掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计?
模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。关于设计模式的资料,还?
是向大家推荐banq的网站,他把GOF的23种模式以通俗易懂的方?
式诠释出来,纯Java描述,真是经典中的经典。有时间再研究一下MVC结构(把Model-V?
iew-Control分离开的设计思想)吧,现在很流行的Structs就是它的一种实现方式,不?
过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC?
结构。然后你再研究一下软件Refactoring(重整)和极限XP编程,相信你又会上一个台阶?
。?
做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,?
再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作?
室吧,你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑?
周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的来?
了。。。。。。?
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业?
做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的?
程序员分散在各地却同时开发同一个软件,是不是很有意思呢??
下面介绍两个好的开源项目网站:?
湖北省软件公共开发平台
共创联盟
哇,好高兴哦,我终于成为高手了!非也,非也。古人云:“识时务者为俊杰”。你知?
道计算机界现在的发展形势吗?你知道微软的.NET蓝图和SUN?ONE计划之间的明争暗斗吗?
?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“?
Web服务将是下一代互联网应用的制高点”,而微软的.NET蓝图和SUN?ONE计划的斗争焦?
点,也就是Web服务。Web服务就是一个崭新的分布式计算模型,它是一系列标准的综合?
(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同语言编写的软件能够轻易的集成起来,?
使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来,我们就可以在家?
里点击一下鼠标,就可以完成出门旅游的全部准备工作,包括定飞机票,定旅游线路,?
定好房间等。请注意,这所有的一切都是Web站点间自动完成的,再也不用象现在一样,?
表面上是电子商务,实际上很多环节都是人工操作。也许你会觉得这是天方夜谈,不过?
就近的说,你也很有可能承接一个项目,要集成两个企业的ERP系统。很有可能上游企业?
的系统是用Dephi编的,而下游企业的系统是用Java编的。你说你是Java高手,大家都看?
者你怎么做呢。所以啊,你还得学习新技术,如Web服务,而且你Dephi也要懂一点吧(?
Dephi6现在已经提供Web服务的控件了)。?你编的Java系统,可能要和.NET集成,所以?
你.NET要懂一点吧?到最后,你可能发现你已经成为Java高手了,但很多时间却在搞别?
的技术。太极张三丰里说,最厉害的招式就是没有招式,可能就是这个道理吧!?
因为刚刚兴起,所以网上Web服务的资料不是很多,我还是给大家推荐几个网站吧:?
中国UDDI技术联盟
CSDN的柴晓路专栏(?
注:柴晓路也是互联网上一个有名的人物,他发表过很多关于Web服务的文章,还出了一?
书,应该称的上是中国Web服务技术的先行者)?
IBM的开发者网络的XMLWeb?Service专栏:?
可是Web服务?
的力推者?
呜…你费劲千心万苦,总算成为Java高手了,怎叫人不由喜极而泣呢!是啊,真不容易?
,真不简单,真叫人感动啊!那么打个电话告诉我吧,什么?我的电话号码是多少?昏?
到,你打电话问不就知道了吗,真是的……?
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流