一个 Java 高级工程师的进阶之路

本贴最后更新于 2389 天前,其中的信息可能已经事过境迁

一、 Java。要想成为 JAVA(高级)工程师肯定要学习 JAVA。一般的程序员或许只需知道一些 JAVA 的语法结构就可以应付了。但要成为 JAVA(高级) 工程师,您要对 JAVA 做比较深入的研究。您应该多研究一下 JDBC、IO 包、Util 包、Text 包、JMS、EJB、RMI、线程。如果可能,希望您 对 JAVA 的所有包都浏览一下,知道大概的 API,这样您就发现其实您想实现的很多功能,通过 JAVA 的 API 都可以实现了,就不必自己费太多的脑经 了。

二、 设计模式。其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代 码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。 但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?

三、 XML。现在的系统中不使用 XML 几乎是不可能的。XML 的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解 XML,包括它的语法,结构。您还需要比较熟练的使用解析 XML 的一些 API,比如 JDOM,SAX 等,因为在我们一般的项目中,XML 往往担当系统配置 信息的作用,您需要用这些 API 解析这些配置信息,开发完美的项目。

四、 精通使用一种或两种框架。像在《如何成为 java 初级程序员》中提到的那样,“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开 发使你可以省出很多的开发成本”。但我这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您 会想到把 SQL 语句与您的 JAVA 代码分开,再比如您会考虑把您的业务逻辑配置到 XML 或者数据库中,这样整个项目就很容易扩张了。

五、 熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及 SQL 的编写。所以为了 更好的为国家做贡献,建议您还是多了解一些主流数据库,比如 SQLSERVER,Oracle,多连接 SQL 和存储过程以及触发器。如果您不是“科班”出 身,您还需要补充一些数据库原理方面的知识。

六、 精通一种或两种 WEBServer。尽管我在《如何成为 java 初级程序员》里讲过它,我还是要强调您要精通一种或两种。因为作为 JAVA 工程师,特别时 想成为高级 JAVA 工程师的您,您不可避免地要部署您的项目到 WebServer 上,而且只有当您精通一种 WebServer,您才可能最大限度地使用它 的资源,这往往可以节省很多时间和精力。

七、 UML。我知道您肯定想成为高级工程师,因此您有必要了解或熟练或精通 UML,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队 中,UML 是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但 却很重要。

八、 站在高度分析问题:这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而 不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在 您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。
九、 工具。与在《如何成为 java 初级程序员》里提到的不同,您在这个阶段可能接触到不同的工具了,尽管您还需要使用 JB 或者 IDEA,但能可能对 ROSE,Together 要多了解一些,因为您要画 UML 了。不要再对 Dreamweaver 等 HTML 编辑器情有独钟了,那些 JSP 页面让初级程序员 去写吧

微观方面

1.Core Java 部分
这是最基础的,对于一个 java 高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:
a.面向对象编程思想(封装继承多态接口)
b.字符串处理
c.java.lang 包,java.util 包等常用包
d.java 异常处理

2.Java 高级部分
a.**Java **I/O 流
b.Java 多线程技术
c.Java 网络编程
d.Java Swing
后两项可以了解即可,如果项目需要可以深入研究

3.前端基本技能

       * HTML + CSS网页开发
       * **JavaScript**
       * **jQuery**
       * 浏览器兼容性 CSS hack(了解)

4.熟练使用 JSP + Servlet 进行开发
5.MVC 设计模式,原理,以及相关框架,如 Struts
6.SSH 框架
7.缓存技术 session & cookie
8.熟练使用一种以上 Java 开发工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟练使用 XML
JDOM w3c.dom SAX
10.Java 设计模式
工厂模式,单例模式 ==
11.Java 反射机制
反射的各种用法
12.了解或熟悉 C, C++, .NET
13.熟悉 JDK 的配置,环境变量
14.数据库 oracle 必学,其他最好了解一种以上(MySQL,sql server,access==)
oracle:视图,索引,存储过程,触发器,游标,包,常用函数 ==
15.数据库原理
事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案==
16.JDBC,连接池
17.Ajax,反向 Ajax
18.HTTP 协议,request 和 response 的原理,HTTP status(了解常用的),Https 原理
19.熟悉 Linux 基本命令,使用过 Linux/Unix 系统,可以编写 shell 脚本,可以在 Linux 上部署项目
20.了解 windows 系统批处理脚本 bat
21.了解 HTML5,最好学习过
22.熟悉一种 JS 框架,如 Prototype
23.J2EE 原理 熟悉一种以上 web 容器如 Tomcat,JBoss,websphere,weblogic==
24.熟悉 ant 或 maven
25.熟悉一门脚本语言,如 Python ,ruby
26.了解 PHP/ asp

27.了解 ftp 协议及原理

28.熟练使用 Junit 测试,熟悉 Mockito 等测试工具

29,熟悉 javac,javadoc,native,native2ascii 等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。
31.了解 Flex(不学也没关系)
32.了解敏捷开发模式
33.工作流 workflow 至少用过一种,如 OSworkflow,了解原理
34.使用过 VPN 了解其原理
35.熟悉 jstl 表达式和 el 表达式
36.熟悉 webservice,WSDL,SOAP
37.图片处理,如图片上传,预览,限制大小等
38.版本控制工具,CVS VSS SVN GIT
39,JSON 技术,JSON+AJAX
40.分页技术,最好自己实现过不仅仅是用过要知道原理
41.Java Mail
42.Java 读写 txt,excel,JXL 技术
43.JVM 原理,JVM 内存管理,GC,Java 堆栈池
44.熟练使用下面的工具:
office 办公软件,word,excel,ppt 等
plsql,sqldevelop 数据库开发工具
outlook 大公司都用
ue 编辑器
浏览器控制台,调试
SHH/PUTTY 远程

45.UML 建模工具 Rational Rose 等

46. 使用 log4j

47.使用过开放 Api 如百度,腾讯街景,新浪微博等

48.页面静态化技术(伪静态页面)

49.报表技术,使用过报表制作工具,如水晶易表。

50.定时任务,如 spring batch ,学会自定义 batch 任务(不适用第三方工具)

51.了解 uuid

52.b/s 和 c/s 架构

53.正则表达式

54.了解 jndi jms

55.ERP

56.UNICODE 编码,乱码解决

57.开源网络编辑器,如 ckEditor

58.二进制原理

59.使用过,了解过开源论坛框架,如 discuzz

60.GWT,Closure 框架

61.了解大数据云计算

62.搜索引擎搜索技术

63.软件工程,项目管理

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 733 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1056 回帖 • 2 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 191 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 618 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 429 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 476 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1458 回帖 • 118 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 610 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 4 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 519 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 437 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 10 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 58 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 12 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 2 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 561 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 25 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 181 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 152 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    109 引用 • 54 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 703 关注