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

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

一、 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.软件工程,项目管理

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • BookxNote

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

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

    1 引用 • 1 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 52 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 5 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 140 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 700 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 492 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    728 引用 • 1273 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 161 关注
  • API

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

    77 引用 • 430 回帖 • 1 关注
  • sts
    2 引用 • 2 回帖 • 197 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 2 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 65 回帖 • 446 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 2 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 243 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 105 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 780 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 53 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖 • 1 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 748 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖