【花式填坑第4期】 如何成為一個合格的Java架構師

starkbl發表於2021-09-09

在花式填坑的第四期,大多數使用者對都存在很多問題要問,為此小慕精選出優質問答,讓大家更好了解和學習Java!


圖片描述


Q
&
A


Q:1. 目前才大一,不過高三就開始接觸程式設計,一直學的Python,準備要學Java,兩個語言都是後端,老師我想問問,兩個語言的優劣勢是什麼,Java除了能用在Android之外還有沒有其他的領域可以用(或者是結合硬體的),不一定要面向就業的,還有就是Java學習中應該從什麼知識開始學?

moocer講師:java的優勢在服務端開發、服務端架構;python是一種“膠水”語言、能力是將各個不同層次的東西組織在一起。無所謂優劣,只有適用場景不同。java本身和硬體的關聯關係不太緊密。 Java需要從它的原理、jdk核心類庫開始,然後是各種框架的原理、原始碼,綜合適用以及對框架的修改與完善,甚至自己實現適用於自己公司特點的框架。


 

Q:2.老師,用java工作也快1年了吧, 現在有時候也學習其他的語言 ,感覺java是一門古董語言,很多語法糖都不怎麼好用,而且java更新速度也蠻慢的吧。而且隨著人工智慧的興起,Python現在大火, 而node也異常火爆,網上說以後做web  可能只剩下一門語言, 那就是js 。我其實覺得蠻有道理的,不知道老師怎麼看?

還有,準備學習一門第二語言,老師推薦什麼語言啊?

Google io大會最近將 Kotlin 推薦為android開發預設語言,這個會對java有大影響嗎? 問題比較多,望老師諒解

moocer講師:語言之間是想通的,曾經的Ruby、Ruby On Rails也有要幹倒一切的架勢。

對於語言,我是這麼看的,在大方向上處於一個相對平衡和穩定的狀態。10年20年內,能撼動java在大型應用以及服務端領域的語言出現的可能性不大,畢竟有那麼多的應用都是用java構建的。

 Python作為一門膠水語言(官方的說法),它的目的也不是幹掉java,NodeJs也一樣,不可能成為java的替代者。各種語言都有其適用的領域。

再說一下你覺得java的語法糖問題,java是要保證向前相容的,這個歷史包袱不容忽視,更新速度慢也可以理解,所有語法糖好的語言,都是比較年輕的,所謂年輕氣盛,但是java老當益壯。 總結一下,java正值壯年,還會堅挺,至於在學一門語言,我建議看看python。



Q:3.老師,請問框架重要還是java核心類庫重要?

moocer講師:怎麼說呢,核心類庫是基礎,框架是擴充套件,不能對比重要性,因為它們所處的技術層級不一樣。都得學習、都得了解。



Q:4.學java感覺還是可以的,基本的的東西都掌握了,但是就是沒有一點技術的成長,請問老師,怎麼才可以在java上面有技術的成長呢?成長的路線是什麼呢?也學過安卓總感覺java什麼都可以弄,除了底層以外。有什麼好的建議麼老師?

moocer講師:java擅長的就是服務端開發。如果你覺得基本的東西都掌握了,那麼嘗試回答下:

hashmap的原理是什麼?

jdk8裡hashmap的實現和之前有什麼不同?

concurrenthashmap的原理又是什麼?

jdk的concurrent包瞭解嗎?

jvm類載入體系?

jvm記憶體分配規則與垃圾回收機制?

這些都是最基礎的東西。 我的建議就是打牢基礎,然後瞭解目前應用比較廣的框架的原理和實現以及不同框架的組合應用於對比分析,這樣才能在用的時候不至於慌。然後就是自己實現了。



Q:5.老師,能說一下現在學java還是php好啊,現在jsp需求好少啊,現在學java學到一半了,很困惑啊,到底哪個好!!!

moocer講師:語言無所謂好壞,只有適用場景不同。 java適合服務端開發,php適合前端的快速迭代。jsp的需求確實少了,但servlet必不可少,兩者本質是一樣的。到底哪個好,要看你未來想往哪方面發展了。



Q:6.JAVA學習了很長一段時間了,基礎已經掌握,但是該如何進階呢?一位合格的JAVA架構師應該掌握那些技能?望老師解惑。

moocer講師:簡單的說,進階需要的是從使用到原理的過程,進階就是要了解原理(jdk原理、框架原理),然後做到靈活應用。

看書建議看一些講原理、講思想的說, 一個合格的java架構師,要掌握各種常用框架的原理、應用場景、以及在不同場景下的二次處理,特殊場景下還需要自己開發特定的框架。

還有就是要結合業務進行技術選型,需要經驗的積累。 羅馬不是一日建成的,慢慢來,找準自己的方向,不要侷限於使用,要多看、多瞭解原理。 比如說:jvm的原理是不是瞭解了?Spring的原始碼看了多少?如果自己搞一個該怎麼做?



Q:7.老師好,請教架構應該具備哪些基礎條件,一般從初級開始幾年可以達到架構的要求?

moocer講師:沒有明確的基礎條件,架構範圍也比較大。我覺得需要以下幾點吧: 1.jdk要熟悉,核心類庫原理要知道; 2.三方框架要多瞭解,使用方式及原理,這樣才能夠在選擇時能夠客觀的對比; 3.實踐,不斷的實踐,在實踐中積累經驗。 至於需要幾年,這個不好說,有人3、5年、有人7、8年,有人可能一直都到不了,還看個人的努力程度和興趣所在吧。



Q:8.請問近三年Java Web工作經驗,接觸的一直是些中小型,併發小於500左右的專案,向高階java轉型應該具體怎麼做?如此工作經驗,若是打算面一些大型網際網路公司會不會太有挑戰。目前本人在研Mybatis原始碼、java設計模式、以及在讀《深入理解Java虛擬機器》,老師可否有些其他方面實際點的建議。

moocer講師:當你看完這些東西的原理、原始碼後,能不能自己寫一個呢?這也能夠檢驗你是否真的理解了。 

有一句話已經在回答其他同學問題的時候重複說過多次了,那就是學習之後要應用,不斷的積累實踐經驗。 比如說:hashmap的原理,利用這個原理我們可以在實際工作中解決哪些問題?concurrenthashmap的原理,同樣應用這個我們能解決哪些實際的問題。



Q:9.請問作為Java開發人員,想要成長為架構師,是不是必須精通運維體系知識和技能?比如叢集、高可用、分散式等,還有各種中介軟體的使用,個人感覺架構師對運維的要求更高,對程式設計的要求稍微低點!您覺得呢,希望老師能談談!

moocer講師:java的架構大體上分類兩類,一類是應用類的,比如服務化、中介軟體等等;另一類是資料分析類的,比如hadoop、spark等等。看你嚮往哪個方向發展,側重要發展的那方面技術就可以了。

架構師是在實踐中成長起來的,不是培訓出來的,要多實踐、多應用、多多積累經驗。培訓只能解決技術點的問題,架構師除了技術外,還要有宏觀的把控能力。不論是運維開始開發,要想成為合格的架構師,程式設計能力都不能低。



Q:10. 老師好, 我的新電商專案中需要用到搜尋引擎,但以前並未接觸過。在solr和elasticsearch之間應該選擇哪個,它們之間各有什麼優缺點,哪個可以更快速地上手。另外,Redis快取和搜尋引擎在專案中的功能定位,應怎麼劃分?有了搜尋引擎,是否就無需將商品快取到Redis中了?

moocer講師:1.es在介面友好性以及叢集部署上要好於solr,兩者都是基於lucence的,本質沒有區別; 

2.快取是為了快速找到資料,降低對資料庫壓力的;

 3.有了搜尋引擎,快取仍然也是需要的,而且必不可少。舉個例子來說,唯品會沒有搜尋功能,但是快取是一定有的。


講師介紹

擁有多年電商經驗的Java工程師,曾混跡於企業應用領域,後轉戰電商,現奮戰於網際網路教育行業。在服務端架構、團隊管理等方面有著自己的感悟,同時也是慕課網明星講師,學員超過30萬。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3705/viewspace-2798859/,如需轉載,請註明出處,否則將追究法律責任。

相關文章