JavaRush /Java Blog /Random-TW /訣竅,或如何在沒有 Java 經驗的情況下找到中級 Java 開發人員的工作
Юрий
等級 30
Москва

訣竅,或如何在沒有 Java 經驗的情況下找到中級 Java 開發人員的工作

在 Random-TW 群組發布
向所有 Java 學生和專業人士致以問候。也許我的故事將成為一些人如何做的例子,而其他人則可以作為如何不做的例子。現在是2021年10月19日,今天我在一家大公司擔任Java中階開發人員完成了試用期(3個月)。我以前沒有 Java 開發經驗。直到2020年6月4日,我對Java一無所知。當我被錄用為 Javaist 時,我承諾如果我通過了試用期,我會寫一個成功的故事。本文將分為兩個邏輯部分:職業背景(第1-5 章,與 Java 無關),但您可以從中獲得有關您職業的知識)。成為 Javaist(第 6-9 章 - 學習 Java、面試、找工作、第一次真正的經驗)。<h3>第 1 章. 經濟學家</h3>為了了解我進入 JavaRush 時的知識水平,我需要對自己進行自我介紹。2013 年 11 月,上午 8 點。我坐在 Taganka 的一家咖啡店裡,重複 SQL 指令。一小時後,我將接受銀行財務部首席經濟學家職位的面試。這是我唯一受邀參加的面試,我需要百分之百付出。為了他,我從聖彼得堡飛來,住在親戚的廚房裡,以免花掉我本來就微薄的積蓄。30分鐘過去了,火腿起司煎餅吃完了,我們要向我們所珍惜的夢想邁進了。但一切都在震動。如果我面試失敗怎麼辦?好吧,事實並非如此。我去銀行,拿到通行證,然後在會議室等待受訪者。時間流逝了很長一段時間。進來的是一名35歲左右的男性和一名同年齡的女性。他們自我介紹並要求你介紹一下自己:“尤里,很高興。” 我今年21歲,在聖彼得堡的一所大學兼職學習,在銀行當了3個月的出納員。我意識到這不是我學習的目的,我開始關注就業市場,發現在莫斯科經濟學家有 SQL 作為要求。所以我研究了它,參加了課程(MS SQL 管理 - 這就是我所擁有的,這就是我所追求的),然後你打電話給我。他們講公司,講他們做什麼(大部分話都聽不懂),然後讓你去考試。測驗有 3 個關於 SQL 的問題: 1. 給定一個表,取出 id = 10 的所有記錄。2. 給定兩個表,連接它們並顯示每個表的一列。3. 將部門分組並給予每個部門的員工人數。我非常羞愧地寫下這些請求。接下來是我對這份工作的期望的討論。他們告訴我那句神奇的話:“感謝您接受採訪,我們會給您回電。” 一週過去了,他們邀請我去和他們一起工作。欣快、震驚、喜悅!還有多少錢:手上有7萬盧布!是的,我會變得富有!我來到莫斯科,安頓下來,在市中心租了一個房間。第一天是欣快的。10天后,我開始意識到:我從哪裡來?我什麼都不懂!我每個月必須為整個銀行準備管理報告。當然,對我來說這和對你來說是一樣的,親愛的讀者。我認為銀行間信貸、掉期、費用分配、成本等術語都是拉丁文拼字。在這個過程中,我必須掌握問題的技術方面:MS Access(所有報告都是透過VBA 完成的)、MS SQL(作為新存儲,而不是Access)、Oracle(我最初將其稱為Oracle,導致歇斯底里)程式設計師之間)。突然我開始明白技術面對我來說更有趣。有人嘗試創建複雜的查詢(結果,資料庫掛在我的腳本中,憤怒的管理員四處尋找是誰幹的)。但主要工作是財務,這讓我很生氣。一個半月後,我正在寫一封辭職信,因為我無法給出任何結果(老實說,他們並沒有真正期望我得到任何結果)。財務部負責人把它撕碎並說:“別費心了。” 一個月後,我再次寫了一份聲明,對如此厚顏無恥感到震驚的部門負責人(後來成為銀行董事長)極其困惑地簽了字:這傢伙今年21歲,沒有更高學歷。教育,他們既得到了薪水,也得到了信任,但他卻表現得如此。被解僱的原因還有兩個因素:一是老闆的傲慢,讓我無法冷靜地應付;二是椅子不舒服,讓我的背開始疼痛。這非常有趣,但動機如下。當我辭職時,我想現在我會變得更舒服。但它不在那裡。<h3>第二章。70次訪談</h3>離開銀行,我深深吸了一口氣。“我這樣安排,大家都會驚呆的。” 採訪安排好了,薪水也高了,似乎也不用再去處理報道了。有 4 次面試,沒有人錄用我。5、6 次面試──同樣的事情。我和一個女孩住在出租屋裡,她找到了工作,可以彌補我收入的不足。但我還是不知道我要多久沒有收入。我參加了面試(分析師職位空缺),他們主要問的是 SQL 和 VBA。對於不知道的人來說,VBA 是 Excel、Access 和其他 MS Office 產品中的一種程式語言。進行了 10 次訪談——沒有任何結果。20、30 - 什麼都沒有。每個人都因缺乏經驗和高等教育而感到尷尬(這對我來說似乎是一件小事)。40 次採訪,絕望開始蔓延。在55-60次面試期間我開始研究1C。這個已經成為妻子的女孩要求前往聖彼得堡,因為至少她在那裡有自己的住房。而在第70次面試時,我被邀請到聖彼得堡工業區的一家小公司擔任1C資料庫管理員(有成為1C開發人員的前景),報酬為5萬盧布。現在這就是職業發展!<h3>第三章.傳奇歸來</h3>在灰色的聖彼得堡工業區,看著一輛小巴(企業交通工具)的窗外,行駛了一個小時四十一路,我意識到我無法就這樣生活。當第一次接觸自寫系統時,對1C的興趣就消失了。需要一個計劃。他也成熟了:晚上他學習 SQL,同時監控著名的工作網站。解僱的最後觸發因素是這樣的情況:儘管機票已經買好了,但總經理不想讓我去規劃好的假期。假期結束後,我寫了一份申請,並再次發送了莫斯科職缺的履歷。莫斯科時間,我再次獲得了一家大型銀行的面試機會。我再次來到親戚的廚房接受訪問。當hr寫下地址時,我簡直不敢相信自己的眼睛——這就是我夢想工作的大樓(當我最後一次在莫斯科居住時,它只是在建設中)。該職位被稱為首席資訊系統支援專家。我去辦公室 迎接我的是一位 30 歲左右、穿著時尚夾克和牛仔褲的男人。我們登上了15樓,當我看到城市全景時,我驚呆了:所有史達林主義的高層建築都清晰可見。整個建築風格非常現代:老闆辦公室裡有酒櫃、時尚的水族箱、黑白風格的裸女畫。這引起了“哇”的效果。與老闆的談話並不像平常那​​樣:他花了大約 40 分鐘的時間談論銀行發生的事情。我什麼也聽不懂,但還是點了點頭。當我問:你什麼時候開始問我?他沒有註意。再次,對於我的問題“技術面試什麼時候?”,答案是“是的,無論如何我們都會僱用你,如果你不能處理,我們會解僱你。” 笑著說道,我才發現,一切,夢想又成真了!<h3>第 4 章:在 IT 領域找到自己</h3>當我到達新的地方時,我明白了他們為什麼立即僱用我。我來描述一個部門員工的典型畫像:平均年齡55歲,莫斯科人,莫斯科國立大學學歷,蘇聯時期在國防研究所工作,90年代轉型到銀行業,在這裡工作了20年年。一半是男性,一半是女性。它們與周圍的室內裝飾完全不協調。我們參與維護會計報告程序。當然,這都是 90 年代末 2000 年代初開發人員編寫的古老 VBA 和 SQL 腳本。那是 2015 年,自動化是透過 MS Access 實現的。也就是說,它看起來非常糟糕。但有一個細微差別——他們提供了客戶(會計)想要的東西。並且準時並以所需的形式。只有他們知道它是如何運作的,甚至奧諾托爾也無法想像他們的發展有多複雜。任何IT經理,即使有最大的願望,也不能解僱他們-總會計師去銀行董事會,為任何為會計部門利益服務的員工辯護。經理要我扮演特洛伊木馬的角色:我研究他們所有的發展,然後將資料遷移到新系統。那麼老員工就可以被解僱,我就可以調到新系統。首先,我深入研究了他們的流程並查看了 VBA 程式碼。漸漸地我學會了閱讀VBA程式碼。一年後,我已經知道如何編寫程式碼了。典型任務:給定一個資料庫,從中提取數據,並將其以某種格式放入Excel中。現在,正如 Zadornov 所說,深吸一口氣:該部門的所有報告(其中 50 份每日報告,20 份月度報告!)都是手動運行的!Karl,你知道嗎,人們每天都會用手中的 50 份報告將日期改為 +1!他們坐下來,等待一份報告的結果 1-10 分鐘,然後啟動另一份報告!而且,日報必須在特定的時間推出,千萬別遲到!他們不僅製作報告,而且在不使用變數的情況下手動運行資料庫中的程式!也就是說,他們不會使用 @startDate = '2015-01-01' 變量,而是在 20 個地方手動更改相同的日期!看完這些我開始學習Python,與 VBA、SQL 和任務排程器一起,我在兩年內實現了這一切的自動化。不僅自動化,而且還加速了許多報告:如果您放棄MS Access + VBA而轉而使用MS SQL + TSQL,您可以實現生產力的倍增。我的記錄是加快報告創建速度100一次!但我的同事們對這種自動化非常不滿意,所以我被宣佈為人民的敵人(他們想安靜地坐著直到退休)。時間過去了,資料遷移成功了。經理很看重我:如果我剛入職的時候早上8點來上班,那麼過了一段時間就可以隨時來,一直到12:00,工資和職位不斷增加,週末加班費更多比雙倍的金額,上班遲到搭計程車到家,行動通訊,總之──菁英!<h3>第 5 章金籠</h3>突然,3.5 年後,新的 IT 管理階層來了,並表示不再需要我將資料移轉到的系統。但舊系統仍將保留。我的經理正在職業階梯上晉升,並邀請我轉到一個更進步的部門。在一次與進步部門負責人的會面中,我了解到這個部門的技術堆疊對我來說是陌生的:Oracle、.net、C#、Linux等+對潛在老闆的反感。我告訴我的經理我對進步部門不感興趣,他很容易就忘記我了。然後問題變成了:下一步該怎麼做?收入已經不錯了,Junior dev不會用這個薪水僱用我。在思考我的技能之後,我意識到我需要進入機器學習領域。一切都很有趣,直到第一次接觸數理統計,這只引起了研究所的厭惡。就這樣,昏迷了六個月!時間流逝,有一天,在散步時,我想到了一個可以在莫斯科地圖上顯示好餐廳的網站。開始學習HTML、CSS、JS。我花了三個月的時間學習;我沒有創建一個成熟網站的知識,但我可以在工作中練習。一個想法誕生了:為會計師創建一個門戶,以便他們可以使用按鈕為自己下載任何報告。創建入口網站花了 2 個月的時間,SPA(單頁應用程式)Web 應用程式在帶有 Node.js 後端的 React js 中誕生。回拉 SQL 腳本(我不知道像 Hibernate 這樣的框架),啟動 Python 並在 MongoDb 中儲存附加資訊(例如,有關網站使用者的資訊)。從外觀上看,該網站看起來非常不錯(bootstrap 4,時尚的動畫)。我仍然為這個項目感到自豪。但當我向銀行的網路開發人員展示我的程式碼時,他們驚呆了。不是你自己的一類!只有特色,只有硬核!他們稱讚了我,但說我還需要大量學習才能成為中級全端開發人員。我試著找一份分析師的工作,但沒有特別優惠。我想:我不在場,我就貼出我的全端開發者履歷表吧。電話打來了,但在面試過程中,我像膠合板一樣飛過巴黎:例如,我不知道 HashMap、HashSet 是什麼以及為什麼需要它們。對 OOP、程式模式、演算法、測試、Git 一無所知。我想起了因對基本事物的無知而被遺忘已久的羞恥感。突然,一家金融公司收到了客戶分析主管的職位邀約。距離該國因大流行而關閉的一周。我在一家金融公司找到了一份工作,但有雙重的感覺:一方面是高薪讓人溫暖,另一方面技術的發展卻微乎其微。設備安裝完畢並引入遠端工作後一周過去了。由於金融部門不實行非工作日,所以我們照常工作。事實證明,新老闆是一個非常瘋狂的人:他主動提出要爬取 Facebook,創建自己的神經網路來研究客戶(員工中沒有資料科學家)。新進員工可以在一週內學習Python等等,無薪休假成為常態。辭職是愚蠢的:大流行期間你會在哪裡找到工作?但兩個月後,公司宣布不再發放季度獎金,耐心就耗盡了。細微之處在於,我們約定薪資的時候,招募的時候,hr說薪資分為底薪(60%)和季度獎金(40%),都是一直發的。很明顯,我們做了錯誤的選擇,我們需要開始尋找新工作。<h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 另一方面,技術方面的發展將微乎其微。設備安裝完畢並引入遠端工作後一周過去了。由於金融部門不實行非工作日,所以我們照常工作。事實證明,新老闆是一個非常瘋狂的人:他主動提出要爬取 Facebook,創建自己的神經網路來研究客戶(員工中沒有資料科學家)。新進員工可以在一週內學習Python等等,無薪休假成為常態。辭職是愚蠢的:大流行期間你會在哪裡找到工作?但兩個月後,公司宣布不再發放季度獎金,耐心就耗盡了。細微之處在於,我們約定薪資的時候,招募的時候,hr說薪資分為底薪(60%)和季度獎金(40%),都是一直發的。很明顯,我們做了錯誤的選擇,我們需要開始尋找新工作。<h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 另一方面,技術方面的發展將微乎其微。設備安裝完畢並引入遠端工作後一周過去了。由於金融部門不實行非工作日,所以我們照常工作。事實證明,新老闆是一個非常瘋狂的人:他主動提出要爬取 Facebook,創建自己的神經網路來研究客戶(員工中沒有資料科學家)。新進員工可以在一週內學習Python等等,無薪休假成為常態。辭職是愚蠢的:大流行期間你會在哪裡找到工作?但兩個月後,公司宣布不再發放季度獎金,耐心就耗盡了。細微之處在於,我們約定薪資的時候,招募的時候,hr說薪資分為底薪(60%)和季度獎金(40%),都是一直發的。很明顯,我們做了錯誤的選擇,我們需要開始尋找新工作。<h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 創建您自己的神經網路來研究客戶(無需資料科學家)。新進員工可以在一週內學習Python等等,無薪休假成為常態。辭職是愚蠢的:大流行期間你會在哪裡找到工作?但兩個月後,公司宣布不再發放季度獎金,耐心就耗盡了。細微之處在於,我們約定薪資的時候,招募的時候,hr說薪資分為底薪(60%)和季度獎金(40%),都是一直發的。很明顯,我們做了錯誤的選擇,我們需要開始尋找新工作。<h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 創建您自己的神經網路來研究客戶(無需資料科學家)。新進員工可以在一週內學習Python等等,無薪休假成為常態。辭職是愚蠢的:大流行期間你會在哪裡找到工作?但兩個月後,公司宣布不再發放季度獎金,耐心就耗盡了。細微之處在於,我們約定薪資的時候,招募的時候,hr說薪資分為底薪(60%)和季度獎金(40%),都是一直發的。很明顯,我們做了錯誤的選擇,我們需要開始尋找新工作。<h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 <h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 <h3>第 6 章. 開始掌握 Java</h3>五月的一個晴朗的一天,我收到了“開發人員”職位空缺的面試邀請。保險業的公司需要一個會開發保險產品的人。需要程式設計經驗,但由於這是公司的「獨特」開發,因此不需要特定的語言。還需要Git等。兩天安排了面試,空閒時間學習了一下Git的基礎。面試的時候問了Python、JS、Git、SQL。我回答了除了「方法重載」概念之外的所有問題,兩週後我就被邀請去工作。原來,該系統早就被公司購買了。用Java(前端和後端)編寫,您可以使用它來創建業務流程,而無需了解程式語言(更準確地說,使用內建的Jelly程式語言)。聽起來不錯,但實際上一切都被扭曲了。抒情題外話:任何科技都有自己的時代和自己的規模。在 2000 年,僅在 Excel 中完成所有報告是很酷的。2021年做同樣的事情不太好。純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立 純 HTML 的公司網站在 1999 年很酷,但在 2021 年就不一樣了。因此,該公司在創建時(2005 年)使用的技術非常酷 - Java 負責伺服器和客戶端部分(所謂的 Java servlet 頁面)。此外,如果您建立新的業務流程(它有自己的 UI),那麼它會儲存在資料庫中,而不是儲存在檔案的程式碼中。要理解這是多麼不方便,想像您在 Intellij idea 中編寫 Java 程式碼,將其儲存到資料庫,然後。當您想要運行程式碼時,程式核心會存取資料庫並從那裡讀取程式碼。因此,您無法完全調試您的應用程式。提示#1:當您想要將程式碼提交到測試平台時,您需要建立SQL скрипт,其中將包含您的程式碼。不愉快,但可以忍受嗎?熱情 #2:資料庫由 200 多個相互關聯的表格組成。這意味著您需要知道將程式碼放入哪些表中,以及需要在其他表中建立哪些實體。輸出是一個長度約為 1000 行的 SQL 腳本。這實在是令人厭惡。謹防遺產。簡而言之,意識到這一切都是用 Java 編寫的,我去了 JavaRush(終於我們到達了該網站的主題!)。2020 年 6 月至 7 月。前 10 個級別很快就關閉了(可能一個月),因為沒有什麼根本性的新內容。然後速度就慢了下來。2020 年 7 月至 10 月。10 至 20 級關閉。2021 年 10 月至 3 月。20-30 級關閉。現在有趣的事情開始了:2021 年 3 月,我開始查看 Java 職缺,發現裡面有很多陌生的單字。某種 Spring、SpringBoot、Hibernate、JUnit。在知名網站上購買了視訊課程後,我剛剛接觸了Spring,我想我現在知道並且可以做所有事情了。之後,我偶然發現了 Grigory Kislin 的 TopJava 課程。在他的網站上你可以嘗試完成一個測試任務,如果成功,你就可以參加該課程。在本課程中,您將創建一個成熟的 Web 應用程序,甚至將其發佈到 Internet 上。對於這筆錢,他們會給你一個審查(由更有經驗的程式設計師對程式碼進行審查),提供回饋並在出現問題時給你提示。我做完作業3就放棄了。原因很簡單:他們對你要求很多,但他們不給你任何知識。作業要求非常混亂。資訊的呈現極不一致。在我看來,來自其他類似語言的相當有經驗的開發人員需要本課程。因為在他的課程中實際上沒有解釋他要求使用的技術。您還需要熟悉 Git(所有內容都會發送到您的個人儲存庫)。2021 年 4 月底,我發布了一份 Java 開發人員的簡歷(期望的薪資為中+水平),其中我指出在我的上一份工作中我是用 Java 編程的(我撒了謊)。同一天,銀行收到 Java 開發人員職位的申請。<h3>第 7 章 Java 面試與技能磨練</h3>那麼,計畫是什麼?我需要得到一份不錯的薪水,因為我已經習慣了靠可觀的收入+貸款過活。因此,初級職位不適合我。你需要獲得一個中間位置。但誰會僱用沒有經驗的我呢?這個決定是自然而然的:我的工作記錄顯示,我在之前的職位上擔任過一年開發人員,並在 IT 部門擔任 4 年專家。所以,我會說我已經用 Java 進行了一年的開發。如果他們詢問新產品,我會說舊的 Java (7) 在那裡並且不支援任何東西。在第一次(遠距)面試之前,我很緊張。我沒有經驗,知識也很少,我要的錢很多。我想:沒關係,負面的經驗也是經驗。我透過 Skype 聯繫,我將接受兩位部門主管的面試。這讓我更加害怕。問題開始:OOP、HashMap 設備、流、資料結構,什麼是Spring、Hibernate、AOP。如果說在 Spring 之前它或多或少是可以忍受的,那麼在 Spring 時它就完全崩潰了。人們問我:如果你真的不了解 Spring,你是如何發展它的?我:我複製了它,貼上了它,它有效了,謝謝。這個答案讓他們覺得好笑。然後他們又問了關於SQL的問題,我在其中如魚得水。接下來是 Git 和一個關於 rebase、cherry-pick 的問題(我也不知道),最後是關於 JS 的問題,因為它已經在我的履歷中列出了。那裡也完全失敗了,因為他們詢問了 OOP JS。根據面試結果,很明顯我的知識不符合要求,因此我不符合這個職缺的資格。晚上,人力資源部寫道,我的候選資格已獲得批准,他們準備打電話給我。事實上,我在麥當勞被一個漢堡噎住了。我很高興,但三天後人力資源部報告說他們選擇了另一位候選人。在我的經驗中,這是第一次,要約被撤回。在第一次 Java 面試之後,我加強了自己的能力:我在一個著名的視訊課程銷售網站上學習了 Colt Steele 的 Git 課程(並且完全完成了!)。這改變了我對 Git 的看法。接下來,我學習了 Zaur Tregulov 的關於 Spring+Hibernate 的(精彩的)課程。訓練方案:我像在影片中一樣觀看,我在我的電腦上做同樣的事情,但我對變數和類別的命名不同,以免愚蠢地複製別人的程式碼。我將所有工作上傳到我的 Github(從而練習 Git)。那是五月中旬,hr開始打電話來。我們開始一一安排訪談。許多邀請都被取消了,原因如下:HR沒有閱讀我的履歷描述,就邀請我擔任高階職位。另外值得一提的是一個單獨的 HR 階層:那些將 Java 與 JavaScript 混淆的人。這就是為什麼我在履歷的標題中寫下「中級 Java 開發人員」。<h3>第8章典型問題清單以及面試如何進行</h3>我開始去面試,中間逐漸形成了一些基本問題。要求:0. OOP - 定義,談談OOP的每一個原理(+舉一個現實生活中的例子)。1. Equals 和 hashcode - 它們之間的契約(關係)是什麼?2. HashMap - 如何了解一個物件將進入哪個桶,什麼是碰撞,資料在HashMap中儲存在什麼資料結構中,標準大小,桶的數量如何增加。3. Stream-有哪些類型的操作,它們之間有什麼區別,每種類型的操作都給出一個例子。4. 字串池、整數池-這是什麼?5.堆、棧-是什麼,有什麼差別?6. Runnable、Thread、Future 之間的差異。7. 易失性、原子性。8. 固體、親吻、乾燥-定義、現實生活中的例子。9. Java 中的存取修飾符。10.抽象類別和介面有什麼差別。接口可以私有嗎?11. 功能介面。12. 列出所有物件方法並說明為什麼需要它們。克隆方法的特點。13.什麼是序列化和反序列化。14. 嘗試捕捉資源 - 描述它是什麼,使用 Closeable 介面告訴它。15. Final、finally、finalize 之間的差異?16. 超載,方法重寫就是差別。17. 為什麼 String 是不可變的,請告訴我們有關 StringBuilder 和 StringBuffer 的資訊。18.什麼是時間複雜度O(1),記憶體複雜度。19. 資料結構:談論map、set、queue、deque、list及其在Java中的實作(treeMap、hashSet、hashMap、arrayList、linkedList、priorityQueue、blockingQueue),描述插入的複雜性(最差、平均、最佳),搜索,刪除每個結構中的元素。20.Java中的原始資料類型。為什麼需要它們中的每一個?21. 錯誤的類型。檢查和非檢查異常。22.什麼是JVM、JRE、JDK?23. 您與哪些收藏家合作過?Maven - 建置生命週期。24. Spring - Ioc定義、Di、Bean生命週期、上下文、@Bean註解、@Configuration、@Autowired、@Advice、@Aspect、@Service、@Repository。25. 泛型 - 定義什麼是下限和上限?26.程式模式-至少是Singleton(願意解釋為什麼這有時是一種反模式)+ Builder、Adapter、Factory、Decorator、Proxt。理想的:26. 測試 - 測試的類型,使用哪些函式庫(JUnit)。什麼是模擬、暗殺、間諜?27. Spring boot - 為什麼需要它,準備在線製作SpringBoot應用程式。28. Hibernate - 為什麼需要它,實體,連接列,延遲加載與急切加載,緩存級別(硬)。29. Spring Rest - 為什麼需要它,如何製作@post、@get端點。如何讀取參數/請求體?如何以json格式提交?30. 資料結構-樹,它們的型別。31. 演算法——排序的類型。除了 Java,他們可能會問: 1.(必需!)Git - 為什麼需要它,操作合併、變基、cherry-pick、push、pull、commit、log、checkout、branch、reset、revert、refresh。2.SQL - 寫查詢的能力:將兩個表連接成一個(內連接、左連接)。3. 資料庫 - 3 個範式、索引(為什麼需要它們、類型)、主鍵、外鍵 典型的遠端面試如何進行:hr 發送連結到 Zoom(Skype、Google Meeting)。當你連結的某個時間,那裡有 1 到 3 個人(技術專家、老闆、人力資源)。在特別頑固的情況下,最多可達 8 人。首先你介紹一下你自己,然後是技術部分,然後是一個關於空缺和告別的故事(他們說他們什麼時候會聯繫你或下一步是什麼)。在告別期間,您可以詢問有關知識的回饋。我問:“你能告訴我,在我回答的過程中,你的耳朵哪裡痛嗎?” 很多人都會回應,但要做好被拒絕的準備。面試時他們會評估: 1. 你表達想法的能力和俄語知識(我知道一個候選人因俄語知識不佳而被拒絕的案例)。2. 以前的經驗(他們可能會細緻地詢問你上一份工作是做什麼的)。3. 當你受到壓力時有足夠的反應(有一次採訪時人們開始不尊重地說話:無視我的回答,試圖灌輸他們的立場等等。我在開始後15分鐘結束了採訪,他們:這是一次壓力很大的面試!) 4. 你的知識水平。我將在這裡詳細介紹。了解主題的定義僅佔您期望的 10%。有必要了解它是如何工作的(至少在頂層)。願意解釋在開發的哪個階段您將選擇這個或那個解決方案。這比定義的準確性重要得多。我將透過兩個例子來分析這篇論文。第一個例子:在一次採訪中,我被問到 HashMap,我給了定義:“這是一種儲存鍵和值捆綁的資料結構。” 然後面試官問:和TreeMap有什麼差別?答:不同的是HashMap對key進行了哈希處理,由於哈希處理,訪問速度很快。面試官立刻要求告訴我們HashMap的內部結構,同時問了關於hashCode和equals的問題。它會更深入,直到你對答案滿意或停止。經過兩個月的面試和 hexlet 上的資料結構課程後,我才學會正確回答 HashMap。第二個例子:SOLID 概念。他們要求我給出一個我已經記住的定義。但一旦涉及現實生活中的例子,問題就開始了。 Внимание!如果你不知道,那就不要發明它,而是這樣說:我不知道這個主題,但我可以假設它是這樣運作的。當一個人說著異端邪說,就好像他理解這個主題一樣,許多技術專家都會被激怒。5. 您在工作討論上的熱情程度。您應該對此職位感興趣並提出有關職位空缺的問題(不僅僅是虛構的問題)。6. 有時幽默(僅針對主題)和共同興趣可以幫助您溝通。隨意談談你的嗜好;也許受訪者也喜歡 Dota/足球/幻想。這對你作為候選人來說是一個優勢。我知道一些情況,利益共同體對面試官糟糕的技術訓練視而不見(你是個正常人,我們會訓練你)。<h3>第九章找工作,烈火的洗禮</h3>面試從四月下旬到七月中旬進行。第一次採訪很尷尬,但逐漸情況改善到可以接受的程度。研究常見問題和回饋讓他們自己感受到。前25次面試均未成功。此後,絕望的時刻開始了。感受:如果他們不以那份薪水僱用我怎麼辦?突然事情開始爆發:一週內,三家公司提交了提案。我選擇了一家我了解具體情況的公司,而且還有不錯的薪水和遠距工作的機會。在面試過程中,我被問到了大約 30 個有關 Java 核心和 Spring 的問題,我回答正確了 97%。之後與上級部門進行了溝通,1.5週後我找到了他們的工作。首先,當您從事任何工作時,您開始存取所有必要的系統並安裝您需要的工具。花了一周半的時間,我接到了第一個任務:改變教室裡的靜態文字。當我打開專案時,我感覺很噁心:一個專案中有很多模組,很多類,測試等等。此時我迷失了方向,但第二位開發人員幫助了我並讓我加快了速度。該錯誤在 10 分鐘內修復,發佈在 Git 中,發出拉取請求(請求合併兩個分支,其他開發人員在其中檢查您的程式碼),然後合併到主分支中。事實證明,一切都沒有那麼困難。直到第一個成熟的任務...在計劃接下來兩週的任務時,他們告訴我:你將與位於 OpenShift 上的另一個系統整合。這就是事情變得真正可怕的地方:OpenShift 是一個完整的技術叢集:Docker、Kubernetes、Linux 等等。冷汗從我的背上流下來:好吧,我是賈維斯特人。會議結束後,我立即給開發人員打電話,他向我保證:這個系統的適配器已經編寫好了,將某些類別導入到我的專案中就足夠了,之後我就可以安全地使用整合了。這又很有趣,直到開發人員展示了一個典型的整合:我看到為類似的整合創建了 20 多個類別。此外,以前未曾見過的註解 @Value、@Builder、@NoArgsConstructor、@Getter 也被注意到 @Sl4f - 原來是 Lombook 專案(在網路上閱讀)。當開發人員向我解釋如何做到這一點時,我試著寫下所有類別的聯繫,但我腦子裡什麼也沒記住。最尷尬的時刻是對Intellij Idea缺乏了解:如何全域搜尋項目、程式碼重構等。接下這個任務後,我明白了為什麼需要OOP:這麼大量的程式碼,需要將其劃分為類別;不在類外部使用的方法必須聲明為私有,以免意外在另一個類中運行它們,等等。通過與另一個集成類比地編寫我的集成,我了解到 CheckStyle 的存在 - 一個檢查樣式的特殊插件的程式碼,並且在修復錯誤(例如,多餘的空格、大寫字母的變數名稱、變數名稱太短)之前,您將無法編譯專案。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。我試著寫下所有類的聯繫,但我腦子裡什麼都沒有記下來。最尷尬的時刻是對Intellij Idea缺乏了解:如何全域搜尋項目、程式碼重構等。接下這個任務後,我明白了為什麼需要OOP:這麼大量的程式碼,需要將其劃分為類別;不在類外部使用的方法必須聲明為私有,以免意外在另一個類中運行它們,等等。通過與另一個集成類比地編寫我的集成,我了解到 CheckStyle 的存在 - 一個檢查樣式的特殊插件的程式碼,並且在修復錯誤(例如,多餘的空格、大寫字母的變數名稱、變數名稱太短)之前,您將無法編譯專案。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。我試著寫下所有類的聯繫,但我腦子裡什麼都沒有記下來。最尷尬的時刻是對Intellij Idea缺乏了解:如何全域搜尋項目、程式碼重構等。接下這個任務後,我明白了為什麼需要OOP:這麼大量的程式碼,需要將其劃分為類別;不在類外部使用的方法必須聲明為私有,以免意外在另一個類中運行它們,等等。通過與另一個集成類比地編寫我的集成,我了解到 CheckStyle 的存在 - 一個檢查樣式的特殊插件的程式碼,並且在修復錯誤(例如,多餘的空格、大寫字母的變數名稱、變數名稱太短)之前,您將無法編譯專案。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。對於如此大量的程式碼,需要將其劃分為類別;不在類外部使用的方法必須聲明為私有,以免意外在另一個類中運行它們,等等。通過與另一個集成類比地編寫我的集成,我了解到 CheckStyle 的存在 - 一個檢查樣式的特殊插件的程式碼,並且在修復錯誤(例如,多餘的空格、大寫字母的變數名稱、變數名稱太短)之前,您將無法編譯專案。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。對於如此大量的程式碼,需要將其劃分為類別;不在類外部使用的方法必須聲明為私有,以免意外在另一個類中運行它們,等等。通過與另一個集成類比地編寫我的集成,我了解到 CheckStyle 的存在 - 一個檢查樣式的特殊插件的程式碼,並且在修復錯誤(例如,多餘的空格、大寫字母的變數名稱、變數名稱太短)之前,您將無法編譯專案。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。變數名太短)。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。變數名太短)。在擊敗 CheckStyle 後,我將程式碼發送給高級開發人員進行審查,並在一周內糾正了我的錯誤。總的來說,我很幸運,在我的團隊中,我與第二個開發人員關係很好,他解釋了很多事情。設備使用一個月後,我的第一次整合在整合功能展位上啟動(測試了所有應用程式一起的工作),並且一切正常!勝利!下一個任務是建立一個類,允許透過 json 中的鍵隱藏資料。例如:有json {text:"JavaRush"} -> 處理 -> {text:"****Rush"}。這裡有兩個複雜的情況:可能存在嵌套{text:{mytext:"JavaRush"}},更令人不愉快的是數組內部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext : "JavaRush "} ] } (當然你需要隱藏所有text.mytext)。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。解決這個問題是相當困難的,但我做到了!第二個開發人員在這裡說:用測試來覆蓋這個開發。眼中滿是驚愕。這就是我在實戰中認識JUnit庫的方式。單元測試的本質:你有輸入數據,將其傳遞到方法中,並將接收到的數據與正確的結果進行比較(創建具有正確結果的變數)。我為我的庫編寫了 11 個案例,在這些案例中我檢查了應用程式沒有因 NullPointException 崩潰,並且它正確地隱藏了任何類型嵌套的資料。完成此任務後,我得到了一個新的集成,其特點如下:我必須從外部庫導出 Spring Bean。至此,我成為了 Stack OverFlow 網站的常客。有一次連官方 Spring 開發者也做出了回應。實施此整合後,我的試用期就結束了。老闆祝賀我通過了試用期,我就開始寫這篇文章。總共花了8個小時寫這篇文章)感謝您的關注,希望這篇文章對您有用。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION