点击上方 “我是程序汪”,选择 “设为星标”
转载地址: codebay.cn/post/127.html(代码湾)
===========================================
我听说编程语言,经常使用的是其中 20%的技术。在 Java 这门语言中,这 20%包括哪些内容?参加培训两个月了,还有两个月的时间,要 想在两个月后,找到一份 Java 初级程序员的工作,有哪些是必须掌握的,有哪些是可以现学现卖的?一个完整的 Javaweb 项目,有哪些具体模块,每个模 块用到的技术是哪些?
常用 api(String,StringBuffer/StringBuilder 等)
- 集合类,线程类。
2.Servlet(很少用纯粹的 servlet 写,但你要懂,因为很多框架都是基于 servlet 封装的)。
3.json,xml 读写
- 数据库访问(CRUD,事务,连接池)
5.http 请求(HttpClient)
6 其他,包括常用框架,设计模式,面向对象
初级程序员会这些就可以写项目了。后期遇到的问题就会复杂得多,要靠各种经验和知识的积累。
除了要掌握的 20% 以外还要掌握些什么知识才能游刃有余。下面说说我接触(使用)过、的东西吧。
1.java 以分布式应用丰富的生态闻名,在分布式系统中逃不过 CAP 的抉择。早早了解一些分布式一致性协议 paxos、raft 等。学习 zookeeper 的原理和使用场景 (metadata、分布式锁、leaderEletion… etc)
2.RPC 框架在 SOA 架构中起着重要的作用,好好探究终是有好处的,在这里推荐阿里巴巴的 dubbo 框架,同时会 netty、mina 等网络库
3.Hadoop 系列 Storm Spark 等离线 \ 实时计算框架
4.ElasticSearch\SolrCloud 分布式搜索 ELK 日志相关的东西对这些比较敏感,当然在更多的场景使用 ES 也是有很多的
消息队列 kafka\MetaQ RabbitMQ 恩, ZeroMQ(不完全算作 MQ)的作者选择安乐死了,愿天堂没有痛苦
然后就是各种基础知识,编程语言、网络方面、数据库、数据结构和算法。不要觉得任何一项都精通了,敢说精通的知乎能有几个。
说说自己的感受吧,刚工作应该不会让你独立开始新项目,应该会让你跟正在开发中的项目
学会使用 eclipse,svn 等 IDE 和工具(不用说了吧,主要是看你工作的地方,比如大家用 eclipse 你想用 IntelliJ IDEA 也可以,但是刚工作肯定很多不懂,这时候暂时还不要标新立异的好,出了问题好问。当然你是 ide 大神请无视)
刚入职还接触不到核心工作,就让我先改改页面什么的,作为 web 开发 html、css、和 javascript 不用精通,至少需要了解用法和语法吧,虽然 有前端工程师,但是这个肯定也是要了解的(自己公司小项目组,各个都被逼成全栈了)。javascript 其实还是很强大的,但是刚开始不用写的很深,很 多轮子可以用,比如 easyui,会查阅官方文档,知道用法往网页里嵌,然后后台按格式把数据传到前台就好。
然后开始逐步往后台写了,熟悉下设计模式,如果太多太难理解可以先理解工厂模式,写一个接口再用一个或若干个实现类实现这个接口,需要用的时候在根据需要 来确定用哪个实现类。(一开始不理解这么做这么繁琐有什么用,但是自从上次项目的数据库从 oracle 换成 mysql 就知道这么做其实大有用处)一般项目 开发都会用到设计模式,不了解可能会摸不清楚整个项目的架构,无从下手。
不同公司用的框架不一样,但 struts,spring 还是用 的比较多的,所以这两个东西还是比较熟悉的好,不然你可能连整个项目的架构都不清楚,不要说自己写,连改都很难入手。比如项目的跳转是怎么配的,哪个配置 文件代表了什么。(一开始我把项目本地跑起来以后我连主页在哪是哪个文件怎么进去的都不清楚 T.T,一直在找 index.jsp 然后才知道项目用 freemarker 做的,是一个 ftl 文件)
5.web 项目要操作数据库的工作是少不了的了,自己跟的项目没用 hibernate,主要用的是 StringBuffer 拼接 sql,如果从事 web 开发,sql 还是要比较熟的。
- 自己感觉做 web 项目设计高深算法的可能做的比较深才会遇到,更多的是对字符串和数值格式的操作,比如后台从数据库抽出来到前台怎么展示,用户输入的数据 怎么怎么存到数据库里,所以最好熟悉下字符串的操作,分割呀合并呀,String 转 float、int 什么的,日期格式呀什么的。
如果公司有专业运维,服务器部署什么的交给他们就好了,如果没有就最好还是了解下,远程连接呀,linux 的一些简单的命令呀,tomcat 呀什么的
20% 我不知道从哪方面去理解,接下来我会将自己多年来工作中会经常使用到的技术列出来。
1.html、css
2.java 工作原理(jvm)
3.java 语法、数据结构和算法
4.java 语言特性(封装、继承、多态、抽象)
5.java 设计模式(在开发中会经常用到)
6.java 反射机制(常用框架都会用到反射机制)
7.io(文件读写)
多线程
网络编程
10.javascript
11.jquery
- 数据库(oracle、mysql 等等)
13.servlet
14.JDBC
15.javabean
16.WEB 项目分层架构
- 前后台交互
18.ajax
过滤器及过滤器原理
常用框架(Struts、hibernate、spring、springMVC、i/mybatis)
框架整合
工作流(流程引擎工作机制)
23.xml、properties、json
- 常用页面以及后台插件(tree、时间、poi 等等)
25.nosql 数据库以及应用场景(mongoDB)
缓存数据库以及机制(redis、memcached)
第三方接口调用
28.SDK
29.web 应用服务器(tomcat、weblogic)
30.linux
日志
数据库连接池
33.maven
34.svn
- 建模工具(powerdesiner、axure)使用
36.TCP/IP
程序汪往期精彩文章包含答案
程序汪最近整理的 BAT 大小厂面试题 2019 (面试题目录推荐)
java 程序员模板设计模式真的有必要掌握下,冗余代码一扫光
程序汪 2019 的总结,认识了很多朋友赚了些小钱,现在分享出来
1 | 给个[在看],是对程序汪最大的支持 |