Java學到什麼程度才能叫精通?

用戶92366370785


很多人都會問:到底Java學到什麼程度才能叫精通?

我只想說,碼農千千萬,你憑什麼說自己精通Java?

自學Java的人不少,科班出身的也很多,但是到什麼程度才有資格說自己精通Java?個人覺得至少需要經歷以下幾個階段:

重視代碼品質,精益求精,這是技術開發的本質,也是程序員的立足之本

對處於還沒工作或者工作1年左右這個階段的人來說,看書是比較好的提升方式,推薦《Java編程思想》、《effective java》等。

需要注意的是,在看書的過程中一定要思考能否運用書中的經驗來改善自己寫的代碼,運用到實處,比如看到final和static,想想自己代碼中用的是否合理。

此外,還可以看些常用的開源框架,下面知識圖譜可以借鑑:

打好基礎後,主動跳出舒適區,不斷擴大自己的技術視野

這一步比較難,因為很多人會被公司的技術和業務牽著走。比如公司當前的業務規模決定了技術上不需要分佈式技術,很多人就不會去思考規模大了之後如何利用分佈式技術來解決問題。這種時候,除了尋找更大規模的業務外,要時刻保持跳出當前層級和環境來思考的習慣。

比如,你只用了關係型數據庫,有沒有想過數據一直產生,到達TB級別的時候該如何快速檢索與保存呢?

高性能架構技術棧

一切的一切,都要用到你的實戰中去

有了互聯網熱點技術,一個真實的互聯網項目可以讓你把所學的熱點技術由點到線,由線到面,將所有技術聚集到實戰的環境,最終將技術點和項目實戰真正變成自己的本領;享學課堂的老師們已經完成了B2C商城真實項目的設計與開發,課堂手把手帶大家分析B2C項目的每一行源行及設計規範,讓你對Nginx、 Redis、Docker、Mq等技術學而致用,用而不忘,具備獨立的架構設計與開發能力。

高併發電商系統開發實戰

擴展了知識寬度,還要加強自己的技術深度

很多人信奉“不去造輪子”,看似性價比很高的一句話,卻不知道這句話是有前提的,那就是“你得知道輪子的內部結構”,否則就是自我麻痺。

接下來需要選擇某一個或幾個方面深入研究下去,構建自己的核心競爭力。一個有技術深度的程序員才是有靈魂的。而大廠也願意為有趣的靈魂買單,這個時候看的就不僅僅是工資水平,更多的在於晉升和發展前景的廣闊性。

技術的突破需要依賴業務場景的需求和自身刻意的規劃學習,二者缺一不可。但前者是機會,往往不是自己能完全把控的,如果在工作中沒有實踐場景,最好的辦法就是系統的學習與梳理,待機會來臨時才能一展身手。

PS:

需要清晰系統圖的可以關注我的主頁!

希望我這些分享可以幫助在這個行業發展的朋友和童鞋們,在論壇博客等地方少花些時間找資料,把有限的時間,真正花在學習上,我的很多文章都有分享各種架構資料,相信對於已經工作和遇到技術瓶頸或者寫博客碼友,在我的主頁一定都有你需要的內容。

Java高併發框架


精通:透徹理解並能熟練掌握

看了精通的意思,可能很多人都不敢說自己真的精通Java!原因有2點:

  • 精通這個詞是不能亂用的,因為行業裡總有你不會的。想想在自己的工作中,你沒有問過他人Java相關問題嗎?我相信工作中肯定都問過!
  • 學無止境,何來精通?Java作為一門編程語言,它也在不斷的變化,比如說從Java9-Java10,這不都是在不斷的變化嗎?
學無止境!

學習並不是一蹴而就的,在工作中我們肯定會遇到問題,這就需要我們去認真的學習,畢竟不學就不會,升職加薪神馬的都說枉然!我們隨意看看Java開發工程師的任職要求,就會發現要求會的還是蠻多的!

來看看這兩個招聘信息,其實就涵蓋了大部分Java開發工程師需要掌握的技能。

  • Java開源框架:spring、springmvc、mybatis、hibernate等等
  • 熟悉常見的數據庫,並且有基本的應用能力,比如說:MySQL、oracle等
  • 熟悉Eclipse、Tomcat、JDK、SVN運行環境的配置;
  • 熟悉Maven的使用,理解Maven的原理與使用技巧

如何自學Java?

有多少小夥伴想自學Java或者是正在學Java的路上?你有一整套的學習方法嗎?如果沒有,這個肯定能幫到你!

分享Java學習線路圖

這個學習線路圖把每個知識點都涵蓋進去了,可以查看大圖!下面說分階段的,配合視頻學習!

第一階段:

第二階段

第三階段:

第四階段

第五階段

希望能幫助到你呦。


黑馬程序員


結構調整,從入門到精通;進一步完善知識體系; 新技術補充;

共分為基礎→底層→進階→高級→架構→擴展六個階段

1基礎篇

01 面向對象

→ 什麼是面向對象

面向對象、面向過程

面向對象的三大基本特徵和五大基本原則

→ 平臺無關性

Java 如何實現的平臺無關

JVM 還支持哪些語言(Kotlin、Groovy、JRuby、Jython、Scala)

→ 值傳遞

值傳遞、引用傳遞

為什麼說 Java 中只有值傳遞

→ 封裝、繼承、多態

什麼是多態、方法重寫與重載

Java 的繼承與實現

構造函數與默認構造函數

類變量、成員變量和局部變量

成員變量和方法作用域

02 Java 基礎知識→ 基本數據類型

8 種基本數據類型:整型、浮點型、布爾型、字符型

整型中 byte、short、int、long 的取值範圍

什麼是浮點型?什麼是單精度和雙精度?為什麼不能用浮點型表示金額?

→ 自動拆裝箱

什麼是包裝類型、什麼是基本類型、什麼是自動拆裝箱

Integer 的緩存機制

→ String

字符串的不可變性

JDK 6 和 JDK 7 中 substring 的原理及區別、

replaceFirst、replaceAll、replace 區別、

String 對“+”的重載、字符串拼接的幾種方式和區別

String.valueOf 和 Integer.toString 的區別、

switch 對 String 的支持

字符串池、常量池(運行時常量池、Class 常量池)、intern

→ 熟悉 Java 中各種關鍵字

transient、instanceof、final、static、volatile、synchronized、const 原理及用法

→ 集合類

常用集合類的使用、ArrayList 和 LinkedList 和 Vector 的區別 、SynchronizedList 和 Vector 的區別、HashMap、HashTable、ConcurrentHashMap 區別、

Set 和 List 區別?Set 如何保證元素不重複?

Java 8 中 stream 相關用法、apache 集合處理工具類的使用、不同版本的 JDK 中 HashMap 的實現的區別以及原因

Collection 和 Collections 區別

Arrays.asList 獲得的 List 使用時需要注意什麼

Enumeration 和 Iterator 區別

fail-fast 和 fail-safe

CopyOnWriteArrayList、ConcurrentSkipListMap

→ 枚舉

枚舉的用法、枚舉的實現、枚舉與單例、Enum 類

Java 枚舉如何比較

switch 對枚舉的支持

枚舉的序列化如何實現

枚舉的線程安全性問題

→ IO

字符流、字節流、輸入流、輸出流、

同步、異步、阻塞、非阻塞、Linux 5 種 IO 模型

BIO、NIO 和 AIO 的區別、三種 IO 的用法與原理、netty

→ 反射

反射與工廠模式、反射有什麼用

Class 類、java.lang.reflect.*

→ 動態代理

靜態代理、動態代理

動態代理和反射的關係

動態代理的幾種實現方式

AOP

→ 序列化

什麼是序列化與反序列化、為什麼序列化、序列化底層原理、序列化與單例模式、protobuf、為什麼說序列化並不安全

→ 註解

元註解、自定義註解、Java 中常用註解使用、註解與反射的結合

Spring 常用註解

→ JMS

什麼是 Java 消息服務、JMS 消息傳送模型

→ JMX

java.lang.management.*、 javax.management.*

→ 泛型

泛型與繼承、類型擦除、泛型中 KTVE? object 等的含義、泛型各種用法

限定通配符和非限定通配符、上下界限定符 extends 和 super

List<object> 和原始類型 List 之間的區別? /<object>

List> 和 List<object> 之間的區別是什麼?/<object>

→ 單元測試

junit、mock、mockito、內存數據庫(h2)

→ 正則表達式

java.lang.util.regex.*

→ 常用的 Java 工具庫

commons.lang、commons.*...、 guava-libraries、 netty

→ API & SPI

API、API 和 SPI 的關係和區別

如何定義 SPI、SPI 的實現原理

→ 異常

異常類型、正確處理異常、自定義異常

Error 和 Exception

異常鏈、try-with-resources

finally 和 return 的執行順序

→ 時間處理

時區、冬令時和夏令時、時間戳、Java 中時間 API

格林威治時間、CET,UTC,GMT,CST 幾種常見時間的含義和關係

SimpleDateFormat 的線程安全性問題

Java 8 中的時間處理

如何在東八區的計算機上獲取美國時間

→ 編碼方式

Unicode、有了 Unicode 為啥還需要 UTF-8

GBK、GB2312、GB18030 之間的區別

UTF8、UTF16、UTF32 區別

URL 編解碼、Big Endian 和 Little Endian

如何解決亂碼問題

→ 語法糖

Java 中語法糖原理、解語法糖

語法糖:switch 支持 String 與枚舉、泛型、自動裝箱與拆箱、方法變長參數、枚舉、內部類、條件編譯、 斷言、數值字面量、for-each、try-with-resource、Lambda 表達式

03 閱讀源代碼

String、Integer、Long、Enum、

BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、

ArrayList & LinkedList、

HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet

04 Java 併發編程→ 併發與並行

什麼是併發、什麼是並行

併發與並行的區別

→ 什麼是線程,與進程的區別

線程的實現、線程的狀態、優先級、線程調度、創建線程的多種方式、守護線程

線程與進程的區別

→ 線程池

自己設計線程池、submit() 和 execute()、線程池原理

為什麼不允許使用 Executors 創建線程池

→ 線程安全

死鎖、死鎖如何排查、線程安全和內存模型的關係

→ 鎖

CAS、樂觀鎖與悲觀鎖、數據庫相關鎖機制、分佈式鎖、偏向鎖、輕量級鎖、重量級鎖、monitor、

鎖優化、鎖消除、鎖粗化、自旋鎖、可重入鎖、阻塞鎖、死鎖

→ 死鎖

什麼是死鎖

死鎖如何解決

→ synchronized

synchronized 是如何實現的?

synchronized 和 lock 之間關係、不使用 synchronized 如何實現一個線程安全的單例

synchronized 和原子性、可見性和有序性之間的關係

→ volatile

happens-before、內存屏障、編譯器指令重排和 CPU 指令重

volatile 的實現原理

volatile 和原子性、可見性和有序性之間的關係

有了 symchronized 為什麼還需要 volatile

→ sleep 和 wait→ wait 和 notify→ notify 和 notifyAll→ ThreadLocal→ 寫一個死鎖的程序→ 寫代碼來解決生產者消費者問題→ 並方包

Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、ConcurrentHashMap、Executors

2底層篇

01JVM→ JVM 內存結構

class 文件格式、運行時數據區:堆、棧、方法區、直接內存、運行時常量池、

堆和棧區別

Java 中的對象一定在堆上分配嗎?

→ Java 內存模型

計算機內存模型、緩存一致性、MESI 協議

可見性、原子性、順序性、happens-before、

內存屏障、synchronized、volatile、final、鎖

→ 垃圾回收

GC 算法:標記清除、引用計數、複製、標記壓縮、分代回收、增量式回收

GC 參數、對象存活的判定、垃圾收集器(CMS、G1、ZGC、Epsilon)

→ JVM 參數及調優

-Xmx、-Xmn、-Xms、Xss、-XX:SurvivorRatio、

-XX:PermSize、-XX:MaxPermSize、-XX:MaxTenuringThreshold

→ Java 對象模型

oop-klass、對象頭

→ HotSpot

即時編譯器、編譯優化

→ 虛擬機性能監控與故障處理工具

jps, jstack, jmap, jstat, jconsole, jinfo, jhat, javap, btrace, TProfiler

Arthas

02 類加載機制

classLoader、類加載過程、雙親委派(破壞雙親委派)、模塊化(jboss modules、osgi、jigsaw)

03 編譯與反編譯

什麼是編譯(前端編譯、後端編譯)、什麼是反編譯

JIT、JIT 優化(逃逸分析、棧上分配、標量替換、鎖優化)

編譯工具:javac

反編譯工具:javap 、jad 、CRF

3進階篇

01 Java 底層知識→ 字節碼、class 文件格式

→ CPU 緩存,L1,L2,L3 和偽共享→ 尾遞歸→ 位運算

用位運算實現加、減、乘、除、取餘

02 設計模式

設計模式的六大原則:

開閉原則(Open Close Principle)、里氏代換原則(Liskov Substitution Principle)、依賴倒轉原則(Dependence Inversion Principle)

接口隔離原則(Interface Segregation Principle)、迪米特法則(最少知道原則)(Demeter Principle)、合成複用原則(Composite Reuse Principle)

→ 瞭解 23 種設計模式

創建型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。

結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。

行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter 模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。

→ 會使用常用設計模式

單例的七種寫法:懶漢——線程不安全、懶漢——線程安全、餓漢、餓漢——變種、靜態內部類、枚舉、雙重校驗鎖

工廠模式、適配器模式、策略模式、模板方法模式、觀察者模式、外觀模式、代理模式等必會

不用 synchronized 和 lock,實現線程安全的單例模式→ 實現 AOP→ 實現 IOC→ nio 和 reactor 設計模式

03 網絡編程知識

→ tcp、udp、http、https 等常用協議

三次握手與四次關閉、流量控制和擁塞控制、OSI 七層模型、tcp 粘包與拆包

→ http/1.0 http/1.1 http/2 之前的區別

http 中 get 和 post 區別

常見的 web 請求返回的狀態碼

404、302、301、500分別代表什麼

→ http/3→ Java RMI,Socket,HttpClient→ cookie 與 session

cookie 被禁用,如何實現 session

→ 用 Java 寫一個簡單的靜態文件的 HTTP 服務器→ 瞭解 nginx 和 apache 服務器的特性並搭建一個對應的服務器→ 用 Java 實現 FTP、SMTP 協議→ 進程間通訊的方式→ 什麼是 CDN?如果實現?→ DNS什麼是 DNS 、記錄類型: A 記錄、CNAME 記錄、AAAA 記錄等

域名解析、根域名服務器

DNS 汙染、DNS 劫持、公共 DNS:114 DNS、Google DNS、OpenDNS

→ 反向代理

正向代理、反向代理

反向代理服務器

04 框架知識

→ Servlet

生命週期

線程安全問題

filter 和 listener

web.xml 中常用配置及作用

→ Hibernate

什麼是 OR Mapping

Hibernate 的懶加載

Hibernate 的緩存機制

Hibernate / Ibatis / MyBatis 之間的區別

→ Spring Bean 的初始化AOP 原理實現 Spring 的IOCSpring 四種依賴注入方式→ Spring MVC

什麼是 MVC

Spring mvc 與 Struts mvc 的區別

→ Spring Boot

Spring Boot 2.0、起步依賴、自動配置、

Spring Boot 的 starter 原理,自己實現一個 starter

→ Spring Security→ Spring Cloud

服務發現與註冊:Eureka、Zookeeper、Consul

負載均衡:Feign、Spring Cloud Loadbalance

服務配置:Spring Cloud Config

服務限流與熔斷:Hystrix

服務鏈路追蹤:Dapper

服務網關、安全、消息

05 應用服務器知識

→ JBoss

→ tomcat→ jetty→ Weblogic

06 工具

→ git & svn

→ maven & gradle→ Intellij IDEA

常用插件:Maven Helper 、FindBugs-IDEA、阿里巴巴代碼規約檢測、GsonFormat

Lombok plugin、.ignore、Mybatis plugin

4高級篇

01 新技術

→ Java 8

lambda 表達式、Stream API、時間 API

→ Java 9

Jigsaw、Jshell、Reactive Streams

→ Java 10

局部變量類型推斷、G1 的並行 Full GC、ThreadLocal 握手機制

→ Java 11

ZGC、Epsilon、增強 var

→ Spring 5

響應式編程

→ Spring Boot 2.0→ HTTP/2→ HTTP/3

02 性能優化

使用單例、使用 Future 模式、使用線程池

選擇就緒、減少上下文切換、減少鎖粒度、數據壓縮、結果緩存

03 線上問題分析

→ dump 獲取

線程 Dump、內存 Dump、gc 情況

→ dump 分析

分析死鎖、分析內存洩露

→ dump 分析及獲取工具

jstack、jstat、jmap、jhat、Arthas

→ 自己編寫各種 outofmemory,stackoverflow 程序

HeapOutOfMemory、 Young OutOfMemory、

MethodArea OutOfMemory、ConstantPool OutOfMemory、

DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow

→ Arthas

jvm 相關、class/classloader 相關、monitor/watch/trace 相關、

options、管道、後臺異步任務

文檔:https://alibaba.github.io/arthas/advanced-use.html

→ 常見問題解決思路

內存溢出、線程死鎖、類加載衝突

→ 使用工具嘗試解決以下問題,並寫下總結

當一個 Java 程序響應很慢時如何查找問題

當一個 Java 程序頻繁 FullGC 時如何解決問題

如何查看垃圾回收日誌

當一個 Java 應用發生 OutOfMemory 時該如何解決

如何判斷是否出現死鎖

如何判斷是否存在內存洩露

使用 Arthas 快速排查 Spring Boot 應用404/401問題

使用 Arthas 排查線上應用日誌打滿問題

利用 Arthas 排查 Spring Boot 應用 NoSuchMethodError

04 編譯原理知識

→ 編譯與反編譯

→ Java 代碼的編譯與反編譯→ Java 的反編譯工具

javap 、jad 、CRF

→ 即時編譯器→ 編譯過程詞法分析,語法分析(LL 算法,遞歸下降算法,LR 算法)語義分析,運行時環境,中間代碼,代碼生成,代碼優化

05 操作系統知識

→ Linux 的常用命令→ 進程間通信→ 進程同步

生產者消費者問題、哲學家就餐問題、讀者寫者問題

→ 緩衝區溢出→ 分段和分頁→ 虛擬內存與主存→ 虛擬內存管理→ 換頁算法

06 數據庫知識

→ MySQL 執行引擎

→ MySQL 執行計劃

如何查看執行計劃,如何根據執行計劃進行 SQL 優化

→ 索引

Hash 索引、B 樹索引(B+樹、和B樹、R樹)

普通索引、唯一索引

覆蓋索引、最左前綴原則、索引下推

→ SQL 優化→ 數據庫事務和隔離級別

事務的隔離級別、事務能不能實現鎖的功能

→ 數據庫鎖

行鎖、表鎖、使用數據庫鎖實現樂觀鎖、

→ 連接

內連接,左連接,右連接

→ 數據庫主備搭建→ binlog→ redolog→ 內存數據庫

h2

→ 分庫分表→ 讀寫分離→ 常用的 NoSql 數據庫

redis、memcached

→ 分別使用數據庫鎖、NoSql 實現分佈式鎖→ 性能調優→ 數據庫連接池

07 數據結構與算法知識

→ 簡單的數據結構

棧、隊列、鏈表、數組、哈希表、

棧和隊列的相同和不同之處

棧通常採用的兩種存儲結構

→ 樹

二叉樹、字典樹、平衡樹、排序樹、

B 樹、B+ 樹、R 樹、多路樹、紅黑樹

→ 堆

大根堆、小根堆

→ 圖

有向圖、無向圖、拓撲

→ 排序算法

穩定的排序:冒泡排序、插入排序、雞尾酒排序、桶排序、計數排序、歸併排序、原地歸併排序、二叉排序樹排序、鴿巢排序、基數排序、侏儒排序、圖書館排序、塊排序

不穩定的排序:選擇排序、希爾排序、Clover 排序算法、梳排序、堆排序、平滑排序、快速排序、內省排序、耐心排序

各種排序算法和時間複雜度

→ 兩個棧實現隊列,和兩個隊列實現棧→ 深度優先和廣度優先搜索全排列、貪心算法、KMP 算法、hash 算法海量數據處理

分治,hash 映射,堆排序,雙層桶劃分,Bloom Filter,bitmap,數據庫索引,mapreduce 等。

08 大數據知識

→ Zookeeper

基本概念、常見用法

→ Solr,Lucene,ElasticSearch

在 linux 上部署 solr,solrcloud,新增、刪除、查詢索引

→ Storm,流式計算,瞭解 Spark,S4

在 linux 上部署 storm,用 zookeeper 做協調,運行 storm hello world,local 和 remote 模式運行調試 storm topology。

→ Hadoop,離線計算

HDFS、MapReduce

→ 分佈式日誌收集 flume,kafka,logstash→ 數據挖掘,mahout

09 網絡安全知識

→ XSS

XSS 的防禦

→ CSRF→ 注入攻擊

SQL 注入、XML 注入、CRLF 注入

→ 文件上傳漏洞→ 加密與解密

對稱加密、非對稱加密、哈希算法、加鹽哈希算法

MD5,SHA1、DES、AES、RSA、DSA

彩虹表

→ DDOS攻擊

DOS 攻擊、DDOS 攻擊

memcached 為什麼可以導致 DDos 攻擊、什麼是反射型 DDoS

如何通過 Hash 碰撞進行 DOS 攻擊

SSL、TLS,HTTPS→ 用 openssl 籤一個證書部署到 apache 或 nginx

5架構篇

01 分佈式

數據一致性、服務治理、服務降級

→ 分佈式事務

2PC、3PC、CAP、BASE、 可靠消息最終一致性、最大努力通知、TCC

→ Dubbo

服務註冊、服務發現,服務治理

http://dubbo.apache.org/zh-cn/

→ 分佈式數據庫

怎樣打造一個分佈式數據庫、什麼時候需要分佈式數據庫、

mycat、otter、HBase

→ 分佈式文件系統

mfs、fastdfs

→ 分佈式緩存

緩存一致性、緩存命中率、緩存冗餘

→ 限流降級

Hystrix、Sentinal

→ 算法

共識算法、Raft 協議、Paxos 算法與 Raft 算法、

拜占庭問題與算法、2PC、3PC

02 微服務

SOA、康威定律

→ ServiceMesh

sidecar

→ Docker & Kubernets→ Spring Boot→ Spring Cloud

03 高併發

→ 分庫分表

→ CDN 技術→ 消息隊列

ActiveMQ

04監控

→ 監控什麼

CPU、內存、磁盤 I/O、網絡 I/O 等

→ 監控手段

進程監控、語義監控、機器資源監控、數據波動

→ 監控數據採集

日誌、埋點

→ Dapper

05 負載均衡

tomcat 負載均衡、Nginx 負載均衡

四層負載均衡、七層負載均衡

06 DNS

DNS 原理、DNS 的設計

07 CDN

數據一致性

6 擴展篇

01 雲計算

IaaS、SaaS、PaaS、虛擬化技術、openstack、Serverlsess

02 搜索引擎

Solr、Lucene、Nutch、Elasticsearch

03 權限管理

Shiro

04 區塊鏈

哈希算法、Merkle 樹、公鑰密碼算法、共識算法、

Raft 協議、Paxos 算法與 Raft 算法、拜占庭問題與算法、消息認證碼與數字簽名

→ 比特幣

挖礦、共識機制、閃電網絡、側鏈、熱點問題、分叉

→ 以太坊

→ 超級賬本

05 人工智能

數學基礎、機器學習、人工神經網絡、深度學習、應用場景。

→ 常用框架

TensorFlow、DeepLearning4J

06 loT

07 量子計算

08 AR & VR

09 其他語言

Groovy、Python、Go、NodeJs、Swift、Rust


學習書籍推薦


java互聯網架構


Java學到什麼程度叫精通呢?

百度上說的精通:透徹理解並能熟練掌握。

請問你對java這個領域達到透徹理解了嗎?

怕是我培訓過的機構,有著10年以上經驗,做過“架構師”的老師都不好說java精通了。或許,他們對於架構師及以下的技術水平精通了,畢竟他們的培訓課程中還有“java架構師”班,教2年以上經驗程序員成長為架構師的培訓課程。

回到這個問題,老實的說,我們培訓畢業的時候班裡的平均就業薪資10K,也沒有往簡歷上寫java精通的,所以還是不要寫精不精通了,老老實實把會的技能寫上,把做過的項目寫上就完了~就算你寫了精通,人家也不會信,大概還會覺得你很學生~

我還沒培訓的時候,在b站上看杜老師的159集java教程,就感覺自己是不是學完就很厲害了,到了動力節點培訓後,發現我們早9晚11點多的學習,老師11點多甚至12點了還為沒走的學員解答問題,這樣的高效學習下,我們都以為培訓完後就很厲害了,然而,培訓完後我們全班的確拿到了平均10K的薪資,那時候我們才發現,我們才是一個初級程序員……

初級程序員後面還有高級程序員、首席程序員/主管、架構師/項目經理、高級架構師/高級項目經理、首席……、……

總之,爬上了一個小土坡,發現前面是高山的感覺,真赤幾!


大夢一場灬


隨著Java SE 12發佈,Java平臺也增加了很多新的特性,越來越多的開發人員想嘗試使用Java SE 7中的新特性,在Java程序中使用這些新特性,可以提高代碼質量,提升工作效率。為了使廣大學生和工作者能真正掌握Java 7程序設計技術,感受Java7程序設計語言的魅力,領悟Java7程序設計的快樂和享受到動態語言帶來的在提高生產效率方面的好處,根據筆者近10多年的程序開發和Java授課經驗,精心編寫了本書。本書並不單純從知識角度來講解Java 7程序設計,而是從實踐和解決開發問題的角度來介紹Java語言,在編寫的過程中,注重把Java語言中的重點、難點、要點和編程常見問題融合在一起進行進解。所以本書中介紹了大量上機實驗指導、問題集錦與解答、自我檢測與實踐以及經典考試、面試問題分析,這些案例既能讓讀者鞏固每章的知識,又可以讓讀者學以致用、激發編程自豪感,進而引爆內心的編程激情。

近年來,功能強大的Java語言成為最流行的程序設計語言,學習Java語言的人難計其數。然而,在筆者工作和教學過程中,發現大多數人學過Java語言後,並沒有發揮Java語言和計算機的強大功能,他們通常只使用Java語言非常簡單的功能,為什麼有些人學過Java語言後,與簡直沒學過一樣呢?其中一個原因就是,Java程序設計語言具有較強的實踐性,目前大部分Java教程都是注重基本概念知識點的介紹,忽視了對學生編程激情的激發,書中沒有上機指導、問題解答、自我檢測與項目實踐、考試/面試題分析,這樣使得學生的實踐太少。在編程領域裡,沒有所謂的“武林秘笈”,再好的教材也一定要配合大量上機實驗指導和課後做大量習題進行自我檢測與項目實踐,所以本書配合了大量上機實驗指導的習題及問題解答。


美食旅遊IT博士後


java精通估計也沒有一個官方的標準,我覺得可以從以下幾個方面做下參考。

1,java本身相關的,比如多線程,異常處理,連接池等必須比較熟練使用。

2,java開發框架必須熟練使用,並且瞭解框架的運行原理,比如ssh框架,ssm框架,springboot框架等。

3,java虛擬機的常規優化必須熟悉,至少常用的參數如何設置,內存管理機制等。

4,工程實踐方面,個人感覺必須有2年以上開發經驗。

5,java程序使用Maven等構建工具。


JIAYOU小畫家


Java入門不難,但是要精通,一個幾百號人的公司,睡都不敢說精通。遠的不說,Java基礎、垃圾回收機制、內存分配這些五年經驗的人多少敢全回答出來?再者就是框架,要精通就得從源碼入手。要想寫出漂亮的代碼,23種設計模式要精通。

實際開發全精通不現實,選1-3門作為主攻去精通。其他的熟練運用就行。

希望我的回答能幫到你。


從零跟我學Java


四個階段:

瞭解 掌握 熟悉 精通

瞭解是懂皮毛,停留在認知層次,不會用。

掌握是會用,也僅侷限於應用,背後的原理可能不清楚,同類問題換個場景就搞不定了。

熟悉是會用但也清楚背後的原理,相關知識點能很快串聯起來,但知識的深度和廣度都有侷限性。

精通就是至高境界了,深度和廣度兼具,能夠舉一反三,基本沒有這方面解決不了的問題,甚至可以創造性的解決。

無論哪個層次,都離不開兩個字,就是基礎!曾經總結過夯實基礎系列的文章,可以參考下:http://huayonglun.com/tags/%E5%BF%83%E5%BE%97/


白色蝸牛


你是隻惡狼,C是隻兔子,Java是隻野牛。

精通,全世界也數不出100只狼。


輕軟


那我問你,怎樣算精通漢語?精通英語?

你要看你的“精通”兩字對誰講。這是個相對命題。

你對一個文盲說你精通漢語,他就信了;

你對一個普通老外說,你精通漢語,也湊合信了;

你對一個作家說你精通漢語,人家說你作文才60分,也能叫“精通”?

作家去跟語言學家說他精通漢語,那就是自找苦吃。

語言學家去跟國學大師說他精通漢語,也只能分分鐘體會自己的無知。


分享到:


相關文章: