1. 程式人生 > >2018.05.31 自學日記三:口出狂言還不知道這是幹什麼的三年小目標?——架構師?

2018.05.31 自學日記三:口出狂言還不知道這是幹什麼的三年小目標?——架構師?

昨晚看51job上面神州(我的筆記本就是神州的)招Java實習,但是要求本科以上,點進去看 ̄  ̄)σ下面有個網址和一個對應的編碼第一步要去做測試題…… 通過才有面試資格,我居然閒的無聊點去做了,每10題10分鐘各種型別的題目,主要是一些找規律,和一些算數題大多是考驗邏輯思維能力,還有給你一段文字選擇下面表達的中心論點觀點是什麼,感覺還好,我全部口口算的計算題吃虧了,在床上躺著沒題一分鐘時限,還有個很變態的給你幾張圖猜下一張圖……主要是邏輯吧!300個題花了我三小時做完。個人感覺做的還可以。真是日了狗了。老子學歷不夠啊,唉~估計看到大專面試機會都不給。 今天無意間在java吧中看見了一個架構師錄得視屏設計模式很重要

http://tieba.baidu.com/p/4842904842?pn=1. http://tieba.baidu.com/p/4776246470?pid=97632180470&cid=0#97632180470 等有時間了,要好好的學習. 下一步我的計劃,三年內成為一個架構師. 加油.我會成功的.自覺一點.被想著玩了.

老公愛紅牛: 如果培訓生本身學的很好,基礎很牛,別說兩年工作經驗了,就是說5年我也不一定看得出來,但是,如果你的基礎很差,確實是一眼就可以看出來。 2016-9-11 13:08回覆

老公愛紅牛: 有時我也會抽空去面試應聘者,我問的技術問題不會太難,都是很平常的,比如“你是怎麼理解關係資料庫的事務的,平時工作中你們是採用什麼技術來做事務處理的,這種事務處理機制的原理是什麼”,這是我最面試最常見的3發炮彈,這3個問題問出來之後,我立馬可以知道這個應聘者的水平。 2016-9-11 13:10回覆

老公愛紅牛: 如果這三個問題答得很好的話,就算他沒有工作經驗,我也會很欣賞,甚至我覺得沒有工作經驗的人都能理解的這麼好,我會覺得他潛力很棒,以後一定會成為大牛,我反而更加高看他。 2016-9-17 23:16回覆

老公愛紅牛: 回覆 索馬利亞的喜洋洋 :大部分求職者用銀行轉帳來說關係資料庫事務,說著說著他們自己也犯糊塗,被圈進去了,大部分人的大概想法就是出了異常可以回滾,我覺得這種程式碼層面的理解是非常膚淺的,充其量也只是答出了a c i d中的原子性,當然,能夠這樣答出來,我也會給5分(滿分10分)。

老公愛紅牛: 回覆 見知之障 :第二個問題,工作中採用什麼技術來做事務處理,我認為這是一道比較開放的問題,可以從程式碼層面的程式設計式事務處理和類似spring框架提供的宣告式事務處理兩個方面來回答,程式設計式式事務處理就是在程式碼中通過jdbc的connection手動開啟事務和手動提交事務,也可以使自動提交事務。宣告式 2016-9-17 23:22回覆

老公愛紅牛: 回覆 見知之障 :代理的給6分,如果能夠展開說面向切面程式設計和動態代理的,給滿分10分。 舉報 | 2016-9-17 23:28回覆

老公愛紅牛: 回覆 見知之障 :中間被吞了一條,算了,不說了,就是spring的T r a n s a c t i o n M a n a g e r是通過a o p(動 態代+ 理)關於聲+明+式事 +務+處+理的控+制,能夠答出T r a n s a c t i o n Ma n ag er或者a o p或者 動 +態 代 理任何一個的給5分。

一,技術。

架構師需要什麼技術?是不是把java,spring,資料庫,Hibernate,javascript等等一大通技術都學會了就會成為架構師呢?我想大部分人都認為把所有技術都學全了基本上就是一個架構師了,是把?其實這是不對的,舉個例子,我雖然是我們公司的架構師,但是我們公司有很多一線的高階工程師技術水平很牛,甚至有幾個大牛寫的程式碼我都自嘆不如。我經常向他們討教一些技術問題,也可以說是交流吧。 那是不是說技術不好也可以成為架構師呢?顯然不是,架構師的技術一定是要很好的,至少基礎特別紮實,就算有什麼不懂的技術,也會在很快學會並掌握。

我覺得架構師最重要的一個能力就是想象力,說的專業一點就是抽象能力,架構師拿到了一個需求之後,會很快在大腦中展現出一個系統初步的結構圖,怎麼根據需求來劃分模組,不同的模組是在一起部署還是分散式部署,如果分散式部署又要考慮是否是垂直部署還是垂直部署+rpc,mq通訊(這個得根據具體需求中來考慮);根據需求中的系統的使用者群體和使用者訪問系統的方式,需要準備什麼樣的使用者接入方案,pc和app端接入。預估出系統併發數量,然後決定是否採用叢集方案;如果採用了叢集方案,負載均衡方案也要初步給出,是否需要c d n服務,這些都要和運維部門溝通,開會決定;資料庫儲存方案根據資料量的大小是否採用分散式資料庫儲存,我們網際網路企業都是需要分散式儲存的,哪些是核心資料,哪些是不重要的次要資料,核心資料需要強有力的事務支援,特別是分散式事務最終一致性解決方案。如果是次要的(也就是丟失了資料也不會造成使用者損失)資料,可以採用高效能的Nosql儲存方案,比如MongoDB,redis等。當把這些全部梳理清晰了之後。架構師組會把系統的核心模組抽取出來,架構師牽頭,配合一線高階工程師開發,核心模組是不會輕易交給下級開發人員開發的。其他次要模組交給各開發小組,每一個開發小組負責一個子模組(或者分開部署的子系統),各開發小組由小組長牽頭負責,開發小組內部討論方案,基本上就是spring+mybatis那一套了。 二,人格魅力 我前面說了,論技術,我們公司有幾個開發大牛都達得到架構師的技術水平,但是架構師有一定的管理和駕馭職責,所以,架構師的人格顯得特別重要了。 1,人品一定要好。我見過很多技術比較好,但是人品不行的工程師,人品不行主要體現在自大,自滿,高傲,小心眼,心胸狹窄,損人利己。人品很重要,就算有人品不行的人走上了管理崗位,他的處境也不太好,畢竟口碑不好,管理不可能好的起來。我覺得一個架構師需要心胸很豁達,思維很開放,對人對事都要比較包容,不計較,不扯皮,不擺架子。當一個團隊的氣氛非常融洽的時候,團隊工作才會取得成功。 2,溝通能力要好。架構師能力再強,如果不能有效的傳播出去,那也很難。現在不是單兵作戰的時代了,專案越來越大,一個人就算再強,也不可能做出什麼有用的大型軟體,所以,團隊合作和溝通極為重要。我見過很多技術特別牛但是話都說不清楚的人,更別談傳播交流了。程式設計師一般都性格內向,我建議大家如果想往更高的崗位走的話,一定要提高自己的溝通能力,表達能力。多開口談自己的想法,多寫部落格記錄自己的想法。 3,勤奮。現在技術更新很快的,架構師也是要每日學習的,如果一個架構師不學習的話,2,3年他就會被淘汰,架構師的技術體系一定是全面的, 從計算機系統,作業系統,網路通訊,tcp-ip,http,儲存,設計模式,mvc思想,三層或者多層原理,分散式,大資料方案等都要深入瞭解,涉及到這些東西的技術都在飛快的發生改變,我讀大學那會兒關係資料庫是霸主地位,現在出現了很多儲存方案,比如nosql,我剛參加工作的時候,rpc遠端呼叫使用webservice,現在使用dubbo了,前幾年客戶端和伺服器之間的長連線用輪詢機制,現在用websocket了,以前寫一個cs架構軟體採用socket搞,mina搞,現在netty正火呢。不是說架構師水平多高就可以高枕無憂了,架構師和普通開人員一樣,也是時刻不停的學習。 4,思維方式。我見過很多倔強的開發人員,他們認定了一個東西就認死了一個東西,好比說,jsp過時了,Hibernate被mybatis取代了,struts是lj,Ejb被淘汰了等待。其實我很少說這樣的話,因為我覺得,任何一個東西在某一個時刻都有他的價值,不能因為又更新的東西出來我們就去否定曾經大紅大紫的東西,我們需要去體會為什麼他曾經那麼火,而現在被取代,背後的原因是什麼,新的東西提升了什麼,解決了老的東西的什麼問題,我們得去想,只有這樣,我們才會對軟體有更深刻的體會。還有,我希望所有技術人員要對技術持有敬畏的心態,當我們說Ejb是rubbish的時候,你又知道曾經Ejb給全世界軟體體系帶來過多大的貢獻呢,創造了多少多少億的產值呢?敬畏,我們應該對這些東西保持敬畏,去感受它,去欣賞他。

樓主好,我現在剛進入一家公司實習,我想知道怎麼在公司裡去學習,去提高自己的能力?

收起回覆 93樓 2016-09-11 18:21 舉報 |個人企業舉報垃圾資訊舉報 來自iPhone客戶端

老公愛紅牛: 把你們公司現在正在做的專案的需求檔案來過來看,瞭解專案背景,為誰做,專案的目標使用者是誰,專案的用途和目標,解決什麼問題。把需求全部瞭解之後,看一下關於這個專案的架構,模組分割方案。努力去理解每一個模組的用圖和目標,以及模組間的呼叫介面方式。然後再具體到你目前開發的這一點模組上來。 2016-9-11 19:22回覆

老公愛紅牛: 看一下你所負責的這個模組,對外介面有哪一些,哪一些是客戶端的介面,哪一些是其他模組的依賴介面,你這個模組又依賴了哪些模組。你這個模組的領域模型是怎麼樣的,對應的資料庫結構是怎麼樣的,全部摸清楚。 2016-9-11 19:24回覆

老公愛紅牛: 然後對照著需求檔案和詳細設計說明書,把你們這個模組的所有原始碼看一遍,瞭解你這個模組程式碼層實現方式。在看原始碼的過程中把可能需要改進的或者有問題的地方做個記錄,等時機成熟了向小組長或者專案經理報告,提出問題(表現自己嘛)。 2016-9-11 19:27回覆

老公愛紅牛: 要成長麼,依我說的去做,你一定成長的很快。 2016-9-11 19:28回覆

風之i: 回覆 老公愛紅牛 :非常感謝

,就是多看原始碼對吧

老公愛紅牛: 我在學習maven的時候,用的是maven實戰那本書,貌似是國人寫的,寫得很不錯。mybatis的官方手冊已經夠好了。springmvc的話,網上有一個叫做張開濤的人,此人的springmvc系列教程相當棒,我看過,你可以去學一下。 2016-9-11 19:46回覆

38KG進行時: 回覆 老公愛紅牛 :樓主你好,maven我只會用來建工程,導jar包,請問工作中還要用maven來幹嘛啊? 2016-9-19 08:47回覆

老公愛紅牛: 回覆 38KG進行時 :我認為maven很重要!我認為現階段沒有使用maven的新開發的專案不可能是大型的重量級專案,所有還不懂maven的人一定要去學習maven! 2016-9-19 10:28回覆

老公愛紅牛: 回覆 38KG進行時 :maven不僅僅是用來匯入jar包,maven是一個專案構建工具,可以幫你管理,構建,釋出專案,並且是全自動化的,maven的多模組非常強大,強大到讓你嘴巴張成O型,你去看看spring什麼core,web,bean,context等等一大堆子專案,都是用 2016-9-19 10:33回覆

老公愛紅牛: 回覆 38KG進行時 :maven來做的,多模組的測試編譯和釋出打包部署全部一鍵反應堆式完成,爽的不要不要的,再也不用去關心先編譯哪個模組,後編譯哪個模組,誰依賴誰,通通maven自動搞定! 2016-9-19 10:37回覆

老公愛紅牛: 沒有maven的時候,大概是用ant來構建專案,不過ant現在用來越來越少了,maven真的是在各個方面完爆ant,現在幾乎大一點的專案都在用maven!特別是和hudson,svn進行配合做專案持續整合,真的會讓你嘴巴張成一個大寫的O,簡直是不可思議,會顛覆你對專案構建的認識! 2016-9-19 10:41回覆

38KG進行時: 回覆 老公愛紅牛 :嗯嗯,好的,太感謝樓主了。說的好詳細,感覺我平時完全是埋沒了maven

老公愛紅牛: 你這是典型的 小猴子下山思維,看到了玉米丟了芝麻,看到西瓜丟了玉米,看到兔子丟了西瓜,最後兔子也沒抓到,什麼也沒有。你說得程式碼沒什麼技術含量我不贊同,我現在寫了9年程式碼(大學4年),我都覺得我的程式碼寫的還不夠好,我一直都在嘗試提高自己的程式碼質量,學習優秀的原始碼,看一些關於程式碼 舉報 | 2016-9-12 17:55回覆

老公愛紅牛: 優化方面的書,比如《程式碼大全》,《重構》spring原始碼等。所以,你需要沉下來真的當一個優秀的程式設計師,不要漂浮表面,會了一招兩式就感覺會了一切。能夠提高的地方多的是,去把《重構》這本書看看吧,你會有不一樣的感受的。 2016-9-12 17:57回覆

love758458195: 回覆 老公愛紅牛 :我也是一直在努力提高自己的程式碼質量,減少垃圾程式碼,<重構>我會找來看的